ruby_parser
rubynodeは古かった。探してみたら、まとめサイト発見。
http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.html
ruby_parserというまんまな名前のものが見つかった。
http://parsetree.rubyforge.org/ruby_parser/
ruby-1.9.2で試してみた。
require 'ruby_parser' #=> true RubyParser.new.parse "1+1" #=> s(:call, s(:lit, 1), :+, s(:arglist, s(:lit, 1))) code = <<EOS # AAAA def foo(*args) puts args.inspect end EOS #=> " # AAAA\n def foo(*args)\n puts args.inspect\n end\n" RubyParser.new.parse code #=> s(:defn, :foo, s(:args, :"*args"), s(:scope, s(:block, s(:call, nil, :puts, s(:arglist, s(:call, s(:lvar, :args), :inspect, s(:arglist)))))))
やっぱりコメントは失われちゃう。