views:

738

answers:

5

Can anyone recommend a parser generator that will produce win32 Delphi code? What I'm trying to do is create a simple Domain-Specific Language.

+4  A: 

Try this:

http://www.grendelproject.nl/dyacclex/

Andrei K.
Thanks. It's pretty old school though. Writing a DSL is already pushing the bounds of acceptability. lex/yacc would just cause people to panic. Regrettably I may have to do my DSL as an XML language.
dangph
Nah, the TP version is old school: http://wiki.freepascal.org/Utilities#tply
Marco van de Voort
+2  A: 

I have not tried this at all and I just noticed the information while I was reading through the documentation, but FastScript, in their documentation which you can get here, says that you can use their parser to create your own language which you specify in an XML file. This might give you something you can use.

+4  A: 

The Delphi versions of Coco/R are quite ok:

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/

most notably Pat Terry's one:

http://www.scifac.ru.ac.za/coco/

Marco van de Voort
+3  A: 

How complex is your DSL?

I created a parser (in Delphi) for the new Delphi RIDL language to support some in-house COM generation tools we use.

My approach was to use ANTLR to play around with the syntax rules until I had something that parsed the various test files I had. I then hand-coded a recursive descent parser (based on the Java generated by ANTLR). I was also using the Castalia Delphi Parser in the project, so I based my lexical analyser on that.

Recursive descent parsers are actually really simple (but tedious :-) ) to write manually.

Alistair Ward
That's a good idea. My DSL is pretty simple. I like the idea of prototyping it in ANTLR too.
dangph
A: 

I found Antlr For Delphi 3.1.1.

SharpPlus Antlr For Delphi Target 3.1.1, a language tool that provides a framework for constructing recognizers, interpreters, compilers with Delphi!

It is a commercial product. I have no idea what it is like.

dangph