Display items as we display rules.

* src/gram.h, src/gram.c (rule_lhs_print): New.
* src/gram.c (grammar_rules_partial_print): Use it.
* src/print.c (print_core): Likewise.
* tests/conflicts.at (Defaulted Conflicted Reduction),
(Unresolved SR Conflicts): Adjust.
(Unresolved SR Conflicts): Adjust and rename as...
(Resolved SR Conflicts): this, as was meant.
* tests/regression.at (Web2c Report): Adjust.
This commit is contained in:
Akim Demaille
2002-06-30 17:33:08 +00:00
parent bc933ef16d
commit ce4ccb4b11
6 changed files with 139 additions and 118 deletions

View File

@@ -174,9 +174,9 @@ exp (6)
state 0
$axiom -> . exp $ (rule 0)
exp -> . exp OP exp (rule 1)
exp -> . NUM (rule 2)
0 $axiom: . exp $
1 exp: . exp OP exp
2 | . NUM
NUM shift, and go to state 1
@@ -186,7 +186,7 @@ state 0
state 1
exp -> NUM . (rule 2)
2 exp: NUM .
$default reduce using rule 2 (exp)
@@ -194,8 +194,8 @@ state 1
state 2
$axiom -> exp . $ (rule 0)
exp -> exp . OP exp (rule 1)
0 $axiom: exp . $
1 exp: exp . OP exp
$ shift, and go to state 3
OP shift, and go to state 4
@@ -204,16 +204,16 @@ state 2
state 3
$axiom -> exp $ . (rule 0)
0 $axiom: exp $ .
$default accept
state 4
exp -> . exp OP exp (rule 1)
exp -> exp OP . exp (rule 1)
exp -> . NUM (rule 2)
1 exp: . exp OP exp
1 | exp OP . exp
2 | . NUM
NUM shift, and go to state 1
@@ -223,8 +223,8 @@ state 4
state 5
exp -> exp . OP exp [$, OP] (rule 1)
exp -> exp OP exp . [$, OP] (rule 1)
1 exp: exp . OP exp [$, OP]
1 | exp OP exp . [$, OP]
OP shift, and go to state 4
@@ -238,30 +238,27 @@ state 5
AT_CLEANUP
## ------------------------- ##
## Unresolved SR Conflicts. ##
## ------------------------- ##
AT_SETUP([Unresolved SR Conflicts])
## ----------------------- ##
## Resolved SR Conflicts. ##
## ----------------------- ##
AT_SETUP([Resolved SR Conflicts])
AT_KEYWORDS([report])
AT_DATA([input.y],
[[%token NUM OP
%left OP
%%
exp: exp OP exp | NUM;
]])
AT_CHECK([bison input.y -o input.c --report=all], 0, [],
[input.y contains 1 shift/reduce conflict.
])
AT_CHECK([bison input.y -o input.c --report=all])
# Check the contents of the report.
AT_CHECK([cat input.output], [],
[[State 5 contains 1 shift/reduce conflict.
Grammar
[[Grammar
0 $axiom: exp $
@@ -287,9 +284,9 @@ exp (6)
state 0
$axiom -> . exp $ (rule 0)
exp -> . exp OP exp (rule 1)
exp -> . NUM (rule 2)
0 $axiom: . exp $
1 exp: . exp OP exp
2 | . NUM
NUM shift, and go to state 1
@@ -299,7 +296,7 @@ state 0
state 1
exp -> NUM . (rule 2)
2 exp: NUM .
$default reduce using rule 2 (exp)
@@ -307,8 +304,8 @@ state 1
state 2
$axiom -> exp . $ (rule 0)
exp -> exp . OP exp (rule 1)
0 $axiom: exp . $
1 exp: exp . OP exp
$ shift, and go to state 3
OP shift, and go to state 4
@@ -317,16 +314,16 @@ state 2
state 3
$axiom -> exp $ . (rule 0)
0 $axiom: exp $ .
$default accept
state 4
exp -> . exp OP exp (rule 1)
exp -> exp OP . exp (rule 1)
exp -> . NUM (rule 2)
1 exp: . exp OP exp
1 | exp OP . exp
2 | . NUM
NUM shift, and go to state 1
@@ -336,14 +333,13 @@ state 4
state 5
exp -> exp . OP exp [$, OP] (rule 1)
exp -> exp OP exp . [$, OP] (rule 1)
1 exp: exp . OP exp [$, OP]
1 | exp OP exp . [$, OP]
OP shift, and go to state 4
OP [reduce using rule 1 (exp)]
$default reduce using rule 1 (exp)
Conflict between rule 2 and token OP resolved as shift (%left OP).
]])
@@ -351,7 +347,6 @@ state 5
AT_CLEANUP
## -------------------------------- ##
## Defaulted Conflicted Reduction. ##
## -------------------------------- ##
@@ -430,11 +425,11 @@ id (7)
state 0
$axiom -> . exp $ (rule 0)
exp -> . num (rule 1)
exp -> . id (rule 2)
num -> . '0' (rule 3)
id -> . '0' (rule 4)
0 $axiom: . exp $
1 exp: . num
2 | . id
3 num: . '0'
4 id: . '0'
'0' shift, and go to state 1
@@ -446,8 +441,8 @@ state 0
state 1
num -> '0' . [$] (rule 3)
id -> '0' . [$] (rule 4)
3 num: '0' . [$]
4 id: '0' . [$]
$ reduce using rule 3 (num)
$ [reduce using rule 4 (id)]
@@ -457,7 +452,7 @@ state 1
state 2
$axiom -> exp . $ (rule 0)
0 $axiom: exp . $
$ shift, and go to state 5
@@ -465,7 +460,7 @@ state 2
state 3
exp -> num . (rule 1)
1 exp: num .
$default reduce using rule 1 (exp)
@@ -473,7 +468,7 @@ state 3
state 4
exp -> id . (rule 2)
2 exp: id .
$default reduce using rule 2 (exp)
@@ -481,7 +476,7 @@ state 4
state 5
$axiom -> exp $ . (rule 0)
0 $axiom: exp $ .
$default accept

View File

@@ -184,7 +184,7 @@ expr (7)
state 0
$axiom -> . expr $ (rule 0)
0 $axiom: . expr $
'a' shift, and go to state 1
@@ -197,7 +197,7 @@ state 0
state 1
expr -> 'a' . @1 'b' (rule 2)
2 expr: 'a' . @1 'b'
$default reduce using rule 1 (@1)
@@ -207,7 +207,7 @@ state 1
state 2
$axiom -> expr . $ (rule 0)
0 $axiom: expr . $
$ shift, and go to state 5
@@ -215,7 +215,7 @@ state 2
state 3
expr -> @2 . 'c' (rule 4)
4 expr: @2 . 'c'
'c' shift, and go to state 6
@@ -223,7 +223,7 @@ state 3
state 4
expr -> 'a' @1 . 'b' (rule 2)
2 expr: 'a' @1 . 'b'
'b' shift, and go to state 7
@@ -231,14 +231,14 @@ state 4
state 5
$axiom -> expr $ . (rule 0)
0 $axiom: expr $ .
$default accept
state 6
expr -> @2 'c' . (rule 4)
4 expr: @2 'c' .
$default reduce using rule 4 (expr)
@@ -246,7 +246,7 @@ state 6
state 7
expr -> 'a' @1 'b' . (rule 2)
2 expr: 'a' @1 'b' .
$default reduce using rule 2 (expr)
@@ -375,12 +375,11 @@ CONST_DEC:
{ } undef_id_tok '=' const_id_tok ';'
;
%%
]])
AT_CHECK([bison -v input.y])
AT_CHECK([sed -n 's/ *$//;/^$/!p' input.output], 0,
sed -n 's/ *$//;/^$/!p' input.output >input.report
AT_CHECK([cat input.report], 0,
[[Grammar
0 $axiom: CONST_DEC_PART $
1 CONST_DEC_PART: CONST_DEC_LIST
@@ -407,45 +406,45 @@ CONST_DEC (10)
@1 (11)
on left: 4, on right: 5
state 0
$axiom -> . CONST_DEC_PART $ (rule 0)
0 $axiom: . CONST_DEC_PART $
$default reduce using rule 4 (@1)
CONST_DEC_PART go to state 1
CONST_DEC_LIST go to state 2
CONST_DEC go to state 3
@1 go to state 4
state 1
$axiom -> CONST_DEC_PART . $ (rule 0)
0 $axiom: CONST_DEC_PART . $
$ shift, and go to state 5
state 2
CONST_DEC_PART -> CONST_DEC_LIST . (rule 1)
CONST_DEC_LIST -> CONST_DEC_LIST . CONST_DEC (rule 3)
1 CONST_DEC_PART: CONST_DEC_LIST .
3 CONST_DEC_LIST: CONST_DEC_LIST . CONST_DEC
undef_id_tok reduce using rule 4 (@1)
$default reduce using rule 1 (CONST_DEC_PART)
CONST_DEC go to state 6
@1 go to state 4
state 3
CONST_DEC_LIST -> CONST_DEC . (rule 2)
2 CONST_DEC_LIST: CONST_DEC .
$default reduce using rule 2 (CONST_DEC_LIST)
state 4
CONST_DEC -> @1 . undef_id_tok '=' const_id_tok ';' (rule 5)
5 CONST_DEC: @1 . undef_id_tok '=' const_id_tok ';'
undef_id_tok shift, and go to state 7
state 5
$axiom -> CONST_DEC_PART $ . (rule 0)
0 $axiom: CONST_DEC_PART $ .
$default accept
state 6
CONST_DEC_LIST -> CONST_DEC_LIST CONST_DEC . (rule 3)
3 CONST_DEC_LIST: CONST_DEC_LIST CONST_DEC .
$default reduce using rule 3 (CONST_DEC_LIST)
state 7
CONST_DEC -> @1 undef_id_tok . '=' const_id_tok ';' (rule 5)
5 CONST_DEC: @1 undef_id_tok . '=' const_id_tok ';'
'=' shift, and go to state 8
state 8
CONST_DEC -> @1 undef_id_tok '=' . const_id_tok ';' (rule 5)
5 CONST_DEC: @1 undef_id_tok '=' . const_id_tok ';'
const_id_tok shift, and go to state 9
state 9
CONST_DEC -> @1 undef_id_tok '=' const_id_tok . ';' (rule 5)
5 CONST_DEC: @1 undef_id_tok '=' const_id_tok . ';'
';' shift, and go to state 10
state 10
CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';' . (rule 5)
5 CONST_DEC: @1 undef_id_tok '=' const_id_tok ';' .
$default reduce using rule 5 (CONST_DEC)
]])
@@ -491,7 +490,9 @@ AT_CHECK([bison -v input.y -o input.c])
# Check only the tables. We don't use --no-parser, because it is
# still to be implemented in the experimental branch of Bison.
AT_CHECK([[sed -n 's/ *$//;/^static const.*\[\] =/,/^}/p' input.c]], 0,
[sed -n 's/ *$//;/^static const.*\[\] =/,/^}/p' input.c >tables.c]
AT_CHECK([[cat tables.c]], 0,
[[static const unsigned char yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,