help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: member with constructor not allowed in union


From: Hans Aberg
Subject: Re: member with constructor not allowed in union
Date: Fri, 15 Mar 2002 16:17:37 +0100

At 13:55 +0100 2002/03/15, Richard B. Kreckel wrote:
>[X] I would prefer the regular bison.simple to work with C++, so we
>    don't have to change all the packages.
>
>What was wrong with the old skeleton?  From what Hans said, it would
>memcpy as soon as the stack was full, causing not-so-nice pyrotechnical
>effects.  Well, it was at least working as long as the stack was low.

Nope: It was working for C++ compilers that did not conform to detect the
"union" error. If you zip out the dynamical part out altogether (i.e., so
it's never compiled under C++), and put in a stack overflow error instead,
then it will compile I figure.

>And, out of curiosity: what makes the stack double-ended?

If you by "double-ended" mean this static-dynamic stack hybrid, then I
think it is there for historical reasons: In the beginning, there was only
the static stack; then someone patched it, writing the dynamic one.

Properly, bison.simple should use either a pure static (with overflow
error) or a pure dynamic one, because in the hybrid, the original static
stack memory is never released, taking up unnecessary space. Then, under
C++, one should be able to use the purely static stack version.

Given these problems, it is better to forget about C++ and bison.simple,
and write new C++ versions.

On 14 Mar 2002, Akim Demaille wrote:
> You are not using the C++ output!  Run bison -S bison.c++.

I think "C++.bison" is a better name.

Also, if it's not already there, it should be a part of the standard Bison
distributions, not only the CVS.

  Hans Aberg





reply via email to

[Prev in Thread] Current Thread [Next in Thread]