X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/b8e7ad588711ab1a87a7c30667a8d84fed72d75a..68f91d58f15abe21c65a8b4d7022ccb854c857dc:/tests/glr-regression.at diff --git a/tests/glr-regression.at b/tests/glr-regression.at index aacc57c8..868c8410 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -1,6 +1,6 @@ # Checking GLR Parsing: Regression Tests -*- Autotest -*- -# Copyright (C) 2002-2003, 2005-2007, 2009-2012 Free Software +# Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software # Foundation, Inc. # This program is free software: you can redistribute it and/or modify @@ -18,9 +18,9 @@ AT_BANNER([[GLR Regression Tests]]) -## --------------------------- ## -## Badly Collapsed GLR States. ## -## --------------------------- ## +## ---------------------------- ## +## Badly Collapsed GLR States. ## +## ---------------------------- ## AT_SETUP([Badly Collapsed GLR States]) @@ -67,9 +67,13 @@ static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1) return 0; } +const char *input = YY_NULL; + int -main (void) +main (int argc, const char* argv[]) { + assert (argc == 2); + input = argv[1]; return yyparse (); } @@ -78,16 +82,7 @@ main (void) int yylex (void) { - for (;;) - { - int ch; - assert (!feof (stdin)); - ch = getchar (); - if (ch == EOF) - return 0; - else if (ch == 'B' || ch == 'P') - return ch; - } + return *input++; } ]]) AT_BISON_OPTION_POPDEFS @@ -96,7 +91,7 @@ AT_BISON_CHECK([[-o glr-regr1.c glr-regr1.y]], 0, [], [glr-regr1.y: conflicts: 1 shift/reduce ]) AT_COMPILE([glr-regr1]) -AT_PARSER_CHECK([[echo BPBPB | ./glr-regr1]], 0, +AT_PARSER_CHECK([[./glr-regr1 BPBPB]], 0, [[E -> 'B' E -> 'B' E -> E 'P' E @@ -110,9 +105,9 @@ E -> E 'P' E AT_CLEANUP -## ------------------------------------------------------------ ## -## Improper handling of embedded actions and $-N in GLR parsers ## -## ------------------------------------------------------------ ## +## -------------------------------------------------------------- ## +## Improper handling of embedded actions and $-N in GLR parsers. ## +## -------------------------------------------------------------- ## AT_SETUP([Improper handling of embedded actions and dollar(-N) in GLR parsers]) @@ -200,9 +195,14 @@ yylex (void) int main (int argc, char **argv) { + int res; input = stdin; - if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3; - return yyparse (); + if (argc == 2 && !(input = fopen (argv[1], "r"))) + return 3; + res = yyparse (); + if (argc == 2 && fclose (input)) + return 4; + return res; } ]]) AT_BISON_OPTION_POPDEFS @@ -212,23 +212,34 @@ AT_BISON_CHECK([[-o glr-regr2a.c glr-regr2a.y]], 0, [], ]) AT_COMPILE([glr-regr2a]) -AT_PARSER_CHECK([[echo s VARIABLE_1 t v x q | ./glr-regr2a]], 0, +AT_DATA([input1.txt], +[[s VARIABLE_1 t v x q +]]) +AT_PARSER_CHECK([[./glr-regr2a input1.txt]], 0, [[Variable: 'VARIABLE_1' -]], []) -AT_PARSER_CHECK([[echo s VARIABLE_1 , ANOTHER_VARIABLE_2 t e | ./glr-regr2a]], +]]) + +AT_DATA([input2.txt], +[[s VARIABLE_1 , ANOTHER_VARIABLE_2 t e +]]) +AT_PARSER_CHECK([[./glr-regr2a input2.txt]], 0, [[Varlist: 'VARIABLE_1,ANOTHER_VARIABLE_2' ]]) -AT_PARSER_CHECK([[echo s VARIABLE_3 t v x | ./glr-regr2a]], 0, + +AT_DATA([input3.txt], +[[s VARIABLE_3 t v x +]]) +AT_PARSER_CHECK([[./glr-regr2a input3.txt]], 0, [[Variable: 'VARIABLE_3' -]], []) +]]) AT_CLEANUP -## ------------------------------------------------------------ ## -## Improper merging of GLR delayed action sets ## -## ------------------------------------------------------------ ## +## --------------------------------------------- ## +## Improper merging of GLR delayed action sets. ## +## --------------------------------------------- ## AT_SETUP([Improper merging of GLR delayed action sets]) @@ -317,9 +328,14 @@ int yylex (void) int main(int argc, char* argv[]) { + int res; input = stdin; - if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3; - return yyparse (); + if (argc == 2 && !(input = fopen (argv[1], "r"))) + return 3; + res = yyparse (); + if (argc == 2 && fclose (input)) + return 4; + return res; } ]]) AT_BISON_OPTION_POPDEFS @@ -329,18 +345,21 @@ AT_BISON_CHECK([[-o glr-regr3.c glr-regr3.y]], 0, [], ]) AT_COMPILE([glr-regr3]) -AT_PARSER_CHECK([[echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3]], +AT_DATA([input.txt], +[[p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 +]]) +AT_PARSER_CHECK([[./glr-regr3 input.txt]], 0, [[Result: 1c04 -]], []) +]]) AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Duplicate representation of merged trees. See ## -## . ## -## ------------------------------------------------------------------------- ## +## ---------------------------------------------------------------------- ## +## Duplicate representation of merged trees. See ## +## . ## +## ---------------------------------------------------------------------- ## AT_SETUP([Duplicate representation of merged trees]) @@ -428,10 +447,10 @@ AT_PARSER_CHECK([[./glr-regr4]], 0, AT_CLEANUP -## -------------------------------------------------------------------------- ## -## User destructor for unresolved GLR semantic value. See ## -## . ## -## -------------------------------------------------------------------------- ## +## ------------------------------------------------------------------------- ## +## User destructor for unresolved GLR semantic value. See ## +## . ## +## ------------------------------------------------------------------------- ## AT_SETUP([User destructor for unresolved GLR semantic value]) @@ -466,8 +485,8 @@ start: ; %% -]AT_YYLEX_DEFINE(["a"])[ ]AT_YYERROR_DEFINE[ +]AT_YYLEX_DEFINE(["a"])[ int main (void) { @@ -488,10 +507,10 @@ AT_PARSER_CHECK([[./glr-regr5]], 0, [], AT_CLEANUP -## -------------------------------------------------------------------------- ## -## User destructor after an error during a split parse. See ## -## . ## -## -------------------------------------------------------------------------- ## +## ------------------------------------------------------------------------- ## +## User destructor after an error during a split parse. See ## +## . ## +## ------------------------------------------------------------------------- ## AT_SETUP([User destructor after an error during a split parse]) @@ -543,7 +562,7 @@ AT_CLEANUP ## ------------------------------------------------------------------------- ## -## Duplicated user destructor for lookahead. See ## +## Duplicated user destructor for lookahead. See ## ## . ## ## ------------------------------------------------------------------------- ## @@ -726,7 +745,7 @@ AT_CLEANUP ## ------------------------------------------------------------------------- ## -## No users destructors if stack 0 deleted. See ## +## No users destructors if stack 0 deleted. See ## ## . ## ## ------------------------------------------------------------------------- ## @@ -803,9 +822,9 @@ AT_PARSER_CHECK([[./glr-regr9]], 0, [], AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Corrupted semantic options if user action cuts parse. ## -## ------------------------------------------------------------------------- ## +## ------------------------------------------------------ ## +## Corrupted semantic options if user action cuts parse. ## +## ------------------------------------------------------ ## AT_SETUP([Corrupted semantic options if user action cuts parse]) @@ -857,9 +876,9 @@ AT_PARSER_CHECK([[./glr-regr10]], 0, [], []) AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Undesirable destructors if user action cuts parse. ## -## ------------------------------------------------------------------------- ## +## --------------------------------------------------- ## +## Undesirable destructors if user action cuts parse. ## +## --------------------------------------------------- ## AT_SETUP([Undesirable destructors if user action cuts parse]) @@ -915,9 +934,9 @@ AT_PARSER_CHECK([[./glr-regr11]], 0, [], []) AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Leaked semantic values if user action cuts parse. ## -## ------------------------------------------------------------------------- ## +## -------------------------------------------------- ## +## Leaked semantic values if user action cuts parse. ## +## -------------------------------------------------- ## AT_SETUP([Leaked semantic values if user action cuts parse]) @@ -1162,9 +1181,9 @@ start <- defstate_init defstate_shift 'b': AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Incorrect lookahead during nondeterministic GLR. ## -## ------------------------------------------------------------------------- ## +## ------------------------------------------------- ## +## Incorrect lookahead during nondeterministic GLR. ## +## ------------------------------------------------- ## AT_SETUP([Incorrect lookahead during nondeterministic GLR]) @@ -1379,9 +1398,9 @@ start <- merge 'c' stack_explosion: AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Leaked semantic values when reporting ambiguity. ## -## ------------------------------------------------------------------------- ## +## ------------------------------------------------- ## +## Leaked semantic values when reporting ambiguity. ## +## ------------------------------------------------- ## AT_SETUP([Leaked semantic values when reporting ambiguity]) @@ -1461,9 +1480,9 @@ AT_PARSER_CHECK([[./glr-regr15]], 0, [], AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Leaked lookahead after nondeterministic parse syntax error. ## -## ------------------------------------------------------------------------- ## +## ------------------------------------------------------------ ## +## Leaked lookahead after nondeterministic parse syntax error. ## +## ------------------------------------------------------------ ## AT_SETUP([Leaked lookahead after nondeterministic parse syntax error]) @@ -1521,9 +1540,9 @@ AT_PARSER_CHECK([[./glr-regr16]], 0, [], AT_CLEANUP -## ------------------------------------------------------------------------- ## -## Uninitialized location when reporting ambiguity. ## -## ------------------------------------------------------------------------- ## +## ------------------------------------------------- ## +## Uninitialized location when reporting ambiguity. ## +## ------------------------------------------------- ## AT_SETUP([Uninitialized location when reporting ambiguity]) @@ -1543,13 +1562,6 @@ AT_DATA_GRAMMAR([glr-regr17.y], ]AT_YYLEX_DECLARE[ %} -%initial-action { - @$.first_line = 1; - @$.first_column = 1; - @$.last_line = 1; - @$.last_column = 1; -} - %% /* Tests the case of an empty RHS that has inherited the location of the @@ -1606,9 +1618,9 @@ AT_PARSER_CHECK([[./glr-regr17]], 0, [], AT_CLEANUP -## -------------------------------------------------------------## -## Missed %merge type warnings when LHS type is declared later. ## -## -------------------------------------------------------------## +## ------------------------------------------------------------- ## +## Missed %merge type warnings when LHS type is declared later. ## +## ------------------------------------------------------------- ## AT_SETUP([Missed %merge type warnings when LHS type is declared later]) @@ -1686,8 +1698,8 @@ start: b: 'b'; d: /* nada. */; %% -]AT_YYLEX_DEFINE(["abc"])[ ]AT_YYERROR_DEFINE[ +]AT_YYLEX_DEFINE(["abc"])[ int main (void) {