mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
Don't let %prec take a nonterminal.
* src/reader.c (grammar_current_rule_prec_set): Make the %prec symbol a token. * tests/input.at (%prec takes a token): New test checking that %prec won't take a nonterminal.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2006-11-17 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||
|
||||
Don't let %prec take a nonterminal.
|
||||
* src/reader.c (grammar_current_rule_prec_set): Make the %prec symbol a
|
||||
token.
|
||||
* tests/input.at (%prec takes a token): New test checking that %prec
|
||||
won't take a nonterminal.
|
||||
|
||||
2006-11-10 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||
|
||||
* tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because
|
||||
|
||||
@@ -387,6 +387,7 @@ grammar_midrule_action (void)
|
||||
void
|
||||
grammar_current_rule_prec_set (symbol *precsym, location loc)
|
||||
{
|
||||
symbol_class_set (precsym, token_sym, loc, false);
|
||||
if (current_rule->ruleprec)
|
||||
complain_at (loc, _("only one %s allowed per rule"), "%prec");
|
||||
current_rule->ruleprec = precsym;
|
||||
|
||||
@@ -680,3 +680,24 @@ start: false_start ;
|
||||
AT_CHECK([bison -o input.c input.y])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## --------------------- ##
|
||||
## %prec takes a token. ##
|
||||
## --------------------- ##
|
||||
|
||||
AT_SETUP([%prec takes a token])
|
||||
|
||||
# Bison once allowed %prec sym where sym was a nonterminal.
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%%
|
||||
start: PREC %prec PREC ;
|
||||
PREC: ;
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y], [1], [],
|
||||
[[input.y:3.1-4: rule given for PREC, which is a token
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
Reference in New Issue
Block a user