X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/a3cb6248932cfea1850ac4b981be80b36a98cb68..cea1469d47457150f9643ef3e5c21154b0eba1db:/tests/calc.at?ds=inline diff --git a/tests/calc.at b/tests/calc.at index 27598e61..db92f700 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -1,5 +1,7 @@ # Simple calculator. -*- Autotest -*- -# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + +# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 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 @@ -13,8 +15,8 @@ # 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. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. ## ---------------------------------------------------- ## ## Compile the grammar described in the documentation. ## @@ -66,7 +68,7 @@ static int global_count = 0; %{ static int power (int base, int exponent); -]AT_LALR1_CC_IF([typedef yy::Location YYLTYPE;], +]AT_LALR1_CC_IF([typedef yy::location YYLTYPE;], [/* yyerror receives the location if: - %location & %pure & %glr - %location & %pure & %yacc & %parse-param. */ @@ -128,15 +130,16 @@ static FILE *yyin; ]AT_LALR1_CC_IF( [/* A C++ error reporting function. */ void -yy::Parser::error_ () +yy::parser::error (const location& l, const std::string& m) { - std::cerr << AT_LOCATION_IF([location << ": " << ])message << std::endl; + (void) l; + std::cerr << AT_LOCATION_IF([l << ": " << ])m << std::endl; } int yyparse (AT_PARAM_IF([semantic_value *result, int *count])) { - yy::Parser parser[]AT_PARAM_IF([ (result, count)]); + yy::parser parser[]AT_PARAM_IF([ (result, count)]); parser.set_debug_level (!!YYDEBUG); return parser.parse (); } @@ -299,7 +302,11 @@ main (int argc, const char **argv) int count = 0; int status; - alarm (10); + /* This used to be alarm (10), but that isn't enough time for + a July 1995 vintage DEC Alphastation 200 4/100 system, + according to Nelson H. F. Beebe. 100 seconds is enough. */ + alarm (100); + if (argc == 2) yyin = fopen (argv[1], "r"); else @@ -460,9 +467,9 @@ _AT_CHECK_CALC([$1], # Some syntax errors. _AT_CHECK_CALC_ERROR([$1], [1], [0 0], [13], - [1.2: syntax error, unexpected "number"]) + [1.2: syntax error, unexpected number]) _AT_CHECK_CALC_ERROR([$1], [1], [1//2], [18], - [1.2: syntax error, unexpected '/', expecting "number" or '-' or '(' or '!']) + [1.2: syntax error, unexpected '/', expecting number or '-' or '(' or '!']) _AT_CHECK_CALC_ERROR([$1], [1], [error], [5], [1.0: syntax error, unexpected $undefined]) _AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [26], @@ -473,8 +480,8 @@ _AT_CHECK_CALC_ERROR([$1], [1], [16], [2.0: syntax error, unexpected '+']) # Exercise error messages with EOF: work on an empty file. -_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5], - [1.0: syntax error, unexpected "end of input"]) +_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [4], + [1.0: syntax error, unexpected end of input]) # Exercise the error token: without it, we die at the first error, # hence be sure to @@ -495,20 +502,20 @@ _AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5], _AT_CHECK_CALC_ERROR([$1], [0], [() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1], [188], -[1.1: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!' -1.17: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!' -1.22: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!' -1.40: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!' +[1.1: syntax error, unexpected ')', expecting number or '-' or '(' or '!' +1.17: syntax error, unexpected ')', expecting number or '-' or '(' or '!' +1.22: syntax error, unexpected '*', expecting number or '-' or '(' or '!' +1.40: syntax error, unexpected '*', expecting number or '-' or '(' or '!' calc: error: 4444 != 1]) # The same, but this time exercising explicitly triggered syntax errors. # POSIX says the look-ahead causing the error should not be discarded. _AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [75], -[1.9: syntax error, unexpected "number" +[1.9: syntax error, unexpected number calc: error: 2222 != 1]) _AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85], -[1.3: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!' -1.11: syntax error, unexpected "number" +[1.3: syntax error, unexpected '*', expecting number or '-' or '(' or '!' +1.11: syntax error, unexpected number calc: error: 2222 != 1]) AT_BISON_OPTION_POPDEFS