]> git.saurik.com Git - bison.git/commitdiff
parser: handle %locations as %define locations.
authorAkim Demaille <demaille@gostai.com>
Sun, 5 Apr 2009 20:05:08 +0000 (22:05 +0200)
committerAkim Demaille <demaille@gostai.com>
Mon, 6 Apr 2009 11:24:47 +0000 (13:24 +0200)
* src/getargs.h, src/getargs.c (locations_flag): Remove.
* src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
to set "locations" to true.
* src/output.c (prepare): Don't output "locations".
* src/scan-gram.l (%locations): Handle it as a %<flag>.
* src/parse-gram.y: It's no longer a token.
Don't handle it.
* data/bison.m4 (b4_locations_if): Define it with
b4_percent_define_if_define.
* data/c.m4, data/glr.cc: Adjust.

ChangeLog
data/bison.m4
data/c.m4
data/glr.cc
src/getargs.c
src/getargs.h
src/output.c
src/parse-gram.y
src/scan-code.l
src/scan-gram.l

index 80aea8b7d8a863a50324b51b9ede5a6da591c64e..427b62da061aff722491e03ebd3a3734e5aedcab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2009-04-06  Akim Demaille  <demaille@gostai.com>
+
+       parser: handle %locations as %define locations.
+       * src/getargs.h, src/getargs.c (locations_flag): Remove.
+       * src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
+       to set "locations" to true.
+       * src/output.c (prepare): Don't output "locations".
+       * src/scan-gram.l (%locations): Handle it as a %<flag>.
+       * src/parse-gram.y: It's no longer a token.
+       Don't handle it.
+       * data/bison.m4 (b4_locations_if): Define it with
+       b4_percent_define_if_define.
+       * data/c.m4, data/glr.cc: Adjust.
+
 2009-04-06  Akim Demaille  <demaille@gostai.com>
 
        Regen.
index fa8b043a2ce823f56c7cb0fe6ceed9d6ab36372e..89918ac2aadc72cc12e6dff3d78cdc8de41108b7 100644 (file)
@@ -333,7 +333,6 @@ m4_define([b4_$3_if],
 # Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise.
 b4_define_flag_if([defines])           # Whether headers are requested.
 b4_define_flag_if([glr])               # Whether a GLR parser is requested.
-b4_define_flag_if([locations])         # Whether locations are tracked.
 b4_define_flag_if([nondeterministic])  # Whether conflicts should be handled.
 b4_define_flag_if([yacc])              # Whether POSIX Yacc is emulated.
 
@@ -687,6 +686,7 @@ b4_percent_define_if_define([assert])
 b4_percent_define_if_define([debug])
 b4_percent_define_if_define([error_verbose])
 b4_percent_define_if_define([lex_symbol])
+b4_percent_define_if_define([locations])     # Whether locations are tracked.
 b4_percent_define_if_define([variant])
 
 
index ffa4a84a6e751b34d5588e32a8a22234342ea17a..5df04cbb8f6c4a77e1ad1f961d7010736cfe6596 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -75,7 +75,7 @@ m4_define([b4_identification],
 #define YYPULL ]b4_pull_flag])[
 
 /* Using locations.  */
-#define YYLSP_NEEDED ]b4_locations_flag[
+#define YYLSP_NEEDED ]b4_locations_if([1], [0])[
 ]])
 
 
index 2d9fc4c6ed69139d3d17d326c8f7460379b38779..0b4000a9deb693f2c3b2da9776b7253d0f841787 100644 (file)
@@ -44,7 +44,7 @@
 #   filename member).
 
 # We require a pure interface using locations.
-m4_define([b4_locations_flag], [1])
+m4_define([b4_percent_define(locations)], [])
 m4_define([b4_pure_flag],      [1])
 
 # The header is mandatory.
@@ -228,7 +228,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
 #include <iostream>
 
 /* Using locations.  */
