]> git.saurik.com Git - bison.git/blobdiff - src/scan-skel.l
and Akim Demaille <akim@epita.fr>
[bison.git] / src / scan-skel.l
index 82f9ed1a6cd82e62252f74401895f3c262e012bf..b624cdfbebf1110e96af66496657c7efbdde5ba0 100644 (file)
@@ -18,7 +18,7 @@
    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    02111-1307, USA.  */
 
-%option nodefault noyywrap nounput
+%option nodefault noyywrap nounput never-interactive
 %option prefix="skel_" outfile="lex.yy.c"
 
 %{
 #include "files.h"
 int skel_lex PARAMS ((void));
 static int yylineno = 1;
+static char *yyoutname = NULL;
 %}
 %%
   /* This is an approximation, but we don't need more. */
 ^"#output \""[^\"]+\"\n        {
      yytext[yyleng - 2] = '\0';
-     skel_out = xfopen (yytext + strlen ("#output \""), "w");
+     XFREE (yyoutname);
+     yyoutname = xstrdup (yytext + strlen ("#output \""));
+     yyout = xfopen (yyoutname, "w");
      yylineno = 1;
    }
 
-"__oline__"      fprintf (yyout, "%d", yylineno);
-[^_\n]+          ECHO;
+"@<:@" fputc ('[', yyout);
+"@:>@" fputc (']', yyout);
+
+"__oline__"      fprintf (yyout, "%d", yylineno+1);
+"__ofile__"      fprintf (yyout, "%s", yyoutname);
+[^@_\n]+         ECHO;
 \n+              yylineno += yyleng; ECHO;
 .                ECHO;