]> git.saurik.com Git - bison.git/commitdiff
%define token.prefix.
authorAkim Demaille <demaille@gostai.com>
Mon, 1 Sep 2008 14:58:13 +0000 (16:58 +0200)
committerAkim Demaille <demaille@gostai.com>
Thu, 13 Nov 2008 06:08:24 +0000 (07:08 +0100)
Provide a means to add a prefix to the name of the tokens as output in the
generated files.  Because of name clashes, it is good to have such a
prefix such as TOK_ that protects from names such as EOF, FILE etc.
But it clutters the grammar itself.

* data/bison.m4 (token.prefix): Empty by default.
* data/c.m4 (b4_token_enum, b4_token_define): Use it.
* data/lalr1.cc (b4_symbol): Ditto.

ChangeLog
data/bison.m4
data/c.m4
data/lalr1.cc

index 56f39316049d3c2e6e38f409706567d44c68e6b5..b73a85c520a9e921822c6f05b76f50957a9969c5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+       %define token.prefix.
+       Provide a means to add a prefix to the name of the tokens as output in the
+       generated files.  Because of name clashes, it is good to have such a
+       prefix such as TOK_ that protects from names such as EOF, FILE etc.
+       But it clutters the grammar itself.
+       
+       * data/bison.m4 (token.prefix): Empty by default.
+       * data/c.m4 (b4_token_enum, b4_token_define): Use it.
+       * data/lalr1.cc (b4_symbol): Ditto.
+
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
        Compute at M4 time some of the subtractions.
index 31f7818162ec27b4abae941a6d18e4dce1d01184..7cb43b800ea4ec07bdccfc4297579abf5ddc7b11 100644 (file)
@@ -542,6 +542,13 @@ m4_define([b4_percent_code_ifdef],
          [$3])])
 
 
+# Default values for %define.
+# ---------------------------
+# If the %token.prefix, it is empty.
+m4_percent_define_default([[token.prefix]], [[]])
+
+
+
 ## ----------------------------------------------------------- ##
 ## After processing the skeletons, check that all the user's   ##
 ## %define variables and %code qualifiers were used by Bison.  ##
index 430a5573290aa1ef7a91b00584f4be6c827d3ef2..683259886b3b8a08410484f7bfb2161872d28aee 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -159,7 +159,7 @@ m4_define([b4_null], [0])
 # -----------------------------------------
 # Output the definition of this token as #define.
 m4_define([b4_token_define],
-[#define $1 $2
+[#define b4_percent_define_get([token.prefix])$1 $2
 ])
 
 
@@ -177,7 +177,7 @@ m4_map([b4_token_define], [$@])])
 # ---------------------------------------
 # Output the definition of this token as an enum.
 m4_define([b4_token_enum],
-[$1 = $2])
+[b4_percent_define_get([token.prefix])$1 = $2])
 
 
 # b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
index 97ba371bd8795235b5f1a93fc0eeaeb5c0991c56..851c165bea4bc290daf59227cc21fac996fcc8d1 100644 (file)
@@ -146,9 +146,10 @@ m4_define([b4_rhs_location],
 # b4_symbol(NUM, FIELD)
 # ---------------------
 # Recover a FIELD about symbol #NUM.  Thanks to m4_indir, fails if
-# undefined.
+# undefined.  If FIELD = id, prepend the prefix.
 m4_define([b4_symbol],
-[m4_indir([b4_symbol($1, $2)])])
+[m4_if([$2], [id], [b4_percent_define_get([token.prefix])])dnl
+m4_indir([b4_symbol($1, $2)])])
 
 
 # b4_symbol_if(NUM, FIELD, IF-TRUE, IF-FALSE)