mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 17:23:02 +00:00
For push mode, add pull wrappers around yypush_parse.
* data/push.c: (b4_generate_macro_args, b4_parenthesize): New macros. (yypull_parse): New function wrapping yypush_parse. (yyparse): New #define wrapping yypull_parse. * tests/calc.at (_AT_DATA_CALC_Y): Call yyparse even when %push-parser is declared. * tests/headers.at (export YYLTYPE): Make yylex global. For push mode, prototype yylex in the module that calls yyparse, and don't prototype yyparse there. Otherwise, the yyparse expansion won't compile. * tests/input.at (Torturing the Scanner): Likewise.
This commit is contained in:
@@ -336,17 +336,7 @@ main (int argc, const char **argv)
|
||||
|
||||
]AT_SKEL_CC_IF([], [m4_bmatch([$4], [%debug],
|
||||
[ yydebug = 1;])])[
|
||||
]AT_PUSH_IF([
|
||||
{
|
||||
yypstate *pstate = yypstate_new ();
|
||||
YYSTYPE my_lval;
|
||||
]AT_LOCATION_IF([YYLTYPE my_lloc;])[
|
||||
do {
|
||||
status = yypush_parse (pstate, yylex (&my_lval]AT_LOCATION_IF([[, &my_lloc]])[), &my_lval]AT_LOCATION_IF([[, &my_lloc]])[);
|
||||
} while (status == YYPUSH_MORE);
|
||||
yypstate_delete (pstate);
|
||||
}],[
|
||||
status = yyparse (]AT_PARAM_IF([[&result, &count]])[);])[
|
||||
status = yyparse (]AT_PARAM_IF([[&result, &count]])[);
|
||||
fclose (input);
|
||||
if (global_result != result)
|
||||
abort ();
|
||||
|
||||
Reference in New Issue
Block a user