X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/c469accea717bf6e9750fed8c4d4a1d356aca184..fcbfa6b01c0222b01254730c66d539ed2c841a4e:/tests/cxx-type.at diff --git a/tests/cxx-type.at b/tests/cxx-type.at index 25abfd5b..41ff5604 100644 --- a/tests/cxx-type.at +++ b/tests/cxx-type.at @@ -18,13 +18,13 @@ AT_BANNER([[C++ Type Syntax (GLR).]]) -# _AT_TEST_GLR_CALC(DECL, RESOLVE1, RESOLVE2) -# ------------------------------------------- +# _AT_TEST_GLR_CXXTYPES(DECL, RESOLVE1, RESOLVE2) +# ----------------------------------------------- # Store into types.y the calc program, with DECL inserted as a declaration, # and with RESOLVE1 and RESOLVE2 as annotations on the conflicted rule for # stmt. Then compile the result. -m4_define([_AT_TEST_GLR_CALC], -[AT_DATA([types.y], +m4_define([_AT_TEST_GLR_CXXTYPES], +[AT_DATA_GRAMMAR([types.y], [[/* Simplified C++ Type and Expression Grammar. */ $1 @@ -36,7 +36,12 @@ $1 ]m4_bmatch([$2], [stmtMerge], [ static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);])[ #define YYINITDEPTH 10 - int yyerror (const char *s); + int yyerror ( +#if YYPURE && YYLSP_NEEDED + YYLTYPE *yylocation, +#endif + const char *s + ); #if YYPURE ]m4_bmatch([$1], [location], @@ -86,7 +91,6 @@ declarator : ID { printf ("\"%s\" ", ]$[1); } %% -#include #include #include #include @@ -94,7 +98,8 @@ declarator : ID { printf ("\"%s\" ", ]$[1); } int main (int argc, char** argv) { - assert (argc == 2); + if (argc != 2) + abort (); if (!freopen (argv[1], "r", stdin)) abort (); exit (yyparse ()); @@ -130,7 +135,7 @@ yylex () break; default: if (isalpha (c)) - { + { i = 0; do @@ -153,8 +158,16 @@ yylex () } int -yyerror (const char *s) +yyerror ( +#if YYPURE && YYLSP_NEEDED + YYLTYPE *yylocation, +#endif + const char *s + ) { +#if YYPURE && YYLSP_NEEDED + (void) *yylocation; +#endif fprintf (stderr, "%s\n", s); return 0; } @@ -228,11 +241,11 @@ z q + ]]) m4_define([_AT_GLR_STDERR], -[[parse error +[[syntax error ]]) m4_define([_AT_VERBOSE_GLR_STDERR], -[[parse error, unexpected ID, expecting '=' or '+' or ')' +[[syntax error, unexpected ID, expecting '=' or '+' or ')' ]]) ## ---------------------------------------------------- ## @@ -240,63 +253,62 @@ m4_define([_AT_VERBOSE_GLR_STDERR], ## ---------------------------------------------------- ## AT_SETUP([GLR: Resolve ambiguity, impure, no locations]) -_AT_TEST_GLR_CALC([],[%dprec 1],[%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, _AT_RESOLVED_GLR_OUTPUT, - _AT_GLR_STDERR) +_AT_TEST_GLR_CXXTYPES([], + [%dprec 1], [%dprec 2]) +AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, + _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Resolve ambiguity, impure, locations]) -_AT_TEST_GLR_CALC([%locations],[%dprec 1],[%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, _AT_RESOLVED_GLR_OUTPUT, - _AT_GLR_STDERR) +_AT_TEST_GLR_CXXTYPES([%locations],[%dprec 1],[%dprec 2]) +AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, + _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Resolve ambiguity, pure, no locations]) -_AT_TEST_GLR_CALC([%pure-parser],[%dprec 1],[%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, _AT_RESOLVED_GLR_OUTPUT, - _AT_GLR_STDERR) +_AT_TEST_GLR_CXXTYPES([%pure-parser], + [%dprec 1], [%dprec 2]) +AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, + _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Resolve ambiguity, pure, locations]) -_AT_TEST_GLR_CALC([%pure-parser -%locations],[%dprec 1],[%dprec 2]) +_AT_TEST_GLR_CXXTYPES([%pure-parser %locations], + [%dprec 1], [%dprec 2]) AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, - _AT_RESOLVED_GLR_OUTPUT, - _AT_GLR_STDERR) + _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, impure, no locations]) -_AT_TEST_GLR_CALC([],[%merge ],[%merge ]) +_AT_TEST_GLR_CXXTYPES([], + [%merge ], [%merge ]) AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, - _AT_AMBIG_GLR_OUTPUT, - _AT_GLR_STDERR) + _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, impure, locations]) -_AT_TEST_GLR_CALC([%locations],[%merge ],[%merge ]) +_AT_TEST_GLR_CXXTYPES([%locations], + [%merge ], [%merge ]) AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, - _AT_AMBIG_GLR_OUTPUT, - _AT_GLR_STDERR) + _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, pure, no locations]) -_AT_TEST_GLR_CALC([%pure-parser],[%merge ],[%merge ]) +_AT_TEST_GLR_CXXTYPES([%pure-parser], + [%merge ], [%merge ]) AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, - _AT_AMBIG_GLR_OUTPUT, - _AT_GLR_STDERR) + _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, pure, locations]) -_AT_TEST_GLR_CALC([%pure-parser -%locations],[%merge ],[%merge ]) +_AT_TEST_GLR_CXXTYPES([%pure-parser %locations], + [%merge ],[%merge ]) AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, - _AT_AMBIG_GLR_OUTPUT, - _AT_GLR_STDERR) + _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Verbose messages, resolve ambiguity, impure, no locations]) -_AT_TEST_GLR_CALC([%error-verbose], -[%merge ],[%merge ]) +_AT_TEST_GLR_CXXTYPES([%error-verbose], + [%merge ], [%merge ]) AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, - _AT_AMBIG_GLR_OUTPUT, - _AT_VERBOSE_GLR_STDERR) + _AT_AMBIG_GLR_OUTPUT, _AT_VERBOSE_GLR_STDERR) AT_CLEANUP