%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.
This commit is contained in:
Akim Demaille
2008-09-01 16:58:13 +02:00
parent 3204049e31
commit 5679f31101
4 changed files with 24 additions and 4 deletions

View File

@@ -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.

View 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. ##

View File

@@ -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)

View 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)