mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 14:53:03 +00:00
traces: always print the reduced grammar and fix it
* src/gram.c (grammar_dump): Print the effective number first instead of last. And fix it (remove the incorrect "+1"). Use t/f for Booleans. * src/reduce.c: When asked, always print the reduced grammar, even if there was nothing useless. * tests/sets.at (Reduced Grammar): Check that.
This commit is contained in:
@@ -300,3 +300,63 @@ AT_CHECK([sed -n '
|
||||
0, [expout])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
## ----------------- ##
|
||||
## Reduced Grammar. ##
|
||||
## ----------------- ##
|
||||
|
||||
# Check information about the grammar, once reduced.
|
||||
|
||||
AT_SETUP([Reduced Grammar])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%%
|
||||
expr: expr "+" term | term
|
||||
term: term "*" fact | fact
|
||||
fact: "num"
|
||||
]])
|
||||
|
||||
AT_BISON_CHECK([[--trace=grammar -o input.c input.y]], [], [],
|
||||
[[Reduced Grammar
|
||||
|
||||
ntokens = 6, nvars = 4, nsyms = 10, nrules = 6, nritems = 17
|
||||
|
||||
Variables
|
||||
---------
|
||||
|
||||
Value Sprec Sassoc Tag
|
||||
6 0 0 $accept
|
||||
7 0 0 expr
|
||||
8 0 0 term
|
||||
9 0 0 fact
|
||||
|
||||
|
||||
Rules
|
||||
-----
|
||||
|
||||
Num (Num, Prec, Assoc, Useful, UselessChain, Ritem Range) Lhs -> Rhs (Ritem range)
|
||||
0 ( 0, 0, 0, t, 0- 1) 6 -> 7 0
|
||||
1 ( 1, 0, 0, t, 3- 5) 7 -> 7 3 8
|
||||
2 ( 2, 0, 0, t, 7- 7) 7 -> 8
|
||||
3 ( 3, 0, 0, t, 9-11) 8 -> 8 4 9
|
||||
4 ( 4, 0, 0, t, 13-13) 8 -> 9
|
||||
5 ( 5, 0, 0, t, 15-15) 9 -> 5
|
||||
|
||||
|
||||
Rules interpreted
|
||||
-----------------
|
||||
|
||||
0 $accept: expr $end
|
||||
1 expr: expr "+" term
|
||||
2 expr: term
|
||||
3 term: term "*" fact
|
||||
4 term: fact
|
||||
5 fact: "num"
|
||||
|
||||
|
||||
reduced input.y defines 6 terminals, 4 nonterminals, and 6 productions.
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
Reference in New Issue
Block a user