]> git.saurik.com Git - bison.git/commit
Encapsulate the push parser state variables into an M4 macro so the
authorJoel E. Denny <jdenny@ces.clemson.edu>
Wed, 20 Dec 2006 00:59:18 +0000 (00:59 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Wed, 20 Dec 2006 00:59:18 +0000 (00:59 +0000)
commitbb010fe51ab1a82df21117660ac2e6aecb00cf56
tree6bf2c17852c300f47ce77e6cb36950002d3772e3
parent2d212f8ca61377c728f9262a03ca7471de5661c5
Encapsulate the push parser state variables into an M4 macro so the
push skeleton doesn't have to list them again for pull mode's yyparse.
For push mode, remove yypush_parse's local equivalents of these
variables to eliminate unnecessary copying between the two sets at
run-time.  This patch also fixes at least a bug related to multiple
%initial-action invocations in push mode.
* data/push.c (b4_declare_parser_variables): Rename to...
(b4_declare_scanner_communication_variables): ... this for clarity and
update both uses.
(b4_declare_yyparse_variables): Remove and move its contents to the one
spot where it was invoked.
(b4_declare_parser_state_variables): New macro containing the parser
state variables required by push mode.
(struct yypstate): Replace all fields but yynew with
b4_declare_parser_state_variables.
(yystate, yyn, yyresult, yyerrstatus, yytoken, yyss, yyssp, yyvs,
yyvsp, yyls, yylsp, yystacksize, yyval, yyloc): For push mode, #define
each NAME in this list to yyps->NAME so it can be used in yypush_parse.
(yyparse or yypush_parse): For yyparse in pull mode, replace local
parser state variable declarations with
b4_declare_parser_state_variables.
Don't initialize parser state variables when calling yypush_parse since
yypstate_new already does that.
Invoke the user's initial action only upon the first yypush_parse
invocation.
Remove all code that copies between the local parser state variables
and the yypstate.
ChangeLog
data/push.c