# Parsing ruby-code with the ruby-interpreter itself

**URL:** <https://www.ruby-forum.com/t/parsing-ruby-code-with-the-ruby-interpreter-itself/73399>\
**Category:** Ruby\
**Created:** [October 24, 2006, 1:24pm UTC](https://www.ruby-forum.com/t/parsing-ruby-code-with-the-ruby-interpreter-itself/73399 "2006-10-24T13:24:52Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![cies](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e0b2c6/32.png) [@cies](https://www.ruby-forum.com/u/cies)\
**Post date:** [October 24, 2006, 1:24pm UTC](https://www.ruby-forum.com/t/parsing-ruby-code-with-the-ruby-interpreter-itself/73399/1 "2006-10-24T13:24:52Z")

</div>

at the moment most code editors are using sets of regexps, and other  
difficult stuff to do highlighting and syntax error checking…

i was (naturally) thinking: why?

ruby already contains a nice parser for parsing ruby!  
would it be possible to build hooks into the ruby-interpreter for  
code-editors?

i was thinking a small interface exposed by a (both c and ruby)  
library, that allows other programs (mainly code editors for as far as  
i can imagine) to make use of the relatively fast, and standard  
compliant ruby parser that is already in ruby…

searching the net i found nothing that does this. yet i might have  
searched in the wrong direction.

well, i’m not a good C coder, i tried to look at ruby’s internals to  
figure to find out if i could make a patch… but no; i can’t, i got  
too dizzy 😉

am i suggesting a small layer over the parse.{c,y} and lex.c, or am  
suggesting a much bigger project?

thanks for reading all the way up to the end,  
cies breijs.

–  
“Computer games don’t affect kids; I mean if Pac-Man affected us as  
kids, we’d all be running around in darkened rooms, munching magic  
pills and listening to repetitive electronic music.” – Kristian  
Wilson (Nintendo, Inc), 1989

---

<div class="post-metadata">

**Author:** ![cies](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e0b2c6/32.png) [@cies](https://www.ruby-forum.com/u/cies)\
**Post date:** [October 24, 2006, 3:40pm UTC](https://www.ruby-forum.com/t/parsing-ruby-code-with-the-ruby-interpreter-itself/73399/2 "2006-10-24T15:40:40Z")

</div>

On Tue, 24 Oct 2006 13:23:47 +0200, cies [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> library, that allows other programs (mainly code editors for as far as  
> i can imagine) to make use of the relatively fast, and standard  
> compliant ruby parser that is already in ruby…
> 
> searching the net i found nothing that does this. yet i might have  
> searched in the wrong direction.

There are multiple libraries that do things like that:

First there is Ripper. It works by putting its own hooks into parse.y  
and  
then providing a SAX-like interface. I am not sure about its status and  
how complete it is.

Then there are RubyNode and ParseTree, which wrap Ruby’s internal NODEs.  
They can both take a string, parse it using Ruby’s parser (without  
executing it) and then return the resulting NODE tree. The downside of  
this approach is that comments are ignored, because they are not  
represented in the NODE tree, otherwise it works quite good.

Dominik
