return 0;
}
+const char *input = 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
main (int argc, char **argv)
{
input = stdin;
- if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3;
- return yyparse ();
+ if (argc == 2 && !(input = fopen (argv[1], "r")))
+ return 3;
+ int 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
main(int argc, char* argv[])
{
input = stdin;
- if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3;
- return yyparse ();
+ if (argc == 2 && !(input = fopen (argv[1], "r")))
+ return 3;
+ int 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
AT_BISON_OPTION_POPDEFS
AT_BISON_CHECK([[-o glr-regr18.c glr-regr18.y]], 1, [],
-[glr-regr18.y:26.18-24: result type clash on merge function 'merge': <type2> != <type1>
-glr-regr18.y:25.18-24: previous declaration
-glr-regr18.y:27.13-19: result type clash on merge function 'merge': <type3> != <type2>
-glr-regr18.y:26.18-24: previous declaration
+[glr-regr18.y:26.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
+glr-regr18.y:25.18-24: previous declaration
+glr-regr18.y:27.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
+glr-regr18.y:26.18-24: previous declaration
])
AT_CLEANUP