mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 02:03:03 +00:00
* tests/regression.at (Unresolved SR Conflicts):
(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes below. * src/LR0.c (new_state): Recognize the final state by the fact it is reached by eoftoken. (insert_start_shifting_state, insert_eof_shifting_state) (insert_accepting_state, augment_automaton): Remove, since now these states are automatically computed from the initial state. (generate_states): Adjust. * src/print.c: When reporting a rule number to the user, substract 1, so that the axiom rule is rule 0, and the first user rule is 1. * src/reduce.c: Likewise. * src/print_graph.c (print_core): For the time being, just as for the report, depend upon --trace-flags to dump the full set of items. * src/reader.c (readgram): Once the grammar read, insert the rule 0: `$axiom: START-SYMBOL $'. * tests/set.at: Adjust: rule 0 is now displayed, and since the number of the states has changed (the final state is no longer necessarily the last), catch up. * tests/regression.at: Partly catch up.
This commit is contained in:
27
ChangeLog
27
ChangeLog
@@ -1,3 +1,30 @@
|
|||||||
|
2001-12-27 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* tests/regression.at (Unresolved SR Conflicts):
|
||||||
|
(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
|
||||||
|
below.
|
||||||
|
|
||||||
|
|
||||||
|
* src/LR0.c (new_state): Recognize the final state by the fact it
|
||||||
|
is reached by eoftoken.
|
||||||
|
(insert_start_shifting_state, insert_eof_shifting_state)
|
||||||
|
(insert_accepting_state, augment_automaton): Remove, since now
|
||||||
|
these states are automatically computed from the initial state.
|
||||||
|
(generate_states): Adjust.
|
||||||
|
* src/print.c: When reporting a rule number to the user, substract
|
||||||
|
1, so that the axiom rule is rule 0, and the first user rule is 1.
|
||||||
|
* src/reduce.c: Likewise.
|
||||||
|
* src/print_graph.c (print_core): For the time being, just as for
|
||||||
|
the report, depend upon --trace-flags to dump the full set of
|
||||||
|
items.
|
||||||
|
* src/reader.c (readgram): Once the grammar read, insert the rule
|
||||||
|
0: `$axiom: START-SYMBOL $'.
|
||||||
|
* tests/set.at: Adjust: rule 0 is now displayed, and since the
|
||||||
|
number of the states has changed (the final state is no longer
|
||||||
|
necessarily the last), catch up.
|
||||||
|
* tests/regression.at: Partly catch up.
|
||||||
|
|
||||||
|
|
||||||
2001-12-27 Akim Demaille <akim@epita.fr>
|
2001-12-27 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/LR0.c (new_state): Recognize the final state by the fact it
|
* src/LR0.c (new_state): Recognize the final state by the fact it
|
||||||
|
|||||||
@@ -61,19 +61,20 @@ AT_CHECK([bison input.y -o input.c -v], 0, [],
|
|||||||
|
|
||||||
# Check the contents of the report.
|
# Check the contents of the report.
|
||||||
AT_CHECK([cat input.output], [],
|
AT_CHECK([cat input.output], [],
|
||||||
[[State 4 contains 1 shift/reduce conflict.
|
[[State 5 contains 1 shift/reduce conflict.
|
||||||
|
|
||||||
|
|
||||||
Grammar
|
Grammar
|
||||||
|
|
||||||
Number, Line, Rule
|
Number, Line, Rule
|
||||||
|
0 4 $axiom -> exp $
|
||||||
1 3 exp -> exp OP exp
|
1 3 exp -> exp OP exp
|
||||||
2 3 exp -> NUM
|
2 3 exp -> NUM
|
||||||
|
|
||||||
|
|
||||||
Terminals, with rules where they appear
|
Terminals, with rules where they appear
|
||||||
|
|
||||||
$ (0)
|
$ (0) 0
|
||||||
error (256)
|
error (256)
|
||||||
NUM (257) 2
|
NUM (257) 2
|
||||||
OP (258) 1
|
OP (258) 1
|
||||||
@@ -81,8 +82,10 @@ OP (258) 1
|
|||||||
|
|
||||||
Nonterminals, with rules where they appear
|
Nonterminals, with rules where they appear
|
||||||
|
|
||||||
exp (5)
|
$axiom (5)
|
||||||
on left: 1 2, on right: 1
|
on left: 0
|
||||||
|
exp (6)
|
||||||
|
on left: 1 2, on right: 0 1
|
||||||
|
|
||||||
|
|
||||||
state 0
|
state 0
|
||||||
@@ -103,44 +106,41 @@ state 1
|
|||||||
|
|
||||||
state 2
|
state 2
|
||||||
|
|
||||||
|
$axiom -> exp . $ (rule 0)
|
||||||
exp -> exp . OP exp (rule 1)
|
exp -> exp . OP exp (rule 1)
|
||||||
|
|
||||||
$ shift, and go to state 5
|
$ shift, and go to state 3
|
||||||
OP shift, and go to state 3
|
OP shift, and go to state 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 3
|
state 3
|
||||||
|
|
||||||
exp -> exp OP . exp (rule 1)
|
$axiom -> exp $ . (rule 0)
|
||||||
|
|
||||||
NUM shift, and go to state 1
|
|
||||||
|
|
||||||
exp go to state 4
|
|
||||||
|
|
||||||
|
$default accept
|
||||||
|
|
||||||
|
|
||||||
state 4
|
state 4
|
||||||
|
|
||||||
exp -> exp . OP exp (rule 1)
|
exp -> exp OP . exp (rule 1)
|
||||||
exp -> exp OP exp . (rule 1)
|
|
||||||
|
|
||||||
OP shift, and go to state 3
|
NUM shift, and go to state 1
|
||||||
|
|
||||||
OP [reduce using rule 1 (exp)]
|
exp go to state 5
|
||||||
$default reduce using rule 1 (exp)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 5
|
state 5
|
||||||
|
|
||||||
$ shift, and go to state 6
|
exp -> exp . OP exp (rule 1)
|
||||||
|
exp -> exp OP exp . (rule 1)
|
||||||
|
|
||||||
|
OP shift, and go to state 4
|
||||||
|
|
||||||
|
OP [reduce using rule 1 (exp)]
|
||||||
|
$default reduce using rule 1 (exp)
|
||||||
|
|
||||||
state 6
|
|
||||||
|
|
||||||
$default accept
|
|
||||||
|
|
||||||
|
|
||||||
]])
|
]])
|
||||||
@@ -165,19 +165,20 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], [])
|
|||||||
|
|
||||||
# Check the contents of the report.
|
# Check the contents of the report.
|
||||||
AT_CHECK([cat input.output], [],
|
AT_CHECK([cat input.output], [],
|
||||||
[[Conflict in state 4 between rule 1 and token OP resolved as shift.
|
[[Conflict in state 5 between rule 2 and token OP resolved as shift.
|
||||||
|
|
||||||
|
|
||||||
Grammar
|
Grammar
|
||||||
|
|
||||||
Number, Line, Rule
|
Number, Line, Rule
|
||||||
|
0 5 $axiom -> exp $
|
||||||
1 4 exp -> exp OP exp
|
1 4 exp -> exp OP exp
|
||||||
2 4 exp -> NUM
|
2 4 exp -> NUM
|
||||||
|
|
||||||
|
|
||||||
Terminals, with rules where they appear
|
Terminals, with rules where they appear
|
||||||
|
|
||||||
$ (0)
|
$ (0) 0
|
||||||
error (256)
|
error (256)
|
||||||
NUM (257) 2
|
NUM (257) 2
|
||||||
OP (258) 1
|
OP (258) 1
|
||||||
@@ -185,8 +186,10 @@ OP (258) 1
|
|||||||
|
|
||||||
Nonterminals, with rules where they appear
|
Nonterminals, with rules where they appear
|
||||||
|
|
||||||
exp (5)
|
$axiom (5)
|
||||||
on left: 1 2, on right: 1
|
on left: 0
|
||||||
|
exp (6)
|
||||||
|
on left: 1 2, on right: 0 1
|
||||||
|
|
||||||
|
|
||||||
state 0
|
state 0
|
||||||
@@ -207,43 +210,40 @@ state 1
|
|||||||
|
|
||||||
state 2
|
state 2
|
||||||
|
|
||||||
|
$axiom -> exp . $ (rule 0)
|
||||||
exp -> exp . OP exp (rule 1)
|
exp -> exp . OP exp (rule 1)
|
||||||
|
|
||||||
$ shift, and go to state 5
|
$ shift, and go to state 3
|
||||||
OP shift, and go to state 3
|
OP shift, and go to state 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 3
|
state 3
|
||||||
|
|
||||||
exp -> exp OP . exp (rule 1)
|
$axiom -> exp $ . (rule 0)
|
||||||
|
|
||||||
NUM shift, and go to state 1
|
|
||||||
|
|
||||||
exp go to state 4
|
|
||||||
|
|
||||||
|
$default accept
|
||||||
|
|
||||||
|
|
||||||
state 4
|
state 4
|
||||||
|
|
||||||
exp -> exp . OP exp (rule 1)
|
exp -> exp OP . exp (rule 1)
|
||||||
exp -> exp OP exp . (rule 1)
|
|
||||||
|
|
||||||
OP shift, and go to state 3
|
NUM shift, and go to state 1
|
||||||
|
|
||||||
$default reduce using rule 1 (exp)
|
exp go to state 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 5
|
state 5
|
||||||
|
|
||||||
$ shift, and go to state 6
|
exp -> exp . OP exp (rule 1)
|
||||||
|
exp -> exp OP exp . (rule 1)
|
||||||
|
|
||||||
|
OP shift, and go to state 4
|
||||||
|
|
||||||
|
$default reduce using rule 1 (exp)
|
||||||
|
|
||||||
state 6
|
|
||||||
|
|
||||||
$default accept
|
|
||||||
|
|
||||||
|
|
||||||
]])
|
]])
|
||||||
@@ -296,6 +296,7 @@ AT_CHECK([cat input.output], [],
|
|||||||
[[Grammar
|
[[Grammar
|
||||||
|
|
||||||
Number, Line, Rule
|
Number, Line, Rule
|
||||||
|
0 28 $axiom -> expr $
|
||||||
1 2 @1 -> /* empty */
|
1 2 @1 -> /* empty */
|
||||||
2 2 expr -> 'a' @1 'b'
|
2 2 expr -> 'a' @1 'b'
|
||||||
3 15 @2 -> /* empty */
|
3 15 @2 -> /* empty */
|
||||||
@@ -304,7 +305,7 @@ AT_CHECK([cat input.output], [],
|
|||||||
|
|
||||||
Terminals, with rules where they appear
|
Terminals, with rules where they appear
|
||||||
|
|
||||||
$ (0)
|
$ (0) 0
|
||||||
'a' (97) 2
|
'a' (97) 2
|
||||||
'b' (98) 2
|
'b' (98) 2
|
||||||
'c' (99) 4
|
'c' (99) 4
|
||||||
@@ -313,11 +314,13 @@ error (256)
|
|||||||
|
|
||||||
Nonterminals, with rules where they appear
|
Nonterminals, with rules where they appear
|
||||||
|
|
||||||
expr (6)
|
$axiom (6)
|
||||||
on left: 2 4
|
on left: 0
|
||||||
@1 (7)
|
expr (7)
|
||||||
|
on left: 2 4, on right: 0
|
||||||
|
@1 (8)
|
||||||
on left: 1, on right: 2
|
on left: 1, on right: 2
|
||||||
@2 (8)
|
@2 (9)
|
||||||
on left: 3, on right: 4
|
on left: 3, on right: 4
|
||||||
|
|
||||||
|
|
||||||
@@ -325,10 +328,8 @@ state 0
|
|||||||
|
|
||||||
'a' shift, and go to state 1
|
'a' shift, and go to state 1
|
||||||
|
|
||||||
$default reduce using rule 3 (@2)
|
expr go to state 2
|
||||||
|
@2 go to state 3
|
||||||
expr go to state 6
|
|
||||||
@2 go to state 2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -338,35 +339,50 @@ state 1
|
|||||||
|
|
||||||
$default reduce using rule 1 (@1)
|
$default reduce using rule 1 (@1)
|
||||||
|
|
||||||
@1 go to state 3
|
@1 go to state 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 2
|
state 2
|
||||||
|
|
||||||
expr -> @2 . 'c' (rule 4)
|
$axiom -> expr . $ (rule 0)
|
||||||
|
|
||||||
'c' shift, and go to state 4
|
$ shift, and go to state 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 3
|
state 3
|
||||||
|
|
||||||
expr -> 'a' @1 . 'b' (rule 2)
|
expr -> @2 . 'c' (rule 4)
|
||||||
|
|
||||||
'b' shift, and go to state 5
|
'c' shift, and go to state 6
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 4
|
state 4
|
||||||
|
|
||||||
|
expr -> 'a' @1 . 'b' (rule 2)
|
||||||
|
|
||||||
|
'b' shift, and go to state 7
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
state 5
|
||||||
|
|
||||||
|
$axiom -> expr $ . (rule 0)
|
||||||
|
|
||||||
|
$default accept
|
||||||
|
|
||||||
|
|
||||||
|
state 6
|
||||||
|
|
||||||
expr -> @2 'c' . (rule 4)
|
expr -> @2 'c' . (rule 4)
|
||||||
|
|
||||||
$default reduce using rule 4 (expr)
|
$default reduce using rule 4 (expr)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 5
|
state 7
|
||||||
|
|
||||||
expr -> 'a' @1 'b' . (rule 2)
|
expr -> 'a' @1 'b' . (rule 2)
|
||||||
|
|
||||||
@@ -374,17 +390,6 @@ state 5
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 6
|
|
||||||
|
|
||||||
$ shift, and go to state 7
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
state 7
|
|
||||||
|
|
||||||
$default accept
|
|
||||||
|
|
||||||
|
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|||||||
Reference in New Issue
Block a user