For some days now, I have been trying to find the best Ruby tools to develop compilers : lexer, parser and possibly more (ast, visitor).
There seems to be plenty of small tools, but it is difficult to know whether they are mature or not.
So I would like to have feeback on your own experience in this field.
Thanks
JC
It depends more on the scope of the compiler(s), languages, operating systems where the compilers will run, etc., then it does on the "tools". If you're looking for a highly portable compiler for a variety of architectures and operating systems, for example, you're probably better off building a front end for the languages to the GCC intermediate and code generation pieces. And if you're building a compiler for a language already handled by GCC, the best advice I can give you is, "don't bother".
That said, the Ruby *parser* that seems to have the best user interface is Treetop. I've only done a couple of small things in it, but it's a lot easier to read Treetop code than it is to read, say, racc.
Regarding TreeTop, there is a tutorial by its author at http://rubyconf2007.confreaks.com/d1t1p5_treetop.html\.
My preference goes to Treetop too, because it seems elegant and based on efficient algorithms. (I will give my own feedback on real grammars, when ready)
Nobody is using Antlr with Ruby output ? Antlr seemed great because it gives you access to a bunch of various grammars, already described.
Regards,
JC
···
On 3/2/08, Le Lann Jean-Christophe <jean-christophe.lelann@orange.fr> wrote:
Please forgive my error, I was thinking of the RubyLex class included
in IRB. It appears there is a project of the same name that can be
found at the links below. To add to the confusion, RubyLex files end
in .rl, the same as Ragel. For the education of this mailing list,
I've copied the introduction of its README.
Lexical analyzer generator V1.3 by Harald Grosse.
This extension adds to ruby a functionality to work with lex for C programs
as well as for ruby Code. It reads the grammar specification, modify the
code so that lex accepted the ruby elements, compile this code with flex
to lex.yy.c and build an comparable Ruby coded analayzer from this file.