diff --git a/tests/glr-regression.at b/tests/glr-regression.at index 36093048..e0d61958 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -18,6 +18,13 @@ AT_BANNER([[GLR Regression Tests]]) +# You might wonder what's the point of having names different for each +# test case. When some endlessly loop, it is nice to see their "name" +# in ps. + +# AT_YYPARSE_DEFINE +# ----------------- +# Wrap the C++ parser in a C-like function interface. m4_pushdef([AT_YYPARSE_DEFINE], [AT_CXX_IF([[ static int @@ -39,6 +46,7 @@ m4_pushdef([AT_TEST], [AT_SETUP([Badly Collapsed GLR States: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser $1]) + AT_DATA_GRAMMAR([glr-regr1.y], [[/* Regression Test: Improper state compression */ /* Reported by Scott McPeak */ @@ -120,6 +128,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -133,6 +142,8 @@ m4_pushdef([AT_TEST], [AT_SETUP([Improper handling of embedded actions and dollar(-N) in GLR parsers: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser $1]) +AT_GLR2_CC_IF([AT_XFAIL_IF([true])]) + AT_DATA_GRAMMAR([glr-regr2a.y], [[/* Regression Test: Improper handling of embedded actions and $-N */ /* Reported by S. Eken */ @@ -264,6 +275,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -276,6 +288,7 @@ m4_pushdef([AT_TEST], [AT_SETUP([Improper merging of GLR delayed action sets: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser $1]) + AT_DATA_GRAMMAR([glr-regr3.y], [[/* Regression Test: Improper merging of GLR delayed action sets. */ /* Reported by M. Rosien */ @@ -392,6 +405,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -405,6 +419,8 @@ m4_pushdef([AT_TEST], [AT_SETUP([Duplicate representation of merged trees: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser $1]) +AT_GLR2_CC_IF([AT_XFAIL_IF([true])]) + AT_DATA_GRAMMAR([glr-regr4.y], [[ %define parse.assert @@ -489,6 +505,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -552,6 +569,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -609,6 +627,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -623,6 +642,7 @@ m4_pushdef([AT_TEST], [AT_SETUP([Duplicated user destructor for lookahead: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser $1]) + AT_DATA_GRAMMAR([glr-regr7.y], [[ %code requires { @@ -708,6 +728,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -724,6 +745,8 @@ m4_pushdef([AT_TEST], [AT_SETUP([Incorrectly initialized location for empty right-hand side in GLR: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser %locations $1]) +AT_GLR2_CC_IF([AT_XFAIL_IF([true])]) + AT_DATA_GRAMMAR([glr-regr8.y], [[ %code { @@ -806,6 +829,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -893,6 +917,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -955,6 +980,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1022,6 +1048,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1152,6 +1179,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1293,6 +1321,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1306,6 +1335,8 @@ m4_pushdef([AT_TEST], [AT_SETUP([Incorrect lookahead during nondeterministic GLR: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser %locations $1]) +AT_GLR2_CC_IF([AT_XFAIL_IF([true])]) + AT_DATA_GRAMMAR([glr-regr14.y], [[ /* Tests: @@ -1411,7 +1442,7 @@ stack_explosion: alt1: 'd' no_look { USE ($][1); - if (yychar != 'd' && yychar != YYEOF) + if (yychar != 'd' && yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEOF) { fprintf (stderr, "Incorrect lookahead during stack explosion.\n"); } @@ -1420,7 +1451,7 @@ alt1: alt2: 'd' no_look { USE ($][1); - if (yychar != 'd' && yychar != YYEOF) + if (yychar != 'd' && yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEOF) { fprintf (stderr, "Incorrect lookahead during stack explosion.\n"); } @@ -1429,7 +1460,7 @@ alt2: alt3: 'd' no_look { USE ($][1); - if (yychar != 'd' && yychar != YYEOF) + if (yychar != 'd' && yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEOF) { fprintf (stderr, "Incorrect lookahead during stack explosion.\n"); } @@ -1437,7 +1468,7 @@ alt3: ; no_look: { - if (yychar != YYEMPTY) + if (yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEMPTY) { fprintf (stderr, "Found lookahead where shouldn't during stack explosion.\n"); @@ -1523,6 +1554,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1536,6 +1568,7 @@ m4_pushdef([AT_TEST], [AT_SETUP([Leaked semantic values when reporting ambiguity: $1]) AT_BISON_OPTION_PUSHDEFS([%glr-parser $1]) + AT_DATA_GRAMMAR([glr-regr15.y], [[ %define parse.assert @@ -1615,6 +1648,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1685,6 +1719,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1768,6 +1803,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c" %define api.pure]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1828,6 +1864,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -1940,6 +1977,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) @@ -2016,6 +2054,7 @@ AT_CLEANUP AT_TEST([%skeleton "glr.c"]) AT_TEST([%skeleton "glr.cc"]) +AT_TEST([%skeleton "glr2.cc"]) m4_popdef([AT_TEST]) diff --git a/tests/local.at b/tests/local.at index e4242b39..f68d6e5b 100644 --- a/tests/local.at +++ b/tests/local.at @@ -244,6 +244,8 @@ m4_pushdef([AT_LALR1_CC_IF], [AT_CXX_IF([AT_GLR_IF([$2], [$1])], [$2])]) m4_pushdef([AT_GLR_CC_IF], [AT_CXX_IF([AT_GLR_IF([$1], [$2])], [$2])]) +m4_pushdef([AT_GLR2_CC_IF], + [m4_bmatch([$3], [%skeleton "glr2\.cc"], [$1], [$2])]) # Using yacc.c? m4_pushdef([AT_YACC_IF], [m4_bmatch([$3], [%language\|%glr-parser\|%skeleton], [$2], [$1])]) @@ -460,6 +462,7 @@ m4_popdef([AT_CXX_IF]) m4_popdef([AT_C_IF]) m4_popdef([AT_LANG]) m4_popdef([AT_JAVA_IF]) +m4_popdef([AT_GLR2_CC_IF]) m4_popdef([AT_GLR_CC_IF]) m4_popdef([AT_LALR1_CC_IF]) m4_popdef([AT_ERROR_SIMPLE_IF])