mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 22:33:03 +00:00
Make %push-parser imply %pure-parser. This fixes several bugs; see
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>. * 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.
This commit is contained in:
13
ChangeLog
13
ChangeLog
@@ -1,3 +1,16 @@
|
|||||||
|
2006-12-16 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
|
Make %push-parser imply %pure-parser. This fixes several bugs; see
|
||||||
|
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>.
|
||||||
|
* 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 <bob@brasko.net>
|
2006-12-15 Bob Rossi <bob@brasko.net>
|
||||||
and Joel Denny <jdenny@ces.clemson.edu>
|
and Joel Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
|
|||||||
15
data/push.c
15
data/push.c
@@ -706,7 +706,7 @@ do { \
|
|||||||
[[YYSTYPE *yyvsp], [yyvsp]],
|
[[YYSTYPE *yyvsp], [yyvsp]],
|
||||||
b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
|
b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
|
||||||
])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
|
])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
|
||||||
])b4_parse_param)[
|
b4_parse_param]))[
|
||||||
{
|
{
|
||||||
int yynrhs = yyr2[yyrule];
|
int yynrhs = yyr2[yyrule];
|
||||||
int yyi;
|
int yyi;
|
||||||
@@ -971,7 +971,8 @@ enum { YYPUSH_MORE = 4 };
|
|||||||
[[yypstate *yyps], [yyps]],
|
[[yypstate *yyps], [yyps]],
|
||||||
[[int yynchar], [yynchar]],
|
[[int yynchar], [yynchar]],
|
||||||
[[YYSTYPE const *yynlval], [yynlval]]
|
[[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
|
],[#ifdef YYPARSE_PARAM
|
||||||
]b4_c_function_decl([yyparse], [int],
|
]b4_c_function_decl([yyparse], [int],
|
||||||
[[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
|
[[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
|
||||||
@@ -1081,8 +1082,7 @@ m4_define([b4_declare_yyparse_variables],
|
|||||||
])
|
])
|
||||||
m4_divert_pop([KILL])dnl# ====================== End of M4 code.
|
m4_divert_pop([KILL])dnl# ====================== End of M4 code.
|
||||||
|
|
||||||
b4_push_if([],[b4_pure_if([],
|
b4_pure_if([], [b4_declare_parser_variables])
|
||||||
[b4_declare_parser_variables])])
|
|
||||||
|
|
||||||
b4_push_if([b4_declare_yyparse_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]],
|
b4_c_function_def([yypush_parse], [int], [[yypstate *yyps], [yyps]],
|
||||||
[[int yynchar], [yynchar]],
|
[[int yynchar], [yynchar]],
|
||||||
[[YYSTYPE const *yynlval], [yynlval]]
|
[[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
|
#ifdef YYPARSE_PARAM
|
||||||
b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])
|
b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])
|
||||||
#else /* ! YYPARSE_PARAM */
|
#else /* ! YYPARSE_PARAM */
|
||||||
@@ -1102,7 +1103,6 @@ b4_c_function_def([yyparse], [int], b4_parse_param)
|
|||||||
#endif])
|
#endif])
|
||||||
{[
|
{[
|
||||||
]b4_pure_if([b4_declare_parser_variables])[
|
]b4_pure_if([b4_declare_parser_variables])[
|
||||||
]b4_push_if([b4_declare_parser_variables])[
|
|
||||||
int yystate;
|
int yystate;
|
||||||
int yyn;
|
int yyn;
|
||||||
int yyresult;
|
int yyresult;
|
||||||
@@ -1700,7 +1700,8 @@ typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
|
|||||||
[[]b4_prefix[pstate *]b4_prefix[pstate], []b4_prefix[pstate]],
|
[[]b4_prefix[pstate *]b4_prefix[pstate], []b4_prefix[pstate]],
|
||||||
[[int yynchar], [yynchar]],
|
[[int yynchar], [yynchar]],
|
||||||
[[YYSTYPE const *yynlval], [yynlval]]
|
[[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 };])[
|
enum { YYPUSH_MORE = 4 };])[
|
||||||
|
|
||||||
m4_ifdef([b4_provides],
|
m4_ifdef([b4_provides],
|
||||||
|
|||||||
@@ -2053,7 +2053,7 @@ yyreduce:
|
|||||||
|
|
||||||
/* Line 1269 of yacc.c */
|
/* Line 1269 of yacc.c */
|
||||||
#line 258 "parse-gram.y"
|
#line 258 "parse-gram.y"
|
||||||
{ push_parser = true; }
|
{ push_parser = true; pure_parser = true; }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 29:
|
case 29:
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ prologue_declaration:
|
|||||||
| "%output" "=" STRING { spec_outfile = $3; } /* deprecated */
|
| "%output" "=" STRING { spec_outfile = $3; } /* deprecated */
|
||||||
| "%parse-param" "{...}" { add_param ("parse_param", $2, @2); }
|
| "%parse-param" "{...}" { add_param ("parse_param", $2, @2); }
|
||||||
| "%pure-parser" { pure_parser = true; }
|
| "%pure-parser" { pure_parser = true; }
|
||||||
| "%push-parser" { push_parser = true; }
|
| "%push-parser" { push_parser = true; pure_parser = true; }
|
||||||
| "%require" STRING { version_check (&@2, $2); }
|
| "%require" STRING { version_check (&@2, $2); }
|
||||||
| "%skeleton" STRING { skeleton = $2; }
|
| "%skeleton" STRING { skeleton = $2; }
|
||||||
| "%token-table" { token_table_flag = true; }
|
| "%token-table" { token_table_flag = true; }
|
||||||
|
|||||||
Reference in New Issue
Block a user