2010-08-30 22 views
0

J'utilise ripper pour faire lexie ruby-code dans mri-1.9. *, Je voudrais faire la même chose dans JRuby, j'ai remarqué qu'il y a cette org.jruby.lexer.yacc.RubyYaccLexer utilisé dans org.jruby.parser.DefaultRubyParser, je pense que je peux l'utiliser pour faire ce que dans mri-ripper 1.9. * ne, mais certainement à un niveau inférieur par rapport à ripper . Être un Noob en Java, je ne pouvais pas comprendre comment l'utiliser à partir de jruby. Je ne suis pas sûr que ce soit réalisable, j'espère obtenir des conseils à ce sujet.Comment utiliser JRuby org.jruby.lexer.yacc.RubyYaccLexer

Répondre

1

Jetez un oeil à this post from JRuby committer Ola Bini. Dans ce document, il montre une brève utilisation de l'AST de JRuby. Vous pouvez utiliser le code de JRuby pour créer un AST et le parcourir en mémoire, le manipuler et le retourner en code exécutable. Il ne vous donne pas la même approche semblable à un événement comme Ripper, mais en parcourant l'AST, vous pouvez obtenir des informations similaires.

+0

Oui, mais nécessite JRuby.ast syntaxe Ruby valide? Il y a des occasions où je dois manipuler le code ruby ​​invalide, par exemple. ': x => 1', où je suis concerné par les jetons lexés, et aimerais beaucoup éviter la vérification de la syntaxe. – ngty

+0

Vous pouvez également consulter la [JRuby-analyseur] projet (http://kenai.com/projects/jruby-parser/sources/mercurial/show), qui n'a pas besoin de la pleine JRuby installer. Le problème avec lexing autonome est que l'analyseur et lexer sont étroitement liés, de sorte lexing par lui-même ne peut pas vous donner les résultats que vous attendez. –