[Baypiggies] Mini languages

Shannon -jj Behrens jjinux at gmail.com
Tue May 9 01:33:07 CEST 2006


On 5/7/06, Ken Seehart <ken at seehart.com> wrote:
>  Never mind, this is really trivial.  Any C++ code that is outside my
> "cellclass" block is passed on unmodified. The only recursion I have to deal
> with in my grammar is a C++ function body.  And since I don't actually need
> to process the function body, I just need to recursively scan for a pair of
> matching braces (not rocket science).  Everything else is regular
> expressions.  I definitely don't need an LALR parser for this :-)
>
>  So I don't have any further questions.
>
>  Thanks Dennis and Dennis for your comments.
>
>  - Ken
>
>  Ken Seehart wrote:
>
>  I want to implement a simple language translator (a superset of C++), but I
> haven't done anything of this kind since college (a couple decades ago).  I
> would like to use python tools as much as possible.
>
>  NICL code -> [C++ preprocessor (gcc)] -> [NICL translator] -> [C++ compiler
> (gcc)] -> object code
>
>  The translator needs to be able to parse special non-c++ syntax to generate
> c++, and leave other code intact.
>
>  More documentation on my project here:
>
> http://www.seehart.com/neuralintegrator.com/documentation/ni_book/defining_cell_types.st
>
>  I could almost get by with just a python script using regular expressions
> (my grammar is simple enough), but I need to know a certain amount of
> contextual information. E.g., if I am parsing "cellclass mycell { ... }",
> the contents between the braces must be processed accordingly.  This means I
> have to know when I reach the closing brace (which I can't do with regular
> expressions).  However, I'm sure I could do a prototype this way, using the
> assumption that the a closing brace on a class matches "^};", but that would
> be just plain sloppy :-)
>
>  So I think one way or another I'm stuck with implementing an LALR parser.
>
>  I'm wondering if there is anyone in this community with experience doing
> this kind of thing.
>
>  - Ken Seehart

I once interviewed at a company that had implemented a mini-language
on top of C++ using templates and operator overloading.  Apparently,
they had even overloaded the comma operator.

/me shudders

-jj


More information about the Baypiggies mailing list