X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/06ec0105b12cdfa2994283e345154e6720354808..8bf276d8207dd31432305002f3a9e81c80ca62af:/tests/reduce.at diff --git a/tests/reduce.at b/tests/reduce.at index 2d9093f0..c28635eb 100644 --- a/tests/reduce.at +++ b/tests/reduce.at @@ -1,6 +1,6 @@ # Exercising Bison Grammar Reduction. -*- Autotest -*- -# Copyright (C) 2001-2002, 2007-2012 Free Software Foundation, Inc. +# Copyright (C) 2001-2002, 2007-2015 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -142,29 +142,66 @@ useless8: '8'; useless9: '9'; ]]) -AT_BISON_CHECK([[input.y]], 0, [], +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] -input.y:6.11-13: warning: rule useless in grammar: useless1: '1' [-Wother] -input.y:7.11-13: warning: rule useless in grammar: useless2: '2' [-Wother] -input.y:8.11-13: warning: rule useless in grammar: useless3: '3' [-Wother] -input.y:9.11-13: warning: rule useless in grammar: useless4: '4' [-Wother] -input.y:10.11-13: warning: rule useless in grammar: useless5: '5' [-Wother] -input.y:11.11-13: warning: rule useless in grammar: useless6: '6' [-Wother] -input.y:12.11-13: warning: rule useless in grammar: useless7: '7' [-Wother] -input.y:13.11-13: warning: rule useless in grammar: useless8: '8' [-Wother] -input.y:14.11-13: warning: rule useless in grammar: useless9: '9' [-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_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, [[Nonterminals useless in grammar useless1 @@ -238,14 +275,24 @@ non_productive: non_productive useless_token %% ]]) -AT_BISON_CHECK([[not-reduced.y]], 0, [], +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] -not-reduced.y:11.6-57: warning: rule useless in grammar: exp: non_productive [-Wother] -not-reduced.y:14.16-56: warning: rule useless in grammar: not_reachable: useful [-Wother] -not-reduced.y:17.17-18.63: warning: rule useless in grammar: non_productive: non_productive useless_token [-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_CHECK([[sed -n '/^Grammar/q;/^$/!p' not-reduced.output]], 0, @@ -318,9 +365,9 @@ AT_BISON_CHECK([[input.y]], 0, [], input.y: warning: 3 rules useless in grammar [-Wother] input.y:5.15-25: warning: nonterminal useless in grammar: underivable [-Wother] input.y:6.14-24: warning: nonterminal useless in grammar: indirection [-Wother] -input.y:5.15-25: warning: rule useless in grammar: exp: underivable [-Wother] -input.y:6.14-24: warning: rule useless in grammar: underivable: indirection [-Wother] -input.y:7.14-24: warning: rule useless in grammar: indirection: underivable [-Wother] +input.y:5.15-25: warning: rule useless in grammar [-Wother] +input.y:6.14-24: warning: rule useless in grammar [-Wother] +input.y:7.14-24: warning: rule useless in grammar [-Wother] ]]) AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, @@ -886,7 +933,7 @@ S: 'a' A 'a' A: 'a' 'a' B ; B: 'a' - | %prec 'a' + | %empty %prec 'a' ; c: 'a' 'a' 'b' | A @@ -1010,7 +1057,7 @@ State 12 4 A: 'a' 'a' . B 5 B: . 'a' - 6 | . ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[ + 6 | . %empty ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[ ]AT_COND_CASE([[canonical LR]], [['a']], [[$default]])[ reduce using rule 6 (B) @@ -1040,7 +1087,7 @@ State 15 4 A: 'a' 'a' . B 5 B: . 'a' - 6 | . [$end] + 6 | . %empty [$end] 7 c: 'a' 'a' . 'b' 'a' shift, and go to state ]AT_COND_CASE([[canonical LR]], [[20]], @@ -1103,7 +1150,7 @@ State 22]])[ 4 A: 'a' 'a' . B 5 B: . 'a' - 6 | . ['b'] + 6 | . %empty ['b'] 'a' shift, and go to state ]AT_COND_CASE([[canonical LR]], [[23]], [[16]])[ @@ -1486,8 +1533,8 @@ a: 'a' ; and multiple reductions. The first reduction has more lookaheads than the second, so the first should always be preferred as the default reduction if enabled. The second reduction has one lookahead. */ -b: ; -c: ; +b: %empty; +c: %empty; ]], dnl Visit each state mentioned above. [['a', 'a']], @@ -1528,8 +1575,8 @@ State 3 1 start: a . b 2 | a . b 'a' 3 | a . c 'b' - 5 b: . [$end, 'a'] - 6 c: . ['b']]AT_COND_CASE([[most]], [[ + 5 b: . %empty [$end, 'a'] + 6 c: . %empty ['b']]AT_COND_CASE([[most]], [[ 'b' reduce using rule 6 (c) $default reduce using rule 5 (b)]], [[