[Baypiggies] Mini languages

Dennis Allison allison at shasta.stanford.edu
Sun May 7 21:11:56 CEST 2006

Ken -- 

"a simple language translator" is not comensurate with "a superset of C++"

Some might say it's an oxymoron.

It looks like what you are wanting to do is to build a little lanaague 
that you parse and output C++ object code.  I do that sort of thing all 
the time; and I am sure I am not alone.   There are a bunch of different 
parsing tools available in python, but if the language really is simple, 
I'd go for a recursive descent parser written in python; if it is 
expression heavy, you might want to do expressions by some bottom-up
scheme.  Trees make a nice intermediate form.  The big question is what 
you want to do in terms of optimization.  With a C++ target, I suppose 
that you leave that to gcc.

You might want to reconsider your approach and use python as the language 
and C++ extensions to do the heaavy lifting, if necessary.  You could, of 
course, make custom extensions for specific problems as an optimization.

On Sun, 7 May 2006, 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


More information about the Baypiggies mailing list