mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 09:43:03 +00:00
* 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:
@@ -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>
|
2002-02-28 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* tests/Makefile.am (check_SCRIPTS): New.
|
* tests/Makefile.am (check_SCRIPTS): New.
|
||||||
|
|||||||
9
NEWS
9
NEWS
@@ -1,7 +1,14 @@
|
|||||||
Bison News
|
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
|
* Revert the C++ namespace changes introduced in 1.31, as they caused too
|
||||||
many portability hassles.
|
many portability hassles.
|
||||||
|
|||||||
@@ -1440,7 +1440,10 @@ readgram (void)
|
|||||||
unlex (t1);
|
unlex (t1);
|
||||||
symval = ssave;
|
symval = ssave;
|
||||||
if (t1 == tok_colon)
|
if (t1 == tok_colon)
|
||||||
break;
|
{
|
||||||
|
complain (_("previous rule lacks an ending `;'"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!first_rhs) /* JF */
|
if (!first_rhs) /* JF */
|
||||||
first_rhs = symval;
|
first_rhs = symval;
|
||||||
@@ -1549,6 +1552,8 @@ readgram (void)
|
|||||||
/* Warn if there is no default for $$ but we need one. */
|
/* Warn if there is no default for $$ but we need one. */
|
||||||
else if (!xactions && !first_rhs && lhs->type_name != 0)
|
else if (!xactions && !first_rhs && lhs->type_name != 0)
|
||||||
complain (_("empty rule for typed nonterminal, and no action"));
|
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)
|
if (t == tok_semicolon)
|
||||||
t = lex ();
|
t = lex ();
|
||||||
}
|
}
|
||||||
@@ -1585,7 +1590,7 @@ readgram (void)
|
|||||||
}
|
}
|
||||||
else if (t == tok_start)
|
else if (t == tok_start)
|
||||||
{
|
{
|
||||||
parse_start_decl ();
|
parse_start_decl (;)
|
||||||
t = lex ();
|
t = lex ();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ AT_SETUP([Invalid $n])
|
|||||||
|
|
||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
exp: { $$ = $1 ; }
|
exp: { $$ = $1 ; };
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CHECK([bison input.y], [1], [],
|
AT_CHECK([bison input.y], [1], [],
|
||||||
@@ -48,7 +48,7 @@ AT_SETUP([Invalid @n])
|
|||||||
|
|
||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
exp: { @$ = @1 ; }
|
exp: { @$ = @1 ; };
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CHECK([bison input.y], [1], [],
|
AT_CHECK([bison input.y], [1], [],
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ m4_define([AT_CHECK_OUTPUT],
|
|||||||
AT_DATA([$1],
|
AT_DATA([$1],
|
||||||
[[$2
|
[[$2
|
||||||
%%
|
%%
|
||||||
foo: {}
|
foo: {};
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CHECK([bison $3 $1], 0)
|
AT_CHECK([bison $3 $1], 0)
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ AT_DATA([input.y],
|
|||||||
[[/* Bison used to swallow the character after `}'. */
|
[[/* 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, [], [])
|
AT_CHECK([bison input.y -o input.c -v], 0, [], [])
|
||||||
|
|||||||
@@ -161,14 +161,14 @@ AT_SETUP([Broken Closure])
|
|||||||
|
|
||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
a: b
|
a: b;
|
||||||
b: c
|
b: c;
|
||||||
c: d
|
c: d;
|
||||||
d: e
|
d: e;
|
||||||
e: f
|
e: f;
|
||||||
f: g
|
f: g;
|
||||||
g: h
|
g: h;
|
||||||
h: 'h'
|
h: 'h';
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CHECK([bison --trace input.y 2>&1 |
|
AT_CHECK([bison --trace input.y 2>&1 |
|
||||||
|
|||||||
Reference in New Issue
Block a user