From 791934e4b5692dabefdee2ca948ade8afc3684ce Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Sun, 17 Dec 2006 01:33:31 +0000 Subject: [PATCH] Make %push-parser imply %pure-parser. This fixes several bugs; see . * src/parse-gram.y (prologue_declaration): For %push-parser, also set pure_parser = true. * data/push.c: Don't bother testing b4_push_if when deciding whether to expand b4_declare_parser_variables globally. (yypush_parse): Likewise in here. * data/push.c (yypush_parse): Add b4_parse_param to arguments. (yy_reduce_print): Reformat M4 for readability. --- ChangeLog | 13 +++++++++++++ data/push.c | 15 ++++++++------- src/parse-gram.c | 2 +- src/parse-gram.y | 2 +- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index dd66b0cc..5853bf2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2006-12-16 Joel E. Denny + + Make %push-parser imply %pure-parser. This fixes several bugs; see + . + * src/parse-gram.y (prologue_declaration): For %push-parser, also set + pure_parser = true. + * data/push.c: Don't bother testing b4_push_if when deciding whether + to expand b4_declare_parser_variables globally. + (yypush_parse): Likewise in here. + + * data/push.c (yypush_parse): Add b4_parse_param to arguments. + (yy_reduce_print): Reformat M4 for readability. + 2006-12-15 Bob Rossi and Joel Denny diff --git a/data/push.c b/data/push.c index b7eededf..d811eba7 100644 --- a/data/push.c +++ b/data/push.c @@ -706,7 +706,7 @@ do { \ [[YYSTYPE *yyvsp], [yyvsp]], b4_locations_if([[[YYLTYPE *yylsp], [yylsp]], ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [, - ])b4_parse_param)[ + b4_parse_param]))[ { int yynrhs = yyr2[yyrule]; int yyi; @@ -971,7 +971,8 @@ enum { YYPUSH_MORE = 4 }; [[yypstate *yyps], [yyps]], [[int yynchar], [yynchar]], [[YYSTYPE const *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]))[ + b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]) + m4_ifset([b4_parse_param], [, b4_parse_param]))[ ],[#ifdef YYPARSE_PARAM ]b4_c_function_decl([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ @@ -1081,8 +1082,7 @@ m4_define([b4_declare_yyparse_variables], ]) m4_divert_pop([KILL])dnl# ====================== End of M4 code. -b4_push_if([],[b4_pure_if([], - [b4_declare_parser_variables])]) +b4_pure_if([], [b4_declare_parser_variables]) b4_push_if([b4_declare_yyparse_variables]) @@ -1094,7 +1094,8 @@ b4_push_if([ b4_c_function_def([yypush_parse], [int], [[yypstate *yyps], [yyps]], [[int yynchar], [yynchar]], [[YYSTYPE const *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]))],[ + b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]) + m4_ifset([b4_parse_param], [, b4_parse_param]))],[ #ifdef YYPARSE_PARAM b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]]) #else /* ! YYPARSE_PARAM */ @@ -1102,7 +1103,6 @@ b4_c_function_def([yyparse], [int], b4_parse_param) #endif]) {[ ]b4_pure_if([b4_declare_parser_variables])[ - ]b4_push_if([b4_declare_parser_variables])[ int yystate; int yyn; int yyresult; @@ -1700,7 +1700,8 @@ typedef struct ]b4_prefix[pstate ]b4_prefix[pstate; [[]b4_prefix[pstate *]b4_prefix[pstate], []b4_prefix[pstate]], [[int yynchar], [yynchar]], [[YYSTYPE const *yynlval], [yynlval]] - b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]))[ + b4_locations_if([,[[YYLTYPE const *yynlloc], [yynlloc]]]) + m4_ifset([b4_parse_param], [, b4_parse_param]))[ enum { YYPUSH_MORE = 4 };])[ m4_ifdef([b4_provides], diff --git a/src/parse-gram.c b/src/parse-gram.c index 7d90f772..1b6dd75a 100644 --- a/src/parse-gram.c +++ b/src/parse-gram.c @@ -2053,7 +2053,7 @@ yyreduce: /* Line 1269 of yacc.c */ #line 258 "parse-gram.y" - { push_parser = true; } + { push_parser = true; pure_parser = true; } break; case 29: diff --git a/src/parse-gram.y b/src/parse-gram.y index aabace13..a753fa9a 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -255,7 +255,7 @@ prologue_declaration: | "%output" "=" STRING { spec_outfile = $3; } /* deprecated */ | "%parse-param" "{...}" { add_param ("parse_param", $2, @2); } | "%pure-parser" { pure_parser = true; } -| "%push-parser" { push_parser = true; } +| "%push-parser" { push_parser = true; pure_parser = true; } | "%require" STRING { version_check (&@2, $2); } | "%skeleton" STRING { skeleton = $2; } | "%token-table" { token_table_flag = true; } -- 2.45.2