如何使用JRuby的org.jruby.lexer.yacc.RubyYaccLexer

时间:2010-08-30 14:35:20

标签: jruby lexical-analysis

我正在使用ripper在mri-1.9中执行ruby-code lexing。*,我想在JRuby中做同样的事情,我注意到在org中使用了org.jruby.lexer.yacc.RubyYaccLexer。 jruby.parser.DefaultRubyParser,我想我可以用它来做mri-1.9中的ripper。*确实如此,尽管与ripper相比肯定处于较低的水平。作为java中的菜鸟,我无法弄清楚如何在jruby中使用它。我不确定它是否可行,希望对此有所建议。

1 个答案:

答案 0 :(得分:1)

看看this post from JRuby committer Ola Bini。在其中,他展示了JRuby的AST的一些简要用法。您可以使用JRuby中的代码创建AST并在内存中导航,操作它,然后将其转换回可执行代码。

require 'jruby'
JRuby.ast_for "puts 'hello'"
# => RootNode
#   NewlineNode
#     FCallOneArgNode |puts|
#       ArrayNode
#         StrNode =="hello"

它并不像Ripper那样为您提供类似事件的方法,但通过遍历AST,您可以获得类似的信息。