-#define YYLSP_NEEDED ]b4_locations_flag[
+#define YYLSP_NEEDED ]b4_locations_if([1], [0])[
 
 ]b4_namespace_open[
   class position;
index 7a67878a1a6f4133c71b97a39d4abddd11bc1648..d7e438507e5fce3e84e52858ec9e26d9f1e1c1a9 100644 (file)
@@ -50,7 +50,6 @@
 bool defines_flag;
 bool graph_flag;
 bool xml_flag;
-bool locations_flag;
 bool no_lines_flag;
 bool token_table_flag;
 bool yacc_flag;        /* for -y */
@@ -635,7 +634,8 @@ getargs (int argc, char *argv[])
        break;
 
       case LOCATIONS_OPTION:
-       locations_flag = true;
+        muscle_percent_define_ensure ("locations",
+                                      command_line_location (), true);
        break;
 
       case PRINT_LOCALEDIR_OPTION:
index c85cb5fa60af1d632b62aa9a871e5538627b311b..13efae2c0bf9014eb2fcc418b834a5462a12d50b 100644 (file)
@@ -38,7 +38,6 @@ extern char const *include;
 extern bool defines_flag;              /* for -d */
 extern bool graph_flag;                        /* for -g */
 extern bool xml_flag;                  /* for -x */
-extern bool locations_flag;
 extern bool no_lines_flag;             /* for -l */
 extern bool token_table_flag;          /* for -k */
 extern bool yacc_flag;                 /* for -y */
index a06698ce7ff32e755d824b4eb7ae55b354d90cc6..9da543a39882114537f61ec150885393d016548d 100644 (file)
@@ -702,7 +702,6 @@ prepare (void)
   /* Flags. */
   MUSCLE_INSERT_BOOL ("defines_flag", defines_flag);
   MUSCLE_INSERT_BOOL ("glr_flag", glr_parser);
-  MUSCLE_INSERT_BOOL ("locations_flag", locations_flag);
   MUSCLE_INSERT_BOOL ("nondeterministic_flag", nondeterministic_parser);
   MUSCLE_INSERT_BOOL ("synclines_flag", !no_lines_flag);
   MUSCLE_INSERT_BOOL ("tag_seen_flag", tag_seen);
index 7277105658e95f8152e22701e5c166164515091d..e45f4bc2387ff6e276aa1ab0bdda95cdca8a563a 100644 (file)
@@ -139,7 +139,6 @@ static int current_prec = 0;
   PERCENT_INITIAL_ACTION  "%initial-action"
   PERCENT_LANGUAGE        "%language"
   PERCENT_LEX_PARAM       "%lex-param"
-  PERCENT_LOCATIONS       "%locations"
   PERCENT_NAME_PREFIX     "%name-prefix"
   PERCENT_NO_DEFAULT_PREC "%no-default-prec"
   PERCENT_NO_LINES        "%no-lines"
@@ -258,7 +257,6 @@ prologue_declaration:
     }
 | "%language" STRING           { language_argmatch ($2, grammar_prio, @1); }
 | "%lex-param" "{...}"         { add_param ("lex_param", $2, @2); }
-| "%locations"                  { locations_flag = true; }
 | "%name-prefix" STRING         { spec_name_prefix = $2; }
 | "%name-prefix" "=" STRING     { spec_name_prefix = $3; } /* deprecated */
 | "%no-lines"                   { no_lines_flag = true; }
index 7a655fb875dec0f805bde448cb2b7c1ffe2adcbd..913116fbeb8f640f5cae17062b9843e6b910ab9f 100644 (file)
@@ -1,6 +1,6 @@
 /* Bison Action Scanner                             -*- C -*-
 
-   Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -34,7 +34,7 @@
 #include <src/getargs.h>
 #include <get-errno.h>
 #include <quote.h>
-
+#include <src/muscle_tab.h>
 #include <src/scan-code.h>
 #include <src/symlist.h>
 
@@ -223,7 +223,7 @@ splice       (\\[ \f\t\v]*\n)*
   "#"       STRING_GROW; in_cpp = true;
 
   {splice}  STRING_GROW;
-  [\n\r]    STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false; 
+  [\n\r]    STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
   [ \t\f]   STRING_GROW;
   .         STRING_GROW; need_semicolon = true;
 }
@@ -236,7 +236,7 @@ splice       (\\[ \f\t\v]*\n)*
   }
   "@$" {
     obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
-    locations_flag = true;
+    muscle_percent_define_ensure("locations", the_location, true);
   }
 }
 
@@ -391,7 +391,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
      ? rule->midrule_parent_rhs_index - 1
      : symbol_list_length (rule->next));
 
-  locations_flag = true;
+  muscle_percent_define_ensure("locations", at_loc, true);
 
   if (*cp == '$')
     obstack_sgrow (&obstack_for_string, "]b4_lhs_location[");
index 8b5027c9d1826847c54c978d5a83be32ae6041b7..fd600bdabf58d0db65367c6a33e43f678603a292 100644 (file)
@@ -191,7 +191,7 @@ splice       (\\[ \f\t\v]*\n)*
   "%language"                       return PERCENT_LANGUAGE;
   "%left"                           return PERCENT_LEFT;
   "%lex-param"                      return PERCENT_LEX_PARAM;
-  "%locations"                      return PERCENT_LOCATIONS;
+  "%locations"                      RETURN_PERCENT_FLAG("locations");
   "%merge"                          return PERCENT_MERGE;
   "%name"[-_]"prefix"               return PERCENT_NAME_PREFIX;
   "%no"[-_]"default"[-_]"prec"      return PERCENT_NO_DEFAULT_PREC;