* tests/output.at (AT_CHECK_OUTPUT): Likewise.
* tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
* tests/semantic.at (Parsing Guards): Similarly.
* src/reader.at (readgram): Complain if the last rule is not ended
with a semi-colon.
+2002-03-04 Akim Demaille <akim@epita.fr>
+
+ * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
+ * tests/output.at (AT_CHECK_OUTPUT): Likewise.
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
+ * tests/semantic.at (Parsing Guards): Similarly.
+ * src/reader.at (readgram): Complain if the last rule is not ended
+ with a semi-colon.
+
2002-03-04 Akim Demaille <akim@epita.fr>
* src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
1987-12-16 Richard Stallman <rms@gnu.org>
* REFERENCES: entered into RCS
+
+ $Revision$ $Date$
/* Warn if there is no default for $$ but we need one. */
else if (!xactions && !first_rhs && lhs->type_name != 0)
complain (_("empty rule for typed nonterminal, and no action"));
+ if (t == tok_two_percents || t == tok_eof)
+ complain (_("previous rule lacks an ending `;'"));
if (t == tok_semicolon)
t = lex ();
}
AT_DATA([$1.y],
[%%
-dummy:
+dummy:;
])
AT_CHECK([bison --defines=$1.h $1.y])
AT_DATA([input.y],
[[%%
-exp: { $$ = $1 ; }
+exp: { $$ = $1 ; };
]])
AT_CHECK([bison input.y], [1], [],
AT_DATA([input.y],
[[%%
-exp: { @$ = @1 ; }
+exp: { @$ = @1 ; };
]])
AT_CHECK([bison input.y], [1], [],
AT_DATA([$1],
[[$2
%%
-foo: {}
+foo: {};
]])
AT_CHECK([bison $3 $1], 0)
[[/* Bison used to swallow the character after `}'. */
%%
-exp: { tests = {{{{{{{{{{}}}}}}}}}}; }
+exp: { tests = {{{{{{{{{{}}}}}}}}}}; };
%%
]])
{
-}
+};
]])
AT_CHECK([bison input.y -o input.c -v], 0, [], [])
%%
exp: exp '+' exp { $$ = $1 + $3 }
| exp '/' exp %guard { if ($3 == 0) yyerror = 1 } { $$ = $1 / $3 }
- | INT
+ | INT;
%%
]])