X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/6b5a748937ae95af26d78e9e5e7a335351a2970d..0906b12cd56f9777fb684b8a257a0e56c090a93c:/tests/reduce.at diff --git a/tests/reduce.at b/tests/reduce.at index a30e6882..8ac894c0 100644 --- a/tests/reduce.at +++ b/tests/reduce.at @@ -142,6 +142,65 @@ useless8: '8'; useless9: '9'; ]]) +AT_BISON_CHECK([[-fcaret input.y]], 0, [], +[[input.y: warning: 9 nonterminals useless in grammar [-Wother] +input.y: warning: 9 rules useless in grammar [-Wother] +input.y:6.1-8: warning: nonterminal useless in grammar: useless1 [-Wother] + useless1: '1'; + ^^^^^^^^ +input.y:7.1-8: warning: nonterminal useless in grammar: useless2 [-Wother] + useless2: '2'; + ^^^^^^^^ +input.y:8.1-8: warning: nonterminal useless in grammar: useless3 [-Wother] + useless3: '3'; + ^^^^^^^^ +input.y:9.1-8: warning: nonterminal useless in grammar: useless4 [-Wother] + useless4: '4'; + ^^^^^^^^ +input.y:10.1-8: warning: nonterminal useless in grammar: useless5 [-Wother] + useless5: '5'; + ^^^^^^^^ +input.y:11.1-8: warning: nonterminal useless in grammar: useless6 [-Wother] + useless6: '6'; + ^^^^^^^^ +input.y:12.1-8: warning: nonterminal useless in grammar: useless7 [-Wother] + useless7: '7'; + ^^^^^^^^ +input.y:13.1-8: warning: nonterminal useless in grammar: useless8 [-Wother] + useless8: '8'; + ^^^^^^^^ +input.y:14.1-8: warning: nonterminal useless in grammar: useless9 [-Wother] + useless9: '9'; + ^^^^^^^^ +input.y:6.11-13: warning: rule useless in grammar [-Wother] + useless1: '1'; + ^^^ +input.y:7.11-13: warning: rule useless in grammar [-Wother] + useless2: '2'; + ^^^ +input.y:8.11-13: warning: rule useless in grammar [-Wother] + useless3: '3'; + ^^^ +input.y:9.11-13: warning: rule useless in grammar [-Wother] + useless4: '4'; + ^^^ +input.y:10.11-13: warning: rule useless in grammar [-Wother] + useless5: '5'; + ^^^ +input.y:11.11-13: warning: rule useless in grammar [-Wother] + useless6: '6'; + ^^^ +input.y:12.11-13: warning: rule useless in grammar [-Wother] + useless7: '7'; + ^^^ +input.y:13.11-13: warning: rule useless in grammar [-Wother] + useless8: '8'; + ^^^ +input.y:14.11-13: warning: rule useless in grammar [-Wother] + useless9: '9'; + ^^^ +]]) + AT_BISON_CHECK([[input.y]], 0, [], [[input.y: warning: 9 nonterminals useless in grammar [-Wother] input.y: warning: 9 rules useless in grammar [-Wother] @@ -238,6 +297,26 @@ non_productive: non_productive useless_token %% ]]) +AT_BISON_CHECK([[-fcaret not-reduced.y]], 0, [], +[[not-reduced.y: warning: 2 nonterminals useless in grammar [-Wother] +not-reduced.y: warning: 3 rules useless in grammar [-Wother] +not-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable [-Wother] + not_reachable: useful { /* A not reachable action. */ } + ^^^^^^^^^^^^^ +not-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive [-Wother] + | non_productive { /* A non productive action. */ } + ^^^^^^^^^^^^^^ +not-reduced.y:11.6-57: warning: rule useless in grammar [-Wother] + | non_productive { /* A non productive action. */ } + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +not-reduced.y:14.16-56: warning: rule useless in grammar [-Wother] + not_reachable: useful { /* A not reachable action. */ } + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +not-reduced.y:17.17-18.63: warning: rule useless in grammar [-Wother] + non_productive: non_productive useless_token + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +]]) + AT_BISON_CHECK([[not-reduced.y]], 0, [], [[not-reduced.y: warning: 2 nonterminals useless in grammar [-Wother] not-reduced.y: warning: 3 rules useless in grammar [-Wother] @@ -396,7 +475,7 @@ AT_TEST_LR_TYPE([[Single State Split]], [[%left 'a' // Conflict resolution renders state 12 unreachable for canonical LR(1). We // keep it so that the paser table diff is easier to code. -%define lr.keep-unreachable-states]], +%define lr.keep-unreachable-state]], [[ S: 'a' A 'a' /* rule 1 */ | 'b' A 'b' /* rule 2 */ @@ -437,7 +516,7 @@ dnl BISON-STDERR [], dnl TABLES -[[state 0 +[[State 0 0 $accept: . S $end 1 S: . 'a' A 'a' @@ -451,7 +530,7 @@ dnl TABLES S go to state 4 -state 1 +State 1 1 S: 'a' . A 'a' 4 A: . 'a' 'a' @@ -462,7 +541,7 @@ state 1 A go to state 6 -state 2 +State 2 2 S: 'b' . A 'b' 4 A: . 'a' 'a' @@ -473,7 +552,7 @@ state 2 A go to state 7 -state 3 +State 3 3 S: 'c' . c 4 A: . 'a' 'a' @@ -487,14 +566,14 @@ state 3 c go to state 10 -state 4 +State 4 0 $accept: S . $end $end shift, and go to state 11 -state 5 +State 5 4 A: 'a' . 'a' 5 | 'a' . ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[ @@ -505,21 +584,21 @@ state 5 Conflict between rule 5 and token 'a' resolved as reduce (%left 'a'). -state 6 +State 6 1 S: 'a' A . 'a' 'a' shift, and go to state 13 -state 7 +State 7 2 S: 'b' A . 'b' 'b' shift, and go to state 14 -state 8 +State 8 4 A: 'a' . 'a' 5 | 'a' . [$end] @@ -533,7 +612,7 @@ state 8 [[$default]])[ reduce using rule 5 (A) -state 9 +State 9 7 c: A .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -541,7 +620,7 @@ state 9 [[$default]])[ reduce using rule 7 (c) -state 10 +State 10 3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -549,14 +628,14 @@ state 10 [[$default]])[ reduce using rule 3 (S) -state 11 +State 11 0 $accept: S $end . $default accept -state 12 +State 12 4 A: 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[ @@ -564,7 +643,7 @@ state 12 [[$default]])[ reduce using rule 4 (A) -state 13 +State 13 1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -572,7 +651,7 @@ state 13 [[$default]])[ reduce using rule 1 (S) -state 14 +State 14 2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -580,7 +659,7 @@ state 14 [[$default]])[ reduce using rule 2 (S) -state 15 +State 15 6 c: 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -589,7 +668,7 @@ state 15 [[]], [[ -state 16 +State 16 4 A: 'a' . 'a' 5 | 'a' . ['b'] @@ -601,14 +680,14 @@ state 16 [[$default]])[ reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[ -state 17 +State 17 4 A: 'a' 'a' . [$end] $end reduce using rule 4 (A) -state 18 +State 18 4 A: 'a' 'a' . ['b'] @@ -629,7 +708,7 @@ AT_TEST_LR_TYPE([[Lane Split]], [[%left 'a' // Conflict resolution renders state 16 unreachable for canonical LR(1). We // keep it so that the paser table diff is easier to code. -%define lr.keep-unreachable-states]], +%define lr.keep-unreachable-state]], [[ /* Similar to the last test case set but two states must be split. */ S: 'a' A 'a' /* rule 1 */ @@ -653,7 +732,7 @@ dnl BISON-STDERR [], dnl TABLES -[[state 0 +[[State 0 0 $accept: . S $end 1 S: . 'a' A 'a' @@ -667,7 +746,7 @@ dnl TABLES S go to state 4 -state 1 +State 1 1 S: 'a' . A 'a' 4 A: . 'a' 'a' 'a' @@ -678,7 +757,7 @@ state 1 A go to state 6 -state 2 +State 2 2 S: 'b' . A 'b' 4 A: . 'a' 'a' 'a' @@ -689,7 +768,7 @@ state 2 A go to state 7 -state 3 +State 3 3 S: 'c' . c 4 A: . 'a' 'a' 'a' @@ -703,14 +782,14 @@ state 3 c go to state 10 -state 4 +State 4 0 $accept: S . $end $end shift, and go to state 11 -state 5 +State 5 4 A: 'a' . 'a' 'a' 5 | 'a' . 'a' @@ -718,21 +797,21 @@ state 5 'a' shift, and go to state 12 -state 6 +State 6 1 S: 'a' A . 'a' 'a' shift, and go to state 13 -state 7 +State 7 2 S: 'b' A . 'b' 'b' shift, and go to state 14 -state 8 +State 8 4 A: 'a' . 'a' 'a' 5 | 'a' . 'a' @@ -741,7 +820,7 @@ state 8 'a' shift, and go to state 15 -state 9 +State 9 7 c: A .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -749,7 +828,7 @@ state 9 [[$default]])[ reduce using rule 7 (c) -state 10 +State 10 3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -757,14 +836,14 @@ state 10 [[$default]])[ reduce using rule 3 (S) -state 11 +State 11 0 $accept: S $end . $default accept -state 12 +State 12 4 A: 'a' 'a' . 'a' 5 | 'a' 'a' . ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[ @@ -775,7 +854,7 @@ state 12 Conflict between rule 5 and token 'a' resolved as reduce (%left 'a'). -state 13 +State 13 1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -783,7 +862,7 @@ state 13 [[$default]])[ reduce using rule 1 (S) -state 14 +State 14 2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -791,7 +870,7 @@ state 14 [[$default]])[ reduce using rule 2 (S) -state 15 +State 15 4 A: 'a' 'a' . 'a' 5 | 'a' 'a' . [$end] @@ -805,7 +884,7 @@ state 15 [[$default]])[ reduce using rule 5 (A) -state 16 +State 16 4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[ @@ -813,7 +892,7 @@ state 16 [[$default]])[ reduce using rule 4 (A) -state 17 +State 17 6 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -822,7 +901,7 @@ state 17 [[]], [[ -state 18 +State 18 4 A: 'a' . 'a' 'a' 5 | 'a' . 'a' @@ -831,7 +910,7 @@ state 18 [[19]])[ -state 19]AT_COND_CASE([[canonical LR]], [[ +State 19]AT_COND_CASE([[canonical LR]], [[ 4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -839,7 +918,7 @@ state 19]AT_COND_CASE([[canonical LR]], [[ [[$default]])[ reduce using rule 4 (A) -state 20]])[ +State 20]])[ 4 A: 'a' 'a' . 'a' 5 | 'a' 'a' . ['b'] @@ -851,7 +930,7 @@ state 20]])[ [[$default]])[ reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[ -state 21 +State 21 4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ ['b']]])[ @@ -873,7 +952,7 @@ AT_TEST_LR_TYPE([[Complex Lane Split]], [[%left 'a' // Conflict resolution renders state 16 unreachable for canonical LR(1). We // keep it so that the paser table diff is easier to code. -%define lr.keep-unreachable-states]], +%define lr.keep-unreachable-state]], [[ /* Similar to the last test case set but forseeing the S/R conflict from the first state that must be split is becoming difficult. Imagine if B were @@ -900,7 +979,7 @@ dnl BISON-STDERR [], dnl TABLES -[[state 0 +[[State 0 0 $accept: . S $end 1 S: . 'a' A 'a' @@ -914,7 +993,7 @@ dnl TABLES S go to state 4 -state 1 +State 1 1 S: 'a' . A 'a' 4 A: . 'a' 'a' B @@ -924,7 +1003,7 @@ state 1 A go to state 6 -state 2 +State 2 2 S: 'b' . A 'b' 4 A: . 'a' 'a' B @@ -934,7 +1013,7 @@ state 2 A go to state 7 -state 3 +State 3 3 S: 'c' . c 4 A: . 'a' 'a' B @@ -947,35 +1026,35 @@ state 3 c go to state 10 -state 4 +State 4 0 $accept: S . $end $end shift, and go to state 11 -state 5 +State 5 4 A: 'a' . 'a' B 'a' shift, and go to state 12 -state 6 +State 6 1 S: 'a' A . 'a' 'a' shift, and go to state 13 -state 7 +State 7 2 S: 'b' A . 'b' 'b' shift, and go to state 14 -state 8 +State 8 4 A: 'a' . 'a' B 7 c: 'a' . 'a' 'b' @@ -983,7 +1062,7 @@ state 8 'a' shift, and go to state 15 -state 9 +State 9 8 c: A .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -991,7 +1070,7 @@ state 9 [[$default]])[ reduce using rule 8 (c) -state 10 +State 10 3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -999,14 +1078,14 @@ state 10 [[$default]])[ reduce using rule 3 (S) -state 11 +State 11 0 $accept: S $end . $default accept -state 12 +State 12 4 A: 'a' 'a' . B 5 B: . 'a' @@ -1020,7 +1099,7 @@ state 12 Conflict between rule 6 and token 'a' resolved as reduce (%left 'a'). -state 13 +State 13 1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1028,7 +1107,7 @@ state 13 [[$default]])[ reduce using rule 1 (S) -state 14 +State 14 2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1036,7 +1115,7 @@ state 14 [[$default]])[ reduce using rule 2 (S) -state 15 +State 15 4 A: 'a' 'a' . B 5 B: . 'a' @@ -1053,7 +1132,7 @@ state 15 B go to state ]AT_COND_CASE([[canonical LR]], [[21]], [[17]])[ -state 16 +State 16 5 B: 'a' .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[ @@ -1061,7 +1140,7 @@ state 16 [[$default]])[ reduce using rule 5 (B) -state 17 +State 17 4 A: 'a' 'a' B .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[ @@ -1069,7 +1148,7 @@ state 17 [[$default]])[ reduce using rule 4 (A) -state 18 +State 18 7 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1077,7 +1156,7 @@ state 18 [[$default]])[ reduce using rule 7 (c)]AT_COND_CASE([[LALR]], [], [[ -state 19 +State 19 4 A: 'a' . 'a' B @@ -1085,21 +1164,21 @@ state 19 [[20]])[ -state 20]AT_COND_CASE([[canonical LR]], [[ +State 20]AT_COND_CASE([[canonical LR]], [[ 5 B: 'a' . [$end] $end reduce using rule 5 (B) -state 21 +State 21 4 A: 'a' 'a' B . [$end] $end reduce using rule 4 (A) -state 22]])[ +State 22]])[ 4 A: 'a' 'a' . B 5 B: . 'a' @@ -1114,14 +1193,14 @@ state 22]])[ B go to state ]AT_COND_CASE([[canonical LR]], [[24 -state 23 +State 23 5 B: 'a' . ['b'] 'b' reduce using rule 5 (B) -state 24 +State 24 4 A: 'a' 'a' B . ['b'] @@ -1139,7 +1218,7 @@ dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR ]])]) AT_TEST_LR_TYPE([[Split During Added Lookahead Propagation]], -[[%define lr.keep-unreachable-states]], +[[%define lr.keep-unreachable-state]], [[ /* The partial state chart diagram below is for LALR(1). State 0 is the start state. States are iterated for successor construction in numerical order. @@ -1191,11 +1270,11 @@ dnl INPUT dnl BISON-STDERR [AT_COND_CASE([[LALR]], -[[input.y: conflicts: 1 reduce/reduce +[[input.y: warning: 1 reduce/reduce conflict [-Wconflicts-rr] ]], [])], dnl TABLES -[[state 0 +[[State 0 0 $accept: . S $end 1 S: . 'a' A 'f' @@ -1213,7 +1292,7 @@ dnl TABLES S go to state 4 -state 1 +State 1 1 S: 'a' . A 'f' 2 | 'a' . B @@ -1226,7 +1305,7 @@ state 1 B go to state 7 -state 2 +State 2 3 S: 'b' . A 'f' 4 | 'b' . B 'g' @@ -1240,7 +1319,7 @@ state 2 B go to state 10 -state 3 +State 3 6 S: 'c' . 'c' A 'g' 7 | 'c' . 'c' B @@ -1248,14 +1327,14 @@ state 3 'c' shift, and go to state 11 -state 4 +State 4 0 $accept: S . $end $end shift, and go to state 12 -state 5 +State 5 8 A: 'd' . 'e' 9 B: 'd' . 'e' @@ -1265,14 +1344,14 @@ state 5 [[20]])[ -state 6 +State 6 1 S: 'a' A . 'f' 'f' shift, and go to state 14 -state 7 +State 7 2 S: 'a' B .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1280,7 +1359,7 @@ state 7 [[$default]])[ reduce using rule 2 (S) -state 8 +State 8 5 S: 'b' 'd' . [$end] 8 A: 'd' . 'e' @@ -1293,21 +1372,21 @@ state 8 [[$default]])[ reduce using rule 5 (S) -state 9 +State 9 3 S: 'b' A . 'f' 'f' shift, and go to state 15 -state 10 +State 10 4 S: 'b' B . 'g' 'g' shift, and go to state 16 -state 11 +State 11 6 S: 'c' 'c' . A 'g' 7 | 'c' 'c' . B @@ -1321,14 +1400,14 @@ state 11 B go to state 18 -state 12 +State 12 0 $accept: S $end . $default accept]AT_COND_CASE([[LALR]], [[ -state 13 +State 13 8 A: 'd' 'e' . ['f', 'g'] 9 B: 'd' 'e' . [$end, 'g'] @@ -1339,7 +1418,7 @@ state 13 $default reduce using rule 8 (A)]], [[ -state 13 +State 13 8 A: 'd' 'e' . ['f'] 9 B: 'd' 'e' . ]AT_COND_CASE([[canonical LR]], [[[$end]]], [[['g']]])[ @@ -1350,7 +1429,7 @@ state 13 [[$default]])[ reduce using rule 8 (A)]])[ -state 14 +State 14 1 S: 'a' A 'f' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1358,7 +1437,7 @@ state 14 [[$default]])[ reduce using rule 1 (S) -state 15 +State 15 3 S: 'b' A 'f' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1366,7 +1445,7 @@ state 15 [[$default]])[ reduce using rule 3 (S) -state 16 +State 16 4 S: 'b' B 'g' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1374,14 +1453,14 @@ state 16 [[$default]])[ reduce using rule 4 (S) -state 17 +State 17 6 S: 'c' 'c' A . 'g' 'g' shift, and go to state 19 -state 18 +State 18 7 S: 'c' 'c' B .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1389,7 +1468,7 @@ state 18 [[$default]])[ reduce using rule 7 (S) -state 19 +State 19 6 S: 'c' 'c' A 'g' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[ @@ -1398,7 +1477,7 @@ state 19 [[]], [[ -state 20]AT_COND_CASE([[canonical LR]], [[ +State 20]AT_COND_CASE([[canonical LR]], [[ 8 A: 'd' 'e' . ['f'] 9 B: 'd' 'e' . ['g'] @@ -1407,7 +1486,7 @@ state 20]AT_COND_CASE([[canonical LR]], [[ 'g' reduce using rule 9 (B) -state 21 +State 21 8 A: 'd' . 'e' 9 B: 'd' . 'e' @@ -1415,7 +1494,7 @@ state 21 'e' shift, and go to state 22 -state 22 +State 22 8 A: 'd' 'e' . ['g'] 9 B: 'd' 'e' . [$end] @@ -1443,28 +1522,28 @@ dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR ## ------------------------------- ## -## %define lr.default-reductions. ## +## %define lr.default-reduction. ## ## ------------------------------- ## # AT_TEST_LR_DEFAULT_REDUCTIONS(GRAMMAR, INPUT, TABLES) # ----------------------------------------------------- m4_define([AT_TEST_LR_DEFAULT_REDUCTIONS], [ -AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]], +AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reduction]], [[most]], [[]], [[]], [$1], [$2], [[]], [$3]) -AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions most]], +AT_TEST_TABLES_AND_PARSE([[%define lr.default-reduction most]], [[most]], [[]], - [[%define lr.default-reductions most]], + [[%define lr.default-reduction most]], [$1], [$2], [[]], [$3]) -AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]], +AT_TEST_TABLES_AND_PARSE([[%define lr.default-reduction consistent]], [[consistent]], [[]], - [[%define lr.default-reductions consistent]], + [[%define lr.default-reduction consistent]], [$1], [$2], [[]], [$3]) -AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions accepting]], +AT_TEST_TABLES_AND_PARSE([[%define lr.default-reduction accepting]], [[accepting]], [[]], - [[%define lr.default-reductions accepting]], + [[%define lr.default-reduction accepting]], [$1], [$2], [[]], [$3]) ]) @@ -1491,7 +1570,7 @@ c: ; ]], dnl Visit each state mentioned above. [['a', 'a']], -[[state 0 +[[State 0 0 $accept: . start $end 1 start: . a b @@ -1505,7 +1584,7 @@ dnl Visit each state mentioned above. a go to state 3 -state 1 +State 1 4 a: 'a' .]AT_COND_CASE([[accepting]], [[ [$end, 'a', 'b'] @@ -1516,14 +1595,14 @@ state 1 $default reduce using rule 4 (a)]])[ -state 2 +State 2 0 $accept: start . $end $end shift, and go to state 4 -state 3 +State 3 1 start: a . b 2 | a . b 'a' @@ -1542,14 +1621,14 @@ state 3 c go to state 6 -state 4 +State 4 0 $accept: start $end . $default accept -state 5 +State 5 1 start: a b . [$end] 2 | a b . 'a' @@ -1560,14 +1639,14 @@ state 5 [[$end]])[ reduce using rule 1 (start) -state 6 +State 6 3 start: a c . 'b' 'b' shift, and go to state 8 -state 7 +State 7 2 start: a b 'a' .]AT_COND_CASE([[accepting]], [[ [$end] @@ -1576,7 +1655,7 @@ state 7 $default reduce using rule 2 (start)]])[ -state 8 +State 8 3 start: a c 'b' .]AT_COND_CASE([[accepting]], [[ [$end]