mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +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>
|
2003-10-01 Paul Eggert <eggert@twinsun.com>
|
||||||
|
|
||||||
* src/parse-gram.h (PERCENT_NO_DEFAULT_PREC): New token.
|
* 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
|
# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
|
||||||
# symbols on RHS.
|
# symbols on RHS.
|
||||||
m4_define([b4_rhs_value],
|
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
|
# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
|
||||||
# on RHS.
|
# on RHS.
|
||||||
m4_define([b4_rhs_location],
|
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.
|
# We do want M4 expansion after # for CPP macros.
|
||||||
m4_changecom()
|
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
|
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
|
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
|
the value of the @var{n}th component. The semantic value for the grouping
|
||||||
being constructed is @code{$$}. (Bison translates both of these constructs
|
being constructed is @code{$$}. Bison translates both of these
|
||||||
into array element references when it copies the actions into the parser
|
constructs into expressions of the appropriate type when it copies the
|
||||||
file.)
|
actions into the parser file. @code{$$} is translated to a modifiable
|
||||||
|
lvalue, so it can be assigned to.
|
||||||
|
|
||||||
Here is a typical example:
|
Here is a typical example:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user