POSIX: complain if %prec's token was not defined.

* NEWS (2.5): Document.
* src/reader.c (grammar_rule_check): Convert warning to
complaint.
* tests/input.at (%prec's token must be defined): Update.
This commit is contained in:
Joel E. Denny
2009-12-30 03:14:12 -05:00
parent 2c2035282c
commit 510df9519e
4 changed files with 18 additions and 4 deletions

View File

@@ -1,3 +1,11 @@
2009-12-30 Joel E. Denny <jdenny@clemson.edu>
POSIX: complain if %prec's token was not defined.
* NEWS (2.5): Document.
* src/reader.c (grammar_rule_check): Convert warning to
complaint.
* tests/input.at (%prec's token must be defined): Update.
2009-12-30 Joel E. Denny <jdenny@clemson.edu>
POSIX: warn if %prec's token was not defined.

6
NEWS
View File

@@ -130,6 +130,12 @@ Bison News
discussion of how to suppress C preprocessor warnings about YYFAIL
being unused, see the Bison 2.4.2 NEWS entry.
** `%prec IDENTIFIER' requires IDENTIFIER to be defined separately.
As promised in Bison 2.4.2's NEWS entry, it is now an error if a token
that appears after a %prec directive is not defined by %token, %left,
%right, or %nonassoc. This is required by POSIX.
** Temporary hack for adding a semicolon to the user action.
Previously, Bison appended a semicolon to every user action for

View File

@@ -327,8 +327,8 @@ grammar_rule_check (const symbol_list *r)
if (r->ruleprec
&& r->ruleprec->tag[0] != '\'' && r->ruleprec->tag[0] != '"'
&& !r->ruleprec->declared && !r->ruleprec->prec)
warn_at (r->location, _("token for %%prec is not defined: %s"),
r->ruleprec->tag);
complain_at (r->location, _("token for %%prec is not defined: %s"),
r->ruleprec->tag);
}

View File

@@ -812,8 +812,8 @@ AT_DATA([[input.y]],
start: %prec PREC ;
]])
AT_BISON_CHECK([[input.y]], [[0]], [],
[[input.y:2.8-17: warning: token for %prec is not defined: PREC
AT_BISON_CHECK([[input.y]], [[1]], [],
[[input.y:2.8-17: token for %prec is not defined: PREC
]])
AT_CLEANUP