Rename token.prefix as api.tokens.prefix.

Discussed here.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00024.html.

	* NEWS, data/bison.m4, data/c.m4, data/java.m4, doc/bison.texinfo,
	* tests/c++.at, tests/calc.at, tests/java.at, tests/local.at
	(token.prefix): Rename as...
	(api.tokens.prefix): this.
This commit is contained in:
Akim Demaille
2009-05-15 16:06:31 +02:00
parent 3c248d705d
commit 4c6622c2dd
10 changed files with 67 additions and 55 deletions

View File

@@ -1,3 +1,14 @@
2009-05-15 Akim Demaille <demaille@gostai.com>
Rename token.prefix as api.tokens.prefix.
Discussed here.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00024.html.
* NEWS, data/bison.m4, data/c.m4, data/java.m4, doc/bison.texinfo,
* tests/c++.at, tests/calc.at, tests/java.at, tests/local.at
(token.prefix): Rename as...
(api.tokens.prefix): this.
2009-05-11 Akim Demaille <demaille@gostai.com>
doc: use C++ headers.

6
NEWS
View File

@@ -9,14 +9,14 @@ Bison News
Also, it is possible to add code to the parser's constructors using
"%code init" and "%define init_throws".
** Variable token.prefix
** Variable api.tokens.prefix
The variable token.prefix changes the way tokens are identified in
The variable api.tokens.prefix changes the way tokens are identified in
the generated files. This is especially useful to avoid collisions
with identifiers in the target language. For instance
%token FILE for ERROR
%define token.prefix "TOK_"
%define api.tokens.prefix "TOK_"
%%
start: FILE for ERROR;

View File

@@ -355,7 +355,7 @@ m4_define([b4_symbol_],
# undefined. If FIELD = id, prepend the prefix.
m4_define([b4_symbol],
[m4_case([$2],
[id], [m4_do([b4_percent_define_get([token.prefix])],
[id], [m4_do([b4_percent_define_get([api.tokens.prefix])],
[b4_symbol_([$1], [id])])],
[b4_symbol_($@)])])
@@ -769,8 +769,8 @@ m4_define([b4_percent_code_ifdef],
# Default values for %define.
# ---------------------------
# If the %token.prefix, it is empty.
m4_percent_define_default([[token.prefix]], [[]])
# If the api.tokens.prefix, it is empty.
m4_percent_define_default([[api.tokens.prefix]], [[]])

View File

@@ -190,7 +190,7 @@ static const b4_int_type_for([$2]) yy$1[[]] =
# -----------------------------------------
# Output the definition of this token as #define.
m4_define([b4_token_define],
[#define b4_percent_define_get([token.prefix])$1 $2
[#define b4_percent_define_get([api.tokens.prefix])$1 $2
])
@@ -208,7 +208,7 @@ m4_map([b4_token_define], [$@])])
# ---------------------------------------
# Output the definition of this token as an enum.
m4_define([b4_token_enum],
[b4_percent_define_get([token.prefix])$1 = $2])
[b4_percent_define_get([api.tokens.prefix])$1 = $2])
# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)

View File

@@ -147,7 +147,7 @@ m4_define([b4_integral_parser_table_define],
# Output the definition of this token as an enum.
m4_define([b4_token_enum],
[ /** Token number, to be returned by the scanner. */
static final int b4_percent_define_get([token.prefix])$1 = $2;
static final int b4_percent_define_get([api.tokens.prefix])$1 = $2;
])

View File

@@ -4902,6 +4902,43 @@ More user feedback will help to stabilize it.)
@end itemize
@c api.push-pull
@item api.tokens.prefix
@findex %define api.tokens.prefix
@itemize
@item Languages(s): all
@item Purpose:
Add a prefix to the token names when generating their definition in the
target language. For instance
@example
%token FILE for ERROR
%define api.tokens.prefix "TOK_"
%%
start: FILE for ERROR;
@end example
@noindent
generates the definition of the symbols @code{TOK_FILE}, @code{TOK_for},
and @code{TOK_ERROR} in the generated source files. In particular, the
scanner must use these prefixed token names, while the grammar itself
may still use the short names (as in the sample rule given above). The
generated informational files (@file{*.output}, @file{*.xml},
@file{*.dot}) are not modified by this prefix. See @ref{Calc++ Parser}
and @ref{Calc++ Scanner}, for a complete example.
@item Accepted Values:
Any string. Should be a valid identifier prefix in the target language,
in other words, it should typically be an identifier itself (sequence of
letters, underscores, and ---not at the beginning--- digits).
@item Default Value:
empty
@end itemize
@c api.tokens.prefix
@item error-verbose
@findex %define error-verbose
@itemize
@@ -5192,42 +5229,6 @@ is not already defined, so that the debugging facilities are compiled.
@end itemize
@c parse.trace
@item token.prefix
@findex %define token.prefix
@itemize
@item Languages(s): all
@item Purpose:
Add a prefix to the token names when generating their definition in the
target language. For instance
@example
%token FILE for ERROR
%define token.prefix "TOK_"
%%
start: FILE for ERROR;
@end example
@noindent
generates the definition of the symbols @code{TOK_FILE}, @code{TOK_for},
and @code{TOK_ERROR} in the generated source files. In particular, the
scanner must use these prefixed token names, while the grammar itself
may still use the short names (as in the sample rule given above). The
generated informational files (@file{*.output}, @file{*.xml},
@file{*.dot}) are not modified by this prefix. See @ref{Calc++ Parser}
and @ref{Calc++ Scanner}, for a complete example.
@item Accepted Values:
Any string. Should be a valid identifier prefix in the target language,
in other words, it should typically be an identifier itself (sequence of
letters, underscores, and ---not at the beginning--- digits).
@item Default Value:
empty
@end itemize
@c token.prefix
@end table
@end deffn
@c ---------------------------------------------------------- %define
@@ -8817,11 +8818,11 @@ The token numbered as 0 corresponds to end of file; the following line
allows for nicer error messages referring to ``end of file'' instead of
``$end''. Similarly user friendly names are provided for each symbol.
To avoid name clashes in the generated files (@pxref{Calc++ Scanner}),
prefix tokens with @code{TOK_} (@pxref{Decl Summary,, token.prefix}).
prefix tokens with @code{TOK_} (@pxref{Decl Summary,, api.tokens.prefix}).
@comment file: calc++-parser.yy
@example
%define token.prefix "TOK_"
%define api.tokens.prefix "TOK_"
%token END 0 "end of file"
%token ASSIGN ":="
%token <sval> IDENTIFIER "identifier"

View File

@@ -199,7 +199,7 @@ AT_CHECK_VARIANTS([])
AT_CHECK_VARIANTS([%define parse.assert])
AT_CHECK_VARIANTS([[%define parse.assert %code {\n#define ONE_STAGE_BUILD\n}]])
AT_CHECK_VARIANTS([[%define parse.assert %define lex_symbol %code {\n#define USE_LEX_SYMBOL\n}]])
AT_CHECK_VARIANTS([[%define parse.assert %define lex_symbol %code {\n#define USE_LEX_SYMBOL\n} %define token.prefix "TOK_"]])
AT_CHECK_VARIANTS([[%define parse.assert %define lex_symbol %code {\n#define USE_LEX_SYMBOL\n} %define api.tokens.prefix "TOK_"]])
## ----------------------- ##

View File

@@ -579,7 +579,7 @@ AT_CHECK_CALC_LALR([%define api.push-pull "both" %define api.pure %locations])
AT_CHECK_CALC_LALR([%error-verbose %locations])
AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc])
AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %define token.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %define api.tokens.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_LALR([%debug])
AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
@@ -620,7 +620,7 @@ AT_CHECK_CALC_GLR([%error-verbose %locations %defines %name-prefix "calc" %verbo
AT_CHECK_CALC_GLR([%debug])
AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %name-prefix "calc" %define token.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %name-prefix "calc" %define api.tokens.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_GLR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
@@ -650,7 +650,7 @@ AT_CHECK_CALC_LALR1_CC([%locations %error-verbose %name-prefix "calc" %verbose %
AT_CHECK_CALC_LALR1_CC([%locations %error-verbose %debug %name-prefix "calc" %verbose %yacc])
AT_CHECK_CALC_LALR1_CC([%locations %pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc])
AT_CHECK_CALC_LALR1_CC([%locations %pure-parser %error-verbose %debug %name-prefix "calc" %define token.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_LALR1_CC([%locations %pure-parser %error-verbose %debug %name-prefix "calc" %define api.tokens.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_LALR1_CC([%locations %pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
@@ -679,6 +679,6 @@ AT_CHECK_CALC_GLR_CC([%debug])
AT_CHECK_CALC_GLR_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc])
AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc])
AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %define token.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %define api.tokens.prefix "TOK_" %verbose %yacc])
AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])

View File

@@ -487,7 +487,7 @@ AT_CHECK_JAVA_GREP([[class YYParser]])
AT_CHECK_JAVA_MINIMAL([[%name-prefix "Prefix"]])
AT_CHECK_JAVA_GREP([[class PrefixParser]])
AT_CHECK_JAVA_MINIMAL([[%define token.prefix "TOK_"]])
AT_CHECK_JAVA_MINIMAL([[%define api.tokens.prefix "TOK_"]])
AT_CHECK_JAVA_GREP([[.*TOK_END.*]])
AT_CHECK_JAVA_MINIMAL([[%define parser_class_name "ParserClassName"]])

View File

@@ -88,8 +88,8 @@ m4_pushdef([AT_NAME_PREFIX],
[m4_bregexp([$3], [name-prefix "\([^"]*\)"], [\1])],
[yy])])
m4_pushdef([AT_TOKEN_PREFIX],
[m4_bmatch([$3], [%define token.prefix ".*"],
[m4_bregexp([$3], [%define token.prefix "\(.*\)"], [\1])])])
[m4_bmatch([$3], [%define api.tokens.prefix ".*"],
[m4_bregexp([$3], [%define api.tokens.prefix "\(.*\)"], [\1])])])
# yyerror receives the location if %location & %pure & (%glr or %parse-param).
m4_pushdef([AT_YYERROR_ARG_LOC_IF],
[AT_GLR_OR_PARAM_IF([AT_PURE_AND_LOC_IF([$1], [$2])],