X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/bf35c71c5827d735c125ee25b048eabf40960a55..ac3f2e33b464a168b84ddb8a2da2195a6656dd19:/tests/regression.at diff --git a/tests/regression.at b/tests/regression.at index 65d4ac23..9aaedde0 100644 --- a/tests/regression.at +++ b/tests/regression.at @@ -1,7 +1,6 @@ # Bison Regressions. -*- Autotest -*- -# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, -# 2010 Free Software Foundation, Inc. +# Copyright (C) 2001-2012 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 @@ -163,7 +162,7 @@ AT_CLEANUP AT_SETUP([Braces parsing]) AT_DATA([input.y], -[[/* Bison used to swallow the character after `}'. */ +[[/* Bison used to swallow the character after '}'. */ %% exp: { tests = {{{{{{{{{{}}}}}}}}}}; }; @@ -185,7 +184,7 @@ AT_CLEANUP AT_SETUP([Duplicate string]) AT_DATA([input.y], -[[/* `Bison -v' used to dump core when two tokens are defined with the same +[[/* 'Bison -v' used to dump core when two tokens are defined with the same string, as LE and GE below. */ %token NUM @@ -198,7 +197,7 @@ exp: '(' exp ')' | NUM ; ]]) AT_BISON_CHECK([-v -o input.c input.y], 0, [], -[[input.y:6.8-14: warning: symbol `"<="' used more than once as a literal string +[[input.y:6.8-14: warning: symbol "<=" used more than once as a literal string ]]) AT_CLEANUP @@ -388,13 +387,14 @@ default: 'a' } ]]) AT_BISON_CHECK([input.y], [1], [], -[[input.y:2.1: invalid character: `?' -input.y:3.14: invalid character: `}' -input.y:4.1: invalid character: `%' -input.y:4.2: invalid character: `&' -input.y:5.1-17: invalid directive: `%a-does-not-exist' -input.y:6.1-2: invalid directive: `%-' -input.y:7.1-8.0: missing `%}' at end of file +[[input.y:2.1: invalid character: '?' +input.y:3.14: invalid character: '}' +input.y:4.1: invalid character: '%' +input.y:4.2: invalid character: '&' +input.y:5.1-17: invalid directive: '%a-does-not-exist' +input.y:6.1: invalid character: '%' +input.y:6.2: invalid character: '-' +input.y:7.1-8.0: missing '%}' at end of file input.y:7.1-8.0: syntax error, unexpected %{...%} ]]) @@ -428,7 +428,7 @@ AT_CLEANUP AT_SETUP([Token definitions]) -# Bison managed, when fed with `%token 'f' "f"' to #define 'f'! +# Bison managed, when fed with '%token 'f' "f"' to #define 'f'! AT_DATA_GRAMMAR([input.y], [%{ #include @@ -475,7 +475,7 @@ main (void) # the user specification is eliminated. AT_BISON_CHECK([-o input.c input.y], [[0]], [[]], [[input.y:22.8-14: warning: symbol SPECIAL redeclared -input.y:22.8-63: warning: symbol `"\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!"' used more than once as a literal string +input.y:22.8-63: warning: symbol "\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!" used more than once as a literal string ]]) AT_COMPILE([input]) @@ -524,7 +524,7 @@ AT_CLEANUP # The generation of the reduction was once wrong in Bison, and made it # miss some reductions. In the following test case, the reduction on -# `undef_id_tok' in state 1 was missing. This is stripped down from +# 'undef_id_tok' in state 1 was missing. This is stripped down from # the actual web2c.y. AT_SETUP([Web2c Report]) @@ -532,7 +532,7 @@ AT_SETUP([Web2c Report]) AT_KEYWORDS([report]) AT_DATA([input.y], -[[%token undef_id_tok const_id_tok +[[%token undef_id_tok const_id_tok %start CONST_DEC_PART @@ -542,12 +542,12 @@ CONST_DEC_PART: ; CONST_DEC_LIST: - CONST_DEC + CONST_DEC | CONST_DEC_LIST CONST_DEC ; CONST_DEC: - { } undef_id_tok '=' const_id_tok ';' + { } undef_id_tok '=' const_id_tok ';' ; %% ]]) @@ -686,7 +686,7 @@ AT_CLEANUP ## Web2c Actions. ## ## --------------- ## -# The generation of the mapping `state -> action' was once wrong in +# The generation of the mapping 'state -> action' was once wrong in # extremely specific situations. web2c.y exhibits this situation. # Below is a stripped version of the grammar. It looks like one can # simplify it further, but just don't: it is tuned to exhibit a bug, @@ -1062,7 +1062,7 @@ static int yylex (void); start: { printf ("Bison would once convert this action to a midrule because of the" - " subsequent braced code.\n"); + " subsequent braced code.\n"); } ; @@ -1148,7 +1148,7 @@ AT_SETUP([[Extra lookahead sets in report]]) # state's one item that (1) is associated with the same rule as the reduction # and (2) has its dot at the end of its RHS. Previously, Bison also # erroneously printed the lookahead set next to all of the state's other items -# associated with the same rule. This bug affected only the `.output' file and +# associated with the same rule. This bug affected only the '.output' file and # not the generated parser source code. AT_DATA([[input.y]], @@ -1196,12 +1196,15 @@ AT_DATA_GRAMMAR([input.y], %} %error-verbose +%right END 0 %left TK1 1 TK2 2 "tok alias" 3 %% -start: TK1 sr_conflict "tok alias" ; - +start: + TK1 sr_conflict "tok alias" + | start %prec END + ; sr_conflict: TK2 | TK2 "tok alias" @@ -1231,7 +1234,8 @@ main (void) ]]) AT_BISON_CHECK([[-o input.c input.y]], [[0]],, -[[input.y:24.5-19: warning: rule useless in parser due to conflicts: sr_conflict: TK2 "tok alias" +[[input.y:23.5-19: warning: rule useless in parser due to conflicts: start: start +input.y:27.5-19: warning: rule useless in parser due to conflicts: sr_conflict: TK2 "tok alias" ]]) AT_COMPILE([[input]]) AT_PARSER_CHECK([[./input]]) @@ -1254,10 +1258,10 @@ AT_SETUP([[parse-gram.y: LALR = IELR]]) # output files have the same name. [cp $abs_top_srcdir/src/parse-gram.y input.y] AT_BISON_CHECK([[-o input.c -Dlr.type=lalr input.y]]) -[mv input.c lalr.c] +[mv input.c expout] AT_BISON_CHECK([[-o input.c -Dlr.type=ielr input.y]]) [mv input.c ielr.c] -AT_CHECK([[diff -u lalr.c ielr.c]]) +AT_CHECK([[cat ielr.c]], [[0]], [[expout]]) AT_CLEANUP @@ -1498,6 +1502,8 @@ AT_DATA_GRAMMAR([input.y], // default reductions in inconsistent states // v v v v v v v v v v v v v v S: A B A A B A A A A B A A A A A A A B C C A A A A A A A A A A A A B ; +// ^ ^ ^ +// LAC reallocs A: 'a' | /*empty*/ { printf ("inconsistent default reduction\n"); } ; B: 'b' ; @@ -1527,9 +1533,8 @@ main (void) } ]]) -# Give exactly the right amount of memory to be sure there's no -# off-by-one error, for example. -AT_BISON_CHECK([[-Dparse.lac=full -Dparse.lac.es-capacity=12 \ +AT_BISON_CHECK([[-Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \ + -Dparse.lac.memory-trace=full \ -t -o input.c input.y]], [[0]], [], [[input.y: conflicts: 21 shift/reduce ]]) @@ -1552,6 +1557,11 @@ AT_CHECK([[perl -0777 -ne 'print s/inconsistent default reduction//g;' \ AT_CHECK([[perl -0777 -ne 'print s/\bconsistent default reduction//g;' \ < stdout.txt || exit 77]], [[0]], [[2]]) +# Check number of reallocs to be sure reallocated memory isn't somehow +# lost between LAC invocations. +AT_CHECK([[perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \ + || exit 77]], [[0]], [[3]]) + AT_BISON_OPTION_POPDEFS ]) @@ -1579,6 +1589,7 @@ AT_DATA_GRAMMAR([input.y], #include void yyerror (char const *); int yylex (void); + #define YYMAXDEPTH 8 } %error-verbose @@ -1611,7 +1622,7 @@ main (void) } ]]) -AT_BISON_CHECK([[-Dparse.lac=full -Dparse.lac.es-capacity=8 \ +AT_BISON_CHECK([[-Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \ -t -o input.c input.y]], [[0]], [], [[input.y: conflicts: 8 shift/reduce ]]) @@ -1626,7 +1637,7 @@ AT_PARSER_CHECK([[./input]], [[2]], [[]], Entering state 0 Reading a token: Now at end of input. LAC: initial context established for $end -LAC: checking lookahead $end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max stack size exceeded) +LAC: checking lookahead $end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max size exceeded) memory exhausted Cleanup: discarding lookahead token $end () Stack now 0 @@ -1642,7 +1653,7 @@ Reading a token: Next token is token $undefined () LAC: initial context established for $undefined LAC: checking lookahead $undefined: Always Err Constructing syntax error message -LAC: checking lookahead $end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max stack size exceeded) +LAC: checking lookahead $end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max size exceeded) syntax error memory exhausted Cleanup: discarding lookahead token $undefined ()