mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 22:33:03 +00:00
Add %default-prec.
This commit is contained in:
@@ -115,6 +115,7 @@ int current_prec = 0;
|
||||
|
||||
%token
|
||||
PERCENT_DEBUG "%debug"
|
||||
PERCENT_DEFAULT_PREC "%default-prec"
|
||||
PERCENT_DEFINE "%define"
|
||||
PERCENT_DEFINES "%defines"
|
||||
PERCENT_ERROR_VERBOSE "%error-verbose"
|
||||
@@ -240,6 +241,13 @@ grammar_declaration:
|
||||
symbol_printer_set (list->sym, $1, list->location);
|
||||
symbol_list_free ($2);
|
||||
}
|
||||
| "%default-prec" INT
|
||||
{
|
||||
if (0 <= $2 && $2 <= 1)
|
||||
default_prec = $2;
|
||||
else
|
||||
complain_at (@1, _("invalid value for `%default-prec'"));
|
||||
}
|
||||
;
|
||||
|
||||
symbol_declaration:
|
||||
|
||||
@@ -41,6 +41,9 @@ merger_list *merge_functions;
|
||||
|
||||
/* Has %union been seen? */
|
||||
bool typed = false;
|
||||
|
||||
/* Should rules have a default precedence? */
|
||||
bool default_prec = true;
|
||||
|
||||
/*-----------------------.
|
||||
| Set the start symbol. |
|
||||
@@ -409,7 +412,7 @@ packgram (void)
|
||||
ritem[itemno++] = symbol_number_as_item_number (p->sym->number);
|
||||
/* A rule gets by default the precedence and associativity
|
||||
of the last token in it. */
|
||||
if (p->sym->class == token_sym)
|
||||
if (p->sym->class == token_sym && default_prec)
|
||||
rules[ruleno].prec = p->sym;
|
||||
if (p)
|
||||
p = p->next;
|
||||
|
||||
@@ -73,5 +73,6 @@ void free_merger_functions (void);
|
||||
extern merger_list *merge_functions;
|
||||
|
||||
extern bool typed;
|
||||
extern bool default_prec;
|
||||
|
||||
#endif /* !READER_H_ */
|
||||
|
||||
@@ -182,6 +182,7 @@ splice (\\[ \f\t\v]*\n)*
|
||||
{
|
||||
"%binary" return PERCENT_NONASSOC;
|
||||
"%debug" return PERCENT_DEBUG;
|
||||
"%default"[-_]"prec" return PERCENT_DEFAULT_PREC;
|
||||
"%define" return PERCENT_DEFINE;
|
||||
"%defines" return PERCENT_DEFINES;
|
||||
"%destructor" token_type = PERCENT_DESTRUCTOR; BEGIN SC_PRE_CODE;
|
||||
|
||||
Reference in New Issue
Block a user