X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/dcd5344dcde3ddc4761867134e6f8cc7b945ce1c..e35cd6def7a19423a5f0fc566d844f6019df111a:/tests/calc.at diff --git a/tests/calc.at b/tests/calc.at index 3aab8681..f72836ee 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -178,18 +178,7 @@ read_signed_integer (]AT_YYLEX_FORMALS[) ]AT_YYLEX_PROTOTYPE[ { - static int init = 1; int c; - - if (init) - { - init = 0; -]AT_LOCATION_IF([ - AT_LOC_LAST_COLUMN = 1; - AT_LOC_LAST_LINE = 1; -])[ - } - /* Skip current token, then white spaces. */ do { @@ -261,6 +250,8 @@ AT_SKEL_CC_IF( { semantic_value ival; }; +%printer { ]AT_SKEL_CC_IF([[yyoutput << $$]], + [[fprintf (yyoutput, "%d", $$)]])[; } ; %code provides { @@ -280,24 +271,16 @@ AT_SKEL_CC_IF( FILE *input; static int power (int base, int exponent); -]AT_SKEL_CC_IF(, -[static void yyerror (AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ]) - AT_PARAM_IF([semantic_value *result, int *count, ]) - const char *s - );])[ +]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE_EXTERN[ } -]AT_SKEL_CC_IF([AT_LOCATION_TYPE_IF([], [[ -/* The lalr1.cc skeleton, for backward compatibility, defines - a constructor for position that initializes the filename. The - glr.cc skeleton does not (and in fact cannot: location/position - are stored in a union, from which objects with constructors are - excluded in C++). */ -%initial-action { - @$.initialize (); -} -]])])[ +]AT_SKEL_CC_IF([AT_LOCATION_TYPE_IF([[ +%initial-action +{ + @$.first.l = @$.first.c = 1; + @$.last = @$.first; +}]])])[ /* Bison Declarations */ %token CALC_EOF 0 "end of input" @@ -365,27 +348,8 @@ power (int base, int exponent) o << '-' << s.last.c - 1; return o; } -]]) -AT_YYERROR_DEFINE], -[/* A C error reporting function. */ -static void -yyerror (AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ]) - AT_PARAM_IF([semantic_value *result, int *count, ]) - const char *s) -{ -AT_PARAM_IF([(void) result; (void) count;]) -AT_YYERROR_SEES_LOC_IF([ - fprintf (stderr, "%d.%d", - AT_LOC_FIRST_LINE, AT_LOC_FIRST_COLUMN); - if (AT_LOC_FIRST_LINE != AT_LOC_LAST_LINE) - fprintf (stderr, "-%d.%d", - AT_LOC_LAST_LINE, AT_LOC_LAST_COLUMN - 1); - else if (AT_LOC_FIRST_COLUMN != AT_LOC_LAST_COLUMN - 1) - fprintf (stderr, "-%d", - AT_LOC_LAST_COLUMN - 1); - fprintf (stderr, ": ");]) - fprintf (stderr, "%s\n", s); -}])[ +]])])[ +]AT_YYERROR_DEFINE[ ]AT_DEFINES_IF([], [AT_CALC_LEX AT_CALC_MAIN])]) @@ -503,12 +467,15 @@ AT_CHECK([cat stderr], 0, [expout]) # Make sure we did not introduce bad spaces. Checked here because all # the skeletons are (or should be) exercized here. m4_define([AT_CHECK_SPACES], -[# No initial empty lines. -AT_CHECK([sed -ne '/./q;=;p;' $1]) -# No trailing spaces. -# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' $1]) -# No final empty lines. -AT_CHECK([sed -ne '${/^$/{=;p;};}' $1]) +[AT_CHECK([$PERL -ne ' + chomp; + print "$.: {$_}\n" + if (# No starting/ending empty lines. + (eof || $. == 1) && /^\s*$/ + # No trailing space. FIXME: not ready for "maint". + # || /\s$/ + )' $1 +])dnl ]) @@ -547,7 +514,7 @@ _AT_CHECK_CALC([$1], [842]) # Some syntax errors. -_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [15], +_AT_CHECK_CALC_ERROR([$1], [1], [1 2], [15], [1.3: syntax error, unexpected number]) _AT_CHECK_CALC_ERROR([$1], [1], [1//2], [20], [1.3: syntax error, unexpected '/', expecting number or '-' or '(' or '!']) @@ -591,10 +558,10 @@ calc: error: 4444 != 1]) # The same, but this time exercising explicitly triggered syntax errors. # POSIX says the lookahead causing the error should not be discarded. -_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [102], +_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (1 2) = 1], [102], [1.10: syntax error, unexpected number calc: error: 2222 != 1]) -_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [113], +_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (1 2) = 1], [113], [1.4: syntax error, unexpected '*', expecting number or '-' or '(' or '!' 1.12: syntax error, unexpected number calc: error: 2222 != 1]) @@ -637,8 +604,8 @@ AT_CHECK_CALC_LALR([%verbose]) AT_CHECK_CALC_LALR([%yacc]) AT_CHECK_CALC_LALR([%error-verbose]) -AT_CHECK_CALC_LALR([%define api.pure %locations]) -AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %locations]) +AT_CHECK_CALC_LALR([%define api.pure full %locations]) +AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure full %locations]) AT_CHECK_CALC_LALR([%error-verbose %locations]) AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc]) @@ -648,8 +615,8 @@ AT_CHECK_CALC_LALR([%debug]) AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) -AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc]) +AT_CHECK_CALC_LALR([%define api.pure full %verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc]) +AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure full %verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc]) AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}]) @@ -710,7 +677,7 @@ m4_define([AT_CHECK_CALC_LALR1_CC], [AT_CHECK_CALC([%language "C++" %defines %locations] $@)]) AT_CHECK_CALC_LALR1_CC([]) -AT_CHECK_CALC_LALR1_CC([%define location_type Span]) +AT_CHECK_CALC_LALR1_CC([%define api.location.type Span]) AT_CHECK_CALC_LALR1_CC([%error-verbose %name-prefix "calc" %verbose %yacc]) AT_CHECK_CALC_LALR1_CC([%error-verbose %define api.prefix "calc" %verbose %yacc]) AT_CHECK_CALC_LALR1_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc]) @@ -739,7 +706,7 @@ m4_define([AT_CHECK_CALC_GLR_CC], [AT_CHECK_CALC([%language "C++" %glr-parser %defines %locations] $@)]) AT_CHECK_CALC_GLR_CC([]) -AT_CHECK_CALC_GLR_CC([%define location_type Span]) +AT_CHECK_CALC_GLR_CC([%define api.location.type Span]) AT_CHECK_CALC_GLR_CC([%error-verbose %name-prefix "calc" %verbose %yacc]) AT_CHECK_CALC_GLR_CC([%error-verbose %define api.prefix "calc" %verbose %yacc])