[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