* tests/sets.at (Broken Closure): Add the ending `;'.

* tests/input.at (Invalid $n, Invalid @n): Likewise.
* tests/output.at (AT_CHECK_OUTPUT): Likewise.
* src/reader.at (readgram): Complain if a rule is not ended with a
semi-colon.
This commit is contained in:
Akim Demaille
2002-03-04 14:57:46 +00:00
parent 6f8dd2075e
commit bae3c8d209
7 changed files with 36 additions and 16 deletions

View File

@@ -1,3 +1,11 @@
2002-03-04 Akim Demaille <akim@epita.fr>
* tests/sets.at (Broken Closure): Add the ending `;'.
* tests/input.at (Invalid $n, Invalid @n): Likewise.
* tests/output.at (AT_CHECK_OUTPUT): Likewise.
* src/reader.at (readgram): Complain if a rule is not ended with a
semi-colon.
2002-02-28 Akim Demaille <akim@epita.fr>
* tests/Makefile.am (check_SCRIPTS): New.

9
NEWS
View File

@@ -1,7 +1,14 @@
Bison News
----------
Changes in version 1.33a:
Changes in version 1.33b:
* A missing `;' ending a rule triggers a warning
In accordance with POSIX, and in agreement with other
Yacc implementations, Bison will mandate this semicolon in a near
future. This eases the implementation of a Bison parser of Bison
grammars by making this grammar LALR(1) instead of LR(2). To
facilitate the transition, this release introduces a warning.
* Revert the C++ namespace changes introduced in 1.31, as they caused too
many portability hassles.

View File

@@ -1440,7 +1440,10 @@ readgram (void)
unlex (t1);
symval = ssave;
if (t1 == tok_colon)
break;
{
complain (_("previous rule lacks an ending `;'"));
break;
}
if (!first_rhs) /* JF */
first_rhs = symval;
@@ -1549,6 +1552,8 @@ readgram (void)
/* 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 ();
}
@@ -1585,7 +1590,7 @@ readgram (void)
}
else if (t == tok_start)
{
parse_start_decl ();
parse_start_decl (;)
t = lex ();
}
#endif

View File

@@ -29,7 +29,7 @@ AT_SETUP([Invalid $n])
AT_DATA([input.y],
[[%%
exp: { $$ = $1 ; }
exp: { $$ = $1 ; };
]])
AT_CHECK([bison input.y], [1], [],
@@ -48,7 +48,7 @@ AT_SETUP([Invalid @n])
AT_DATA([input.y],
[[%%
exp: { @$ = @1 ; }
exp: { @$ = @1 ; };
]])
AT_CHECK([bison input.y], [1], [],

View File

@@ -26,7 +26,7 @@ m4_define([AT_CHECK_OUTPUT],
AT_DATA([$1],
[[$2
%%
foo: {}
foo: {};
]])
AT_CHECK([bison $3 $1], 0)

View File

@@ -103,7 +103,7 @@ AT_DATA([input.y],
[[/* Bison used to swallow the character after `}'. */
%%
exp: { tests = {{{{{{{{{{}}}}}}}}}}; }
exp: { tests = {{{{{{{{{{}}}}}}}}}}; };
%%
]])
@@ -382,7 +382,7 @@ expr:
{
}
};
]])
AT_CHECK([bison input.y -o input.c -v], 0, [], [])

View File

@@ -161,14 +161,14 @@ AT_SETUP([Broken Closure])
AT_DATA([input.y],
[[%%
a: b
b: c
c: d
d: e
e: f
f: g
g: h
h: 'h'
a: b;
b: c;
c: d;
d: e;
e: f;
f: g;
g: h;
h: 'h';
]])
AT_CHECK([bison --trace input.y 2>&1 |