]> git.saurik.com Git - bison.git/commit
Enable push parsers to operate in impure mode. Thus, %push-parser no
authorJoel E. Denny <jdenny@ces.clemson.edu>
Mon, 25 Dec 2006 17:25:39 +0000 (17:25 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Mon, 25 Dec 2006 17:25:39 +0000 (17:25 +0000)
commit94ebeba53ffd20afbc5d0c9caa3c80c40e910e4c
tree388758b4852c391544c547508a606b1309329321
parenta06331788509386cd43b8cc1d2891126b372c5de
Enable push parsers to operate in impure mode.  Thus, %push-parser no
longer implies %pure-parser.  The point of this change is to move
towards being able to test the push parser code by running the entire
test suite as if %push-parser had been declared.
* data/push.c (yypush_parse): For impure mode, remove the
yypushed_char, yypushed_val, and yypushed_loc arguments.
Instead, declare these as local variables initialized to the global
yychar, yylval, and yylloc.
For the first yypush_parse invocation only, restore the initial values
of these global variables when it's time to read a token since they
have been overwritten.
* src/parse-gram.y (prologue_declaration): Don't set pure_parser for
%push-parser.
* tests/calc.at (Simple LALR(1) Calculator): Always declare
%pure-parser along with %push-parser since this test case was designed
for pure push parsers.
* tests/local.at (AT_PURE_OR_PUSH_IF): Remove unused.
(AT_YACC_OR_PUSH_IF): New.
(AT_YYERROR_SEES_LOC_IF): Fix enough that the test suite passes, but
add a note that it's still wrong for some cases (as it has been for a
while).
(AT_PURE_LEX_IF): Use AT_PURE_IF instead of AT_PURE_OR_PUSH_IF since
%push-parser no longer implies %pure-parser.
ChangeLog
data/push.c
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
tests/calc.at
tests/local.at