rubynode

rubyの構文、特にコメントを解析したくなってrubynodeというgemを見つけました。最後のメンテが2年前だけど。
http://rubynode.rubyforge.org/

ruby-1.8.6-p399で確認しました。

require "rubynode"
#=> false

code = <<EOS
  #aaaaaaaaaa
  # bbbbbb
  def foo
    puts "AAA"
  end
  def bar(*args)
    puts args.inspect
  end
EOS
#=> "  #aaaaaaaaaa\n  # bbbbbb\n  def foo\n    puts \"AAA\"\n  end\n  def bar(*args)\n    puts args.inspect\n  end\n"

code.parse_to_nodes.transform
#=> [:block, [[:defn, {:defn=>[:scope, {:rval=>false, :tbl=>nil, :next=>[:block, [[:args, {:rest=>false, :cnt=>0, :opt=>false}], [:fcall, {:mid=>:puts, :args=>[:array, [[:str, {:lit=>"AAA"}]]]}]]]}], :noex=>2, :mid=>:foo}], [:defn, {:defn=>[:scope, {:rval=>false, :tbl=>[:args], :next=>[:block, [[:args, {:rest=>[:lasgn, {:vid=>:args, :value=>false, :cnt=>2}], :cnt=>0, :opt=>false}], [:fcall, {:mid=>:puts, :args=>[:array, [[:call, {:mid=>:inspect, :recv=>[:lvar, {:vid=>:args, :cnt=>2}], :args=>false}]]]}]]]}], :noex=>2, :mid=>:bar}]]]

残念ながらコメントの情報は失われているけど、そういうもんなの?