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;
These features are experimental. More user feedback will help to
stabilize them.
+** Multiple %define's for any variable is now an error not a warning.
+
** %define can now be invoked via the command line.
- Each of these bison command-line options
+ Each of these command-line options
+
+ -D NAME[=VALUE]
+ --define=NAME[=VALUE]
- -D NAME=VALUE
- --define=NAME=VALUE
+ -F NAME[=VALUE]
+ --force-define=NAME[=VALUE]
is equivalent to this grammar file declaration
- %define NAME "VALUE"
+ %define NAME ["VALUE"]
- for any NAME and VALUE. Omitting `=VALUE' on the command line is
- equivalent to omitting `"VALUE"' in the declaration.
+ except that the manner in which Bison processes multiple definitions
+ for the same NAME differs. Most importantly, -F and --force-define
+ quietly override %define, but -D and --define do not. For further
+ details, see the section "Bison Options" in the Bison manual.
** %define variables renamed.