Ruby tools to develop compilers

Hi,

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

Le Lann Jean-Christophe wrote:

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.

BTW, please share your finds!

I agree! :slight_smile:

fedzor a écrit :

BTW, please share your finds!

Well, ok. ‘Plenty’ is not the right word, nor ‘small tools’ (I guess)

RACC
ANTLR (ruby generator)
Treetop
Ruby-lex, Ruby- yacc

Any other one ? Which one do you use ?

Bye!
JC

On Mar 2, 2008, at 11:36 AM, Le Lann Jean-Christophe wrote:

Hi,

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.

-> ASM Compilers or interpreters?

BTW, please share your finds!

-------------------------------------------------------|
~ Ari
Careful - I’m like Stallman with katanas!

On Mon, Mar 3, 2008 at 1:40 PM, Le Lann Jean-Christophe
[email protected] wrote:

Ruby-lex isn’t a lexer written in Ruby usable for other grammars, it
is a lexer for the ruby language itself.

Treetop is by far the easiest to work with.
Also not on your list, is ragel, which builds very fast state machines.

Daniel Brumbaugh K.

On 3/2/08, Le Lann Jean-Christophe [email protected]
wrote:

Hi,

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.

I’ll join the chorus for TreeTop: it’s pleasant to work with…
though, it doesn’t produce the fastest parsers around.

There’s also Ruby parsec if you want to go the parser combinator route:
http://docs.codehaus.org/display/JPARSEC/Ruby+Parsec
I have not played with it, though.

Phil

On Wed, Mar 5, 2008 at 2:47 PM, Daniel Brumbaugh K. wrote:

Ruby-lex isn’t a lexer written in Ruby usable for other grammars, it
is a lexer for the ruby language itself.

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.

Not all features of lex are implemented.

http://raa.ruby-lang.org/project/ruby-lex/
http://www.less.de/download/ruby-lex-1.4.tgz

Daniel Brumbaugh K.

Phil T. a écrit :

There’s also Ruby parsec if you want to go the parser combinator route:
http://docs.codehaus.org/display/JPARSEC/Ruby+Parsec
I have not played with it, though.

Thanks all for your answers,

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