]> git.saurik.com Git - bison.git/blobdiff - src/scan-skel.l
obstacks: simplifications
[bison.git] / src / scan-skel.l
index 17382a73890ec54ac47cb7e473e331777b40ba62..17edc790ecb2c257843e4785239b6971d190d01f 100644 (file)
@@ -72,8 +72,8 @@ static void fail_for_invalid_at (char const *at);
 "@@" fputc ('@', yyout);
 "@{" fputc ('[', yyout);
 "@}" fputc (']', yyout);
-"@`" /* Empty.  Used by b4_cat in ../data/bison.m4.  */
-@\n  /* Likewise.  */
+"@`" continue;  /* Used by b4_cat in ../data/bison.m4.  */
+@\n  continue;
 
 "@oline@"  fprintf (yyout, "%d", out_lineno + 1);
 "@ofile@"  QPUTS (outname);
@@ -81,8 +81,7 @@ static void fail_for_invalid_at (char const *at);
 @[a-z_]+"(" {
   yytext[yyleng-1] = '\0';
   obstack_grow (&obstack_for_string, yytext, yyleng);
-  at_directive_argv[at_directive_argc++] =
-    obstack_finish (&obstack_for_string);
+  at_directive_argv[at_directive_argc++] = obstack_finish (&obstack_for_string);
   BEGIN SC_AT_DIRECTIVE_ARGS;
 }
 
@@ -100,23 +99,22 @@ static void fail_for_invalid_at (char const *at);
   return EOF;
 }
 
-<SC_AT_DIRECTIVE_ARGS>{
-  [^@]+ { STRING_GROW; }
+<SC_AT_DIRECTIVE_ARGS>
+{
+  [^@]+  STRING_GROW;
 
-  "@@" { obstack_1grow (&obstack_for_string, '@'); }
-  "@{" { obstack_1grow (&obstack_for_string, '['); }
-  "@}" { obstack_1grow (&obstack_for_string, ']'); }
-  "@`" /* Empty.  Useful for starting an argument
-          that begins with whitespace. */
-  @\n  /* Empty.  */
+  "@@"   obstack_1grow (&obstack_for_string, '@');
+  "@{"   obstack_1grow (&obstack_for_string, '[');
+  "@}"   obstack_1grow (&obstack_for_string, ']');
+  "@`"   continue; /* For starting an argument that begins with whitespace. */
+  @\n    continue;
 
   @[,)] {
     if (at_directive_argc >= AT_DIRECTIVE_ARGC_MAX)
       fail_for_at_directive_too_many_args (at_directive_argv[0]);
 
-    obstack_1grow (&obstack_for_string, '\0');
     at_directive_argv[at_directive_argc++] =
-      obstack_finish (&obstack_for_string);
+      obstack_finish0 (&obstack_for_string);
 
     /* Like M4, skip whitespace after a comma.  */
     if (yytext[1] == ',')
@@ -131,15 +129,17 @@ static void fail_for_invalid_at (char const *at);
       }
   }
 
-  @.? { fail_for_invalid_at (yytext); }
+  @.?  fail_for_invalid_at (yytext);
 }
 
-<SC_AT_DIRECTIVE_SKIP_WS>{
-  [ \t\r\n]
+<SC_AT_DIRECTIVE_SKIP_WS>
+{
+  [ \t\r\n]    continue;
   . { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; }
 }
 
-<SC_AT_DIRECTIVE_ARGS,SC_AT_DIRECTIVE_SKIP_WS>{
+<SC_AT_DIRECTIVE_ARGS,SC_AT_DIRECTIVE_SKIP_WS>
+{
   <<EOF>> {
     complain (fatal, _("unclosed %s directive in skeleton"),
               at_directive_argv[0]);