mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
In GLR grammars, $N and @N now yield non-modifiable lvalues.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2003-10-04 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* data/glr.c (b4_rhs_value, b4_rhs_location): Yield a
|
||||
non-modifiable lvalue, instead of a modifiable one.
|
||||
* doc/bison.texinfo (Actions): Document that $$ can
|
||||
be assigned to. Do not claim that $$ and $N are
|
||||
array element references: user code should not rely on this.
|
||||
|
||||
2003-10-01 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* src/parse-gram.h (PERCENT_NO_DEFAULT_PREC): New token.
|
||||
|
||||
@@ -111,7 +111,7 @@ m4_define([b4_lhs_value],
|
||||
# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
|
||||
# symbols on RHS.
|
||||
m4_define([b4_rhs_value],
|
||||
[yyvsp@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3])])
|
||||
[((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3])])
|
||||
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ m4_define([b4_lhs_location],
|
||||
# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
|
||||
# on RHS.
|
||||
m4_define([b4_rhs_location],
|
||||
[yyvsp@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc])
|
||||
[((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc])
|
||||
|
||||
# We do want M4 expansion after # for CPP macros.
|
||||
m4_changecom()
|
||||
|
||||
@@ -2797,9 +2797,10 @@ Actions, ,Actions in Mid-Rule}).
|
||||
The C code in an action can refer to the semantic values of the components
|
||||
matched by the rule with the construct @code{$@var{n}}, which stands for
|
||||
the value of the @var{n}th component. The semantic value for the grouping
|
||||
being constructed is @code{$$}. (Bison translates both of these constructs
|
||||
into array element references when it copies the actions into the parser
|
||||
file.)
|
||||
being constructed is @code{$$}. Bison translates both of these
|
||||
constructs into expressions of the appropriate type when it copies the
|
||||
actions into the parser file. @code{$$} is translated to a modifiable
|
||||
lvalue, so it can be assigned to.
|
||||
|
||||
Here is a typical example:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user