diff options
author | Joel E. Denny <jdenny@ces.clemson.edu> | 2008-02-20 18:23:21 +0000 |
---|---|---|
committer | Joel E. Denny <jdenny@ces.clemson.edu> | 2008-02-20 18:23:21 +0000 |
commit | 333e670c857bff3b9354f61a572edaa0e25ac695 (patch) | |
tree | 2d6583ae76e1b30b6bfcfc1520a5ed3be046ab51 /tests/push.at | |
parent | 798096e1deaeb13a06e62de5c73487537e220e3c (diff) | |
download | bison-333e670c857bff3b9354f61a572edaa0e25ac695.tar.gz |
Fix impure push parser compile error reported by Bob Rossi at
<http://lists.gnu.org/archive/html/help-bison/2008-02/msg00023.html>.
* data/yacc.c: Clean up whitespace in the output a little.
(yypstate_allocated): Define for impure push parsers regardless of
whether the pull interface is also requested.
* tests/push.at (Push Parsing: Multiple impure instances): Extend to
check impure push parsers without the pull interface.
* data/yacc.c (yypstate_new): Don't try to invoke yyerror since
yyerror takes arguments specified by %parse-param while yypstate_new
does not.
* doc/bison.texinfo (Parser Create Function): Document that
yypstate_new returns 0 for multiple impure parser instances.
* tests/push.at (Push Parsing: Multiple impure instances): Update
expected stderr output.
Diffstat (limited to 'tests/push.at')
-rw-r--r-- | tests/push.at | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/tests/push.at b/tests/push.at index 53b20b7d..70c1fdce 100644 --- a/tests/push.at +++ b/tests/push.at @@ -83,6 +83,7 @@ AT_CLEANUP AT_SETUP([[Push Parsing: Multiple impure instances]]) +m4_pushdef([AT_MULTIPLE_IMPURE_INSTANCES_CHECK], [ AT_DATA_GRAMMAR([[input.y]], [[ %{ @@ -92,7 +93,7 @@ AT_DATA_GRAMMAR([[input.y]], int yylex (void); %} -%define api.push_pull "both" +%define api.push_pull "]$1[" %% @@ -123,11 +124,11 @@ main (void) ps = yypstate_new (); assert (ps); assert (yypstate_new () == NULL); - assert (yyparse () == 2); + ]m4_if([$1], [[both]], [[assert (yyparse () == 2)]])[; yychar = 0; assert (yypush_parse (ps) == 0); assert (yypstate_new () == NULL); - assert (yyparse () == 2); + ]m4_if([$1], [[both]], [[assert (yyparse () == 2)]])[; yypstate_delete (ps); } @@ -137,16 +138,13 @@ main (void) AT_BISON_CHECK([[-o input.c input.y]]) AT_COMPILE([[input]]) -AT_PARSER_CHECK([[./input]], 0, [], -[[cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -cannot allocate multiple impure push-parser instances -]]) +AT_PARSER_CHECK([[./input]]) +]) + +AT_MULTIPLE_IMPURE_INSTANCES_CHECK([[both]]) +AT_MULTIPLE_IMPURE_INSTANCES_CHECK([[push]]) + +m4_popdef([AT_MULTIPLE_IMPURE_INSTANCES_CHECK]) AT_CLEANUP |