]> git.saurik.com Git - bison.git/commit - src/parse-gram.c
Fix handling of yychar manipulation in user semantic actions.
authorJoel E. Denny <jdenny@clemson.edu>
Sun, 20 Dec 2009 07:22:53 +0000 (02:22 -0500)
committerJoel E. Denny <jdenny@clemson.edu>
Tue, 22 Dec 2009 19:50:45 +0000 (14:50 -0500)
commitabcc7c03ccf95f3c19445330b9b6d55365c85ccc
treea0f3a0b34d961fe0444e021e692bdef9654bf502
parent62efdd2a85847c8b7559d312e7cada6ca03a2779
Fix handling of yychar manipulation in user semantic actions.

The problem was that yacc.c didn't always update the yychar
translation afterwards.  However, other skeletons appear to be
fine.  glr.c appears to already translate yychar before every
use.  lalr1.cc does not define yychar and does not document its
replacement, yyla, for users.  It does provide yyclearin, but
that does not manipulate yyla and thus requires no translation
update.  In lalr1.java, yychar is out of scope during semantic
actions.
* NEWS (2.5): Document.
* data/yacc.c (YYBACKUP): Don't bother translating yychar into
yytoken here.
(yyparse, yypush_parse): Instead, translate before every use of
yytoken, and add comments explaining this approach.
* tests/actions.at (Destroying lookahead assigned by semantic
action): New test group checking that translation happens before
lookahead destructor calls at parser return.  Previously,
incorrect destructors were called.
* tests/conflicts.at (%error-verbose and consistent
errors): New test group checking that translation happens at
syntax error detection before the associated verbose error
message and the associated lookahead destructor calls.  While
the destructor call is fixed by this patch, the verbose error
message is currently incorrect due to another bug (see
comments in test group), so this is an expected failure for now.
(cherry picked from commit df222dfaf4da6becae8665d344669eefc705d7f7)

Conflicts:

src/parse-gram.c
src/parse-gram.h
ChangeLog
NEWS
data/yacc.c
src/parse-gram.c
src/parse-gram.h
tests/actions.at
tests/conflicts.at