Commit Graph
3 Commits
Author SHA1 Message Date
Valentin TolmerandAkim Demaille 284bc49c83 grammar: warn about unused precedence for symbols
Symbols with precedence but no associativity, and whose precedence is
never used, can be declared with %token instead.  The used precedence
relationships are recorded and a warning about useless ones is issued.

* src/conflicts.c (resolve_sr_conflict): Record precedence relation.
* src/symtab.c, src/symtab.h (prec_nodes, init_prec_nodes)
(symgraphlink_new, register_precedence_second_symbol)
(print_precedence_warnings): New.
Record relationships in a graph and warn about useless ones.
* src/main.c (main): Print precedence warnings.
* tests/conflicts.at: New.
2013-01-29 15:11:35 +01:00
Valentin TolmerandAkim Demaille 9e62f1a657 tests: add token declaration order test
* tests/conflicts.at: New test.
2013-01-27 10:43:59 +01:00
Valentin TolmerandAkim Demaille 93561c21e8 grammar: preserve token declaration order
In a declaration %token A B, the token A is declared before B, but in %left
A B (or with %precedence or %nonassoc or %right), the token B was declared
before A (tokens were declared in reverse order).

* src/symlist.h, src/symlist.c (symbol_list_append): New.
* src/parse-gram.y: Use it instead of symbol_list_prepend.
* tests/input.at: Adjust expectations.
2013-01-27 10:37:12 +01:00