YYFAIL: warn about uses and remove from lalr1.java.

* NEWS (2.5): Document.
* data/lalr1.java (parser::YYStack::YYFAIL): Rename to YYERRLAB,
and make it private.  Update all uses.
* src/scan-code.l (SC_RULE_ACTION): Implement warning.
(cherry picked from commit 4395a9ff4f)

Conflicts:

	data/lalr1.java
This commit is contained in:
Joel E. Denny
2009-12-21 14:58:48 -05:00
parent 41d35e54d5
commit 62efdd2a85
4 changed files with 39 additions and 10 deletions

View File

@@ -1,3 +1,11 @@
2009-12-21 Joel E. Denny <jdenny@clemson.edu>
YYFAIL: warn about uses and remove from lalr1.java.
* NEWS (2.5): Document.
* data/lalr1.java (parser::YYStack::YYFAIL): Rename to YYERRLAB,
and make it private. Update all uses.
* src/scan-code.l (SC_RULE_ACTION): Implement warning.
2009-12-21 Joel E. Denny <jdenny@clemson.edu>
YYFAIL: deprecate.

11
NEWS
View File

@@ -119,6 +119,17 @@ Bison News
POSIX Yacc whose use is reported by -Wyacc, and rejected in Yacc
mode (--yacc).
** YYFAIL now produces warnings and Java parsers no longer implement it.
YYFAIL has existed for many years as an undocumented feature of
deterministic parsers in C generated by Bison. More recently, it was
a documented feature of Bison's experimental Java parsers. As
promised in Bison 2.4.2's NEWS entry, any appearance of YYFAIL in a
semantic action now produces a deprecation warning, and Java parsers
no longer implement YYFAIL at all. For further details, including a
discussion of how to suppress C preprocessor warnings about YYFAIL
being unused, see the Bison 2.4.2 NEWS entry.
** Temporary hack for adding a semicolon to the user action.
Previously, Bison appended a semicolon to every user action for

View File

@@ -308,12 +308,9 @@ b4_lexer_if([[
* printing an error message. */
public static final int YYERROR = 2;
/**
* Returned by a Bison action in order to print an error message and start
* error recovery. Formally deprecated in Bison 2.4.2's NEWS entry, where
* a plan to phase it out is discussed. */
public static final int YYFAIL = 3;
// Internal return codes that are not supported for user semantic
// actions.
private static final int YYERRLAB = 3;
private static final int YYNEWSTATE = 4;
private static final int YYDEFAULT = 5;
private static final int YYREDUCE = 6;
@@ -530,7 +527,7 @@ m4_popdef([b4_at_dollar])])dnl
else if ((yyn = yytable_[yyn]) <= 0)
{
if (yy_table_value_is_error_ (yyn))
label = YYFAIL;
label = YYERRLAB;
else
{
yyn = -yyn;
@@ -564,7 +561,7 @@ m4_popdef([b4_at_dollar])])dnl
case YYDEFAULT:
yyn = yydefact_[yystate];
if (yyn == 0)
label = YYFAIL;
label = YYERRLAB;
else
label = YYREDUCE;
break;
@@ -581,7 +578,7 @@ m4_popdef([b4_at_dollar])])dnl
/*------------------------------------.
| yyerrlab -- here on detecting error |
`------------------------------------*/
case YYFAIL:
case YYERRLAB:
/* If not already recovering from an error, report this error. */
if (yyerrstatus_ == 0)
{

View File

@@ -245,7 +245,20 @@ ref -?[0-9]+|{id}|"["{id}"]"|"$"
{splice} STRING_GROW;
[\n\r] STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
[ \t\f] STRING_GROW;
. STRING_GROW; need_semicolon = true;
/* YYFAIL is undocumented and was formally deprecated in Bison
2.4.2. */
YYFAIL {
STRING_GROW; need_semicolon = true;
warn_at (*loc, _("use of YYFAIL, which is deprecated and will be"
" removed"));
}
/* The sole purpose of this is to make sure identifiers that merely
contain YYFAIL don't produce the above warning. */
[A-Za-z_][0-9A-Za-z_]* STRING_GROW; need_semicolon = true;
. STRING_GROW; need_semicolon = true;
}
<SC_SYMBOL_ACTION>