I've fairly recently been using lemon for building several parsers in
C++ and found what I believe to be a *minimalist* means of avoiding
symbol clashes without adding bloat, or affecting C code generation.
- New '-e' command line option to define the code extension. By default
this is 'c', but with this option can define somethinglike -ecxx etc for
using a C++ compiler.
- New (optional) '%namespace' directive. This can be used to embed the
'Parse*' routines into a C++ namespace. If the '%namespace' is not
defined, there is no change in behaviour.
The namespace can be anonymous or contain multiple nested namespaces.
This makes it easy to generate lemon parsers for C++ without any
potential symbol clashes, and it imposes no C++ interface on the user.
It does not fundamentally change how lemon works.
I hope that the changes are useful enough for broader interest and/or
sufficiently encapsulated that they could be incorporated into the sources.