]> git.saurik.com Git - bison.git/commitdiff
Make %push-parser imply %pure-parser. This fixes several bugs; see
authorJoel E. Denny <jdenny@ces.clemson.edu>
Sun, 17 Dec 2006 01:33:31 +0000 (01:33 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Sun, 17 Dec 2006 01:33:31 +0000 (01:33 +0000)
<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.

ChangeLog
data/push.c
src/parse-gram.c
src/parse-gram.y

index dd66b0cc3f7395a47d8bd9bf6ed14816c0abfae3..5853bf2e73aab5b67f6b23ebe480b037d915fdf2 100644 (file)
--- a/ChangeLog
+++ b/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>
        and Joel Denny  <jdenny@ces.clemson.edu>
 
index b7eededf9ceb25070e1b7a19fb18418419240d04..d811eba74d80ae24e1963437aab28955bf01102e 100644 (file)
@@ -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],
index 7d90f772bd25022c8a6ed038c7c870e4373faa4a..1b6dd75ab954d717440d9ced1e72945bc3cb3b9d 100644 (file)
@@ -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:
index aabace130e1c0f152c8e28af947ac816de3f53fe..a753fa9a28b04ac93f7ca87048c055f5450d6a12 100644 (file)
@@ -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; }