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