c++: provide a means to clear symbols

The symbol destructor is currently the only means to clear a symbol.
Unfortunately during error recovery we might have to clear the
lookahead, which is a local variable (yyla) that has not yet reached
its end of scope.

Rather that duplicating the code to destroy a symbol, or rather than
destroying and recreating yyla, let's provide a means to clear a
symbol.

Reported by Antonio Silva Correia, with an analysis from Michel d'Hooge.
<http://savannah.gnu.org/support/?108481>

* data/c++.m4, data/lalr1.cc (basis_symbol::clear, by_state::clear)
(by_type::clear): New.
(basic_symbol::~basic_symbol): Use clear.
This commit is contained in:
Akim Demaille
2015-01-08 10:19:10 +01:00
parent 5422471cbb
commit ee2f433512
3 changed files with 36 additions and 2 deletions

2
THANKS
View File

@@ -12,6 +12,7 @@ Andreas Schwab schwab@suse.de
Andrew Suffield asuffield@users.sourceforge.net
Angelo Borsotti angelo.borsotti@gmail.com
Anthony Heading ajrh@ajrh.net
Antonio Silva Correia amsilvacorreia@hotmail.com
Arnold Robbins arnold@skeeve.com
Art Haas ahaas@neosoft.com
Baron Schwartz baron@sequent.org
@@ -85,6 +86,7 @@ Matt Rosing rosing@peakfive.com
Michael Felt mamfelt@gmail.com
Michael Hayes m.hayes@elec.canterbury.ac.nz
Michael Raskin 7c6f434c@mail.ru
Michel d'Hooge michel.dhooge@gmail.com
Michiel De Wilde mdewilde.agilent@gmail.com
Mickael Labau labau_m@epita.fr
Mike Castle dalgoda@ix.netcom.com