- char *endp;
- YYSTYPE yylval_init;
- if (argc != 2)
- abort ();
- yylval_init = strtol (argv[1], &endp, 10);
- if (! (argv[1] != endp
- && 0 <= yylval_init && yylval_init <= INT_MAX
- && errno != ERANGE))
- abort ();
- yydebug = 1;
- {
- int count;
- int status;
-]m4_bmatch([$2], [%push-],
-[[ yypstate *yyps = yypstate_new ();
-]])[ for (count = 0; count < 2; ++count)
- {
- int new_status;
- yylval = yylval_init;
-]m4_bmatch([$2], [%push-],
-[[ new_status = yypull_parse (yyps);
-]],
-[[ new_status = yyparse ();
-]])[ if (count > 0 && new_status != status)
- abort ();
+ YYSTYPE yylval_init = get_args (argc, argv);
+ int status = 0;
+ int count;
+]m4_bmatch([$2], [api.push-pull both],
+[[ yypstate *ps = yypstate_new ();
+]])[ yydebug = 1;
+ for (count = 0; count < 2; ++count)
+ {
+ int new_status;
+ yylval = yylval_init;
+ new_status = ]m4_bmatch([$2], [api.push-pull both],
+ [[yypull_parse (ps)]],
+ [[yyparse ()]])[;
+ if (count == 0)