Re: C++ parser

"Joel de Guzman" <>
20 Jan 2001 16:08:53 -0500

          From comp.compilers

Related articles
C++ parser (Henrique Bucher) (2001-01-18)
Re: C++ parser (Michael Tiomkin) (2001-01-19)
Re: C++ parser (Joel de Guzman) (2001-01-20)
Re: C++ parser (Henrique Bucher) (2001-01-20)
| List of all articles for this month |

From: "Joel de Guzman" <>
Newsgroups: comp.compilers
Date: 20 Jan 2001 16:08:53 -0500
Organization: Compilers Central
References: 01-01-097
Keywords: C++, parse
Posted-Date: 20 Jan 2001 16:08:52 EST


I have one. I am planning to release it as GPL. Right now I am trying
to complete the documentation and seeking comments from interested
people. Feel free to email me if anyone out there is interested. It is
working well. I have a couple of test examples including a byte-code

The grammar is EBNF and allows semantic actions to be attached. The
generated parser is more of a recursive descent parser composed of C++
objects that follows the grammar's parse tree. The parser is
non-deterministic in nature and can be able to parse with infinite
lookahead LL(INF). I chose this path due to my familiarity with C++
object heirarchical embedding. The generated parser is composed of a
heirarchical structure of C++ objects that can immediately be runnable
without compiling. There are many interesting aspects that this
technique opens up. The parser is very dynamic. In fact you can
dynamically add production rules while the parser is running.

many thanks,
Joel de Guzman

----- Original Message -----
From: "Henrique Bucher" <>
| I was wondering if there is a C++ parser class (public domain or GPL)
| that allows the definition of the grammar at runtime, not at compile
| time as yacc. The objective is to ask the user for the grammar rules
| (with a nice interface, of course) and then instruct the parser to
| read an user file. I am almost prepared to start coding but I would
| like to have this try first.

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.