int braces_level = 0;
/* Whether a semicolon is probably needed.
- The heuristic is that a semicolon is not needed after '{', '}', ';',
- or a C preprocessor directive, and that whitespaces and comments
- do not affect this flag.
- Note that '{' does not need a semicolon because of '{}'.
- A semicolon may be needed before a cpp direcive, but don't bother. */
+
+ The heuristic is that a semicolon is not needed after '{', '}',
+ ';', or a C preprocessor directive, and that whitespaces and
+ comments do not affect this flag. Note that '{' does not need a
+ semicolon because of '{}'. A semicolon may be needed before a
+ cpp directive, but don't bother. */
bool need_semicolon = false;
/* Whether in a C preprocessor directive. Don't use a start condition
}
-<SC_RULE_ACTION,SC_SYMBOL_ACTION>{
+<SC_RULE_ACTION,SC_SYMBOL_ACTION>
+{
"'" {
STRING_GROW;
BEGIN SC_CHARACTER;
"@@" 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);
}
/* This pattern must not match more than the previous @ patterns. */
-@[^@{}`(\n]* fail_for_invalid_at (yytext);
-\n out_lineno++; ECHO;
-[^@\n]+ ECHO;
+@[^@{}`(\n]* fail_for_invalid_at (yytext);
+\n out_lineno++; ECHO;
+[^@\n]+ ECHO;
-<INITIAL><<EOF>> {
+<<EOF>> {
if (outname)
{
free (outname);
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_invalid_at (yytext); }
+ @.? fail_for_invalid_at (yytext);
}
-<SC_AT_DIRECTIVE_SKIP_WS>{
- [ \t\r\n]
- . { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; }
+<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>> {
fatal (_("unclosed %s directive in skeleton"), at_directive_argv[0]);
}