archives

mechanics of designing and implementing a language

Hi all,
I am trying to develop a language...mainly to experiment with relational models and to learn language/compiler design. Some how I managed to finish my undergrad in Comp. Sci. (about 4 years ago) without taking a compiler design course. Now I am trying to figure out how best to start developing this language. I have some ideas..basically start with java and add multimethods, list comprehensions that understand tuples and allow 'tuple joins,' operater overloading, etc., etc.

Any way, I started out by writing our what my code might look like...but it seems I've been concentrating too much on syntax rather than the semantics. Then I switched to drawing abstract syntax trees but they only seem to capture specific programs. (i learned some of these PLT related words in the past few days so excuse their abuse).

I'd like to code a small 'core.' Then extend then core as I learn new concepts (message passing concurency, lambda expressions, etc.). Developing a syntax, messing around with parsers, (as I mentioned earlier) seems to be more of a distraction at such an early stage. How should I approach this. I've been reading books, papers and looking at features of existing languages...I'm not sure what's the most effecient way of actually starting to implement all these (often overwhelming) ideas.

I'm not sure if it is relevant but I've been skipping around the following books:
PVR & SH's CTM of CP (somehow I think most of you know what that means)
Grune,Bal,Jacobs&Langendoen's Modern Compiler Design
Sebesta's Concepts of PLs
and obviously Date's Database Systems.

Finally, I'll likely use Java or C# for parsing, dealing with AST, code generation, etc. Eventually I'd like to either have this language be interpreted by Parrot or have it compiled...by first translating it to C.

Thanks!
Falcon