On 29 May 2007, at 11:49, Frans Englich wrote:
I'm switching a parser to be GLR in order to simplify the lexer.
It's all in
C++, the parser & tokenizer must be exceptions safe(hence, Bison
destructors
cannot be used to free values, as far as I know), and it must be
reentrant.
My current parser does not use the C++ skeleton despite being
compiled as C++
code, which from my understanding is bad practice(correct?).
I don't know about the GLR parser, but the ordinary C parser stack
does not invoke the copy constructors correctly when it reallocates:
it just copies over the memory data.
My semantic
value is a class with non-POD members; I don't use %union.
So either use a semantic type which does not use non-trivial copy
constructors, or a stack that does not re-allocate (using say
std::vector or std::deque), or a C++ stack.
Hans Aberg
_______________________________________________
[email protected] http://lists.gnu.org/mailman/listinfo/help-bison