|C++ and parser generators email@example.com (Jan Peter de Ruiter) (1994-02-04)|
|Re: C++ parser generators, PCCTS firstname.lastname@example.org (Terence Parr) (1994-02-05)|
|Re: C++ and parser generators email@example.com (1994-02-06)|
|C++ and parser generators BBURSHTE@us.oracle.com (BBURSHTE.US.ORACLE.COM) (1994-02-07)|
|Muskox report available for FTP firstname.lastname@example.org (John Levine) (1994-02-10)|
|From:||Jan Peter de Ruiter <email@example.com>|
|Keywords:||C++, parse, tools, PCCTS|
|Date:||Fri, 4 Feb 1994 16:57:48 GMT|
There are now I believe many people who want to have their parser
generators (and other code generators) to produce edible C++ output.
At first, I tried to use Alain Coetmeur's bison++/flex++, package, which is
a bison/flex that generates a parser class, and neat header files with it.
Although this is surely an improvement, there are still problems with
memory allocation. One problem is that a %union cannot handle classes with
constructors (because C++ does not want unions with constructors). One
could generate a struct instead, but then (according to Alain) you run
into other problems because the "%union" structs are allocated using C
heap routines. This will not work (i.e. usually crash) if your classes
happen to destroy themselves using delete.
Now I have an advice and a question. The advice (for people wanting to
build compilers in C++) is to have a look at the PCCTS system. It's not
only a *very good* parser generator, but it can be easily adapted to
generate C++ actions painlessly. Also, it gives you more control over the
construction / destruction of attributes. If you're interested, get the
archive by ftp from en.ecn.purdue.edu.
The question is this: To me it seems to be the case that C++ would be a
very convenient language to build a parser generator in. Using the strong
static typing of C++ and well organised data hiding principles it might
even be possible that such a parser generator had a certain didactical
value, in the sense that the LALR parser table algorithm could be
expressed in a highly readable way. So: is there somebody out there who is
working on yacc-like tools, written in and for C++?
Jan Peter de Ruiter
Max Planck Institute for Psycholinguistics
Return to the
Search the comp.compilers archives again.