# 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
AT_BANNER([[GLR Regression Tests]])
-## --------------------------- ##
-## Badly Collapsed GLR States. ##
-## --------------------------- ##
+## ---------------------------- ##
+## Badly Collapsed GLR States. ##
+## ---------------------------- ##
AT_SETUP([Badly Collapsed GLR States])
return 0;
}
+const char *input = YY_NULL;
+
int
-main (void)
+main (int argc, const char* argv[])
{
+ assert (argc == 2);
+ input = argv[1];
return yyparse ();
}
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
[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
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])
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
])
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])
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
])
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 ##
-## <http://lists.gnu.org/archive/html/help-bison/2005-07/msg00013.html>. ##
-## ------------------------------------------------------------------------- ##
+## ---------------------------------------------------------------------- ##
+## Duplicate representation of merged trees. See ##
+## <http://lists.gnu.org/archive/html/help-bison/2005-07/msg00013.html>. ##
+## ---------------------------------------------------------------------- ##
AT_SETUP([Duplicate representation of merged trees])
AT_CLEANUP
-## -------------------------------------------------------------------------- ##
-## User destructor for unresolved GLR semantic value. See ##
-## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html>. ##
-## -------------------------------------------------------------------------- ##
+## ------------------------------------------------------------------------- ##
+## User destructor for unresolved GLR semantic value. See ##
+## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html>. ##
+## ------------------------------------------------------------------------- ##
AT_SETUP([User destructor for unresolved GLR semantic value])
;
%%
-]AT_YYLEX_DEFINE(["a"])[
]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(["a"])[
int
main (void)
{
AT_CLEANUP
-## -------------------------------------------------------------------------- ##
-## User destructor after an error during a split parse. See ##
-## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html>. ##
-## -------------------------------------------------------------------------- ##
+## ------------------------------------------------------------------------- ##
+## User destructor after an error during a split parse. See ##
+## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html>. ##
+## ------------------------------------------------------------------------- ##
AT_SETUP([User destructor after an error during a split parse])
## ------------------------------------------------------------------------- ##
-## Duplicated user destructor for lookahead. See ##
+## Duplicated user destructor for lookahead. See ##
## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00035.html>. ##
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
-## No users destructors if stack 0 deleted. See ##
+## No users destructors if stack 0 deleted. See ##
## <http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00109.html>. ##
## ------------------------------------------------------------------------- ##
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])
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])
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])
AT_CLEANUP
-## ------------------------------------------------------------------------- ##
-## Incorrect lookahead during nondeterministic GLR. ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------- ##
+## Incorrect lookahead during nondeterministic GLR. ##
+## ------------------------------------------------- ##
AT_SETUP([Incorrect lookahead during nondeterministic GLR])
AT_CLEANUP
-## ------------------------------------------------------------------------- ##
-## Leaked semantic values when reporting ambiguity. ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------- ##
+## Leaked semantic values when reporting ambiguity. ##
+## ------------------------------------------------- ##
AT_SETUP([Leaked semantic values when reporting ambiguity])
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])
AT_CLEANUP
-## ------------------------------------------------------------------------- ##
-## Uninitialized location when reporting ambiguity. ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------- ##
+## Uninitialized location when reporting ambiguity. ##
+## ------------------------------------------------- ##
AT_SETUP([Uninitialized location when reporting ambiguity])
]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
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])
b: 'b';
d: /* nada. */;
%%
-]AT_YYLEX_DEFINE(["abc"])[
]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(["abc"])[
int
main (void)
{