X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/9757c359efc607b6d9e4675447a7b1afd873bc6e..f4101aa612b2e2783ee0a78b88fb0d5f481ba363:/tests/reduce.at diff --git a/tests/reduce.at b/tests/reduce.at index 7dc939ed..9e012481 100644 --- a/tests/reduce.at +++ b/tests/reduce.at @@ -1,20 +1,18 @@ # Exercising Bison Grammar Reduction. -*- Autotest -*- -# Copyright 2001 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. -# This program is free software; you can redistribute it and/or modify +# 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 -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program. If not, see . AT_BANNER([[Grammar Reduction.]]) @@ -27,7 +25,7 @@ AT_SETUP([Useless Terminals]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %token useless1 %token useless2 @@ -47,7 +45,7 @@ exp: useful; AT_CHECK([[bison input.y]]) AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, -[[Terminals which are not used: +[[Terminals which are not used useless1 useless2 useless3 @@ -71,7 +69,7 @@ AT_SETUP([Useless Nonterminals]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %nterm useless1 %nterm useless2 @@ -102,7 +100,7 @@ input.y:12.8-15: warning: useless nonterminal: useless9 ]]) AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, -[[Useless nonterminals: +[[Useless nonterminals useless1 useless2 useless3 @@ -128,7 +126,7 @@ AT_KEYWORDS([report]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %token useful %% exp: useful; @@ -154,19 +152,19 @@ input.y:11.1-8: warning: useless nonterminal: useless6 input.y:12.1-8: warning: useless nonterminal: useless7 input.y:13.1-8: warning: useless nonterminal: useless8 input.y:14.1-8: warning: useless nonterminal: useless9 -input.y:6.9-13: warning: useless rule: useless1: '1' -input.y:7.9-13: warning: useless rule: useless2: '2' -input.y:8.9-13: warning: useless rule: useless3: '3' -input.y:9.9-13: warning: useless rule: useless4: '4' -input.y:10.9-13: warning: useless rule: useless5: '5' -input.y:11.9-13: warning: useless rule: useless6: '6' -input.y:12.9-13: warning: useless rule: useless7: '7' -input.y:13.9-13: warning: useless rule: useless8: '8' -input.y:14.9-13: warning: useless rule: useless9: '9' +input.y:6.11-13: warning: useless rule: useless1: '1' +input.y:7.11-13: warning: useless rule: useless2: '2' +input.y:8.11-13: warning: useless rule: useless3: '3' +input.y:9.11-13: warning: useless rule: useless4: '4' +input.y:10.11-13: warning: useless rule: useless5: '5' +input.y:11.11-13: warning: useless rule: useless6: '6' +input.y:12.11-13: warning: useless rule: useless7: '7' +input.y:13.11-13: warning: useless rule: useless8: '8' +input.y:14.11-13: warning: useless rule: useless9: '9' ]]) AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, -[[Useless nonterminals: +[[Useless nonterminals useless1 useless2 useless3 @@ -176,7 +174,7 @@ AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, useless7 useless8 useless9 -Terminals which are not used: +Terminals which are not used '1' '2' '3' @@ -221,7 +219,7 @@ AT_DATA([[not-reduced.y]], /* A useful one. */ %token useful %verbose -%output="not-reduced.c" +%output "not-reduced.c" %% @@ -242,16 +240,16 @@ AT_CHECK([[bison not-reduced.y]], 0, [], [[not-reduced.y: warning: 2 useless nonterminals and 3 useless rules not-reduced.y:14.1-13: warning: useless nonterminal: not_reachable not-reduced.y:11.6-19: warning: useless nonterminal: non_productive -not-reduced.y:11.4-57: warning: useless rule: exp: non_productive -not-reduced.y:14.14-56: warning: useless rule: not_reachable: useful -not-reduced.y:17.15-18.63: warning: useless rule: non_productive: non_productive useless_token +not-reduced.y:11.6-57: warning: useless rule: exp: non_productive +not-reduced.y:14.16-56: warning: useless rule: not_reachable: useful +not-reduced.y:17.17-18.63: warning: useless rule: non_productive: non_productive useless_token ]]) AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' not-reduced.output]], 0, -[[Useless nonterminals: +[[Useless nonterminals not_reachable non_productive -Terminals which are not used: +Terminals which are not used useless_token Useless rules 2 exp: non_productive @@ -267,7 +265,7 @@ AT_DATA([[reduced.y]], /* A useful one. */ %token useful %verbose -%output="reduced.c" +%output "reduced.c" %% @@ -304,7 +302,7 @@ AT_KEYWORDS([report]) AT_DATA([[input.y]], [[%verbose -%output="input.c" +%output "input.c" %token useful %% exp: useful | underivable; @@ -316,13 +314,13 @@ AT_CHECK([[bison input.y]], 0, [], [[input.y: warning: 2 useless nonterminals and 3 useless rules input.y:5.15-25: warning: useless nonterminal: underivable input.y:6.14-24: warning: useless nonterminal: indirection -input.y:5.13-25: warning: useless rule: exp: underivable -input.y:6.12-24: warning: useless rule: underivable: indirection -input.y:7.12-24: warning: useless rule: indirection: underivable +input.y:5.15-25: warning: useless rule: exp: underivable +input.y:6.14-24: warning: useless rule: underivable: indirection +input.y:7.14-24: warning: useless rule: indirection: underivable ]]) AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0, -[[Useless nonterminals: +[[Useless nonterminals underivable indirection Useless rules @@ -332,3 +330,24 @@ Useless rules ]]) AT_CLEANUP + + + +## ---------------- ## +## Empty Language. ## +## ---------------- ## + +AT_SETUP([Empty Language]) + +AT_DATA([[input.y]], +[[%output "input.c" +%% +exp: exp; +]]) + +AT_CHECK([[bison input.y]], 1, [], +[[input.y: warning: 2 useless nonterminals and 2 useless rules +input.y:3.1-3: fatal error: start symbol exp does not derive any sentence +]]) + +AT_CLEANUP