]> git.saurik.com Git - bison.git/blobdiff - src/scan-skel.l
* data/glr.c (yyrecoverSyntaxError, yyreturn):
[bison.git] / src / scan-skel.l
index 47b696da1aa5730b2675042af606d3f63eddcfef..c08c330ab0ee36d260a42ce1afdb224145384fa6 100644 (file)
@@ -1,6 +1,6 @@
 /* Scan Bison Skeletons.                                       -*- C -*-
 
 /* Scan Bison Skeletons.                                       -*- C -*-
 
-   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -16,8 +16,8 @@
 
    You should have received a copy of the GNU General Public License
    along with Bison; see the file COPYING.  If not, write to the Free
 
    You should have received a copy of the GNU General Public License
    along with Bison; see the file COPYING.  If not, write to the Free
-   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 %option nodefault noyywrap nounput never-interactive debug
 %option prefix="skel_" outfile="lex.yy.c"
 
 %option nodefault noyywrap nounput never-interactive debug
 %option prefix="skel_" outfile="lex.yy.c"
 #include <error.h>
 #include <quotearg.h>
 
 #include <error.h>
 #include <quotearg.h>
 
+#include "complain.h"
 #include "getargs.h"
 #include "files.h"
 #include "getargs.h"
 #include "files.h"
-
-int skel_lex (void);
+#include "scan-skel.h"
 
 #define QPUTS(String) \
    fputs (quotearg_style (c_quoting_style, (String)), yyout)
 
 #define QPUTS(String) \
    fputs (quotearg_style (c_quoting_style, (String)), yyout)
@@ -58,9 +58,12 @@ int skel_lex (void);
        fatal ("invalid token in skeleton: %s", yytext);
     }
 
        fatal ("invalid token in skeleton: %s", yytext);
     }
 
-  XFREE (outname);
+  if (outname)
+    {
+      free (outname);
+      xfclose (yyout);
+    }
   outname = xstrdup (filename);
   outname = xstrdup (filename);
-  xfclose (yyout);
   yyout = xfopen (outname, "w");
   lineno = 1;
 }
   yyout = xfopen (outname, "w");
   lineno = 1;
 }
@@ -72,22 +75,27 @@ int skel_lex (void);
 "@oline@"  fprintf (yyout, "%d", lineno + 1);
 "@ofile@"  QPUTS (outname);
 "@output_parser_name@" QPUTS (parser_file_name);
 "@oline@"  fprintf (yyout, "%d", lineno + 1);
 "@ofile@"  QPUTS (outname);
 "@output_parser_name@" QPUTS (parser_file_name);
-"@output_header_name@"  QPUTS (spec_defines_file);
+"@output_header_name@" QPUTS (spec_defines_file);
 
   /* This pattern must not match more than the previous @ patterns. */
 @[^{}@\n]* fatal ("invalid @ in skeleton: %s", yytext);
 \n        lineno++; ECHO;
 [^@\n]+           ECHO;
 
 
   /* This pattern must not match more than the previous @ patterns. */
 @[^{}@\n]* fatal ("invalid @ in skeleton: %s", yytext);
 \n        lineno++; ECHO;
 [^@\n]+           ECHO;
 
-<<EOF>>           xfclose (yyout); free (outname); return EOF;
+<<EOF>> {
+  if (outname)
+    {
+      free (outname);
+      xfclose (yyout);
+    }
+  return EOF;
+}
 %%
 
 /*------------------------.
 | Scan a Bison skeleton.  |
 `------------------------*/
 
 %%
 
 /*------------------------.
 | Scan a Bison skeleton.  |
 `------------------------*/
 
-void scan_skel (FILE *);
-
 void
 scan_skel (FILE *in)
 {
 void
 scan_skel (FILE *in)
 {