From: Koichi Kimura Date: 2008-10-10T17:09:39+09:00 Subject: [ruby-dev:36702] [Bug #631] ripper does not follow change of parse.y Bug #631: ripper does not follow change of parse.y http://redmine.ruby-lang.org/issues/show/631 起票者: Koichi Kimura ステータス: Open, 優先度: Normal カテゴリ: ext, Target version: 1.9.x -> を使ったステートメントを ripper が正しく解析できません。 irb(main):001:0> RUBY_RELEASE_DATE => "2008-10-10" irb(main):002:0> require 'ripper' => true irb(main):004:0> Ripper.lex("lambda{|x| x*x}.call(3)") => [[[1, 0], :on_ident, "lambda"], [[1, 6], :on_lbrace, "{"], [[1, 7], :on_op, " |"], [[1, 8], :on_ident, "x"], [[1, 9], :on_op, "|"], [[1, 10], :on_sp, " "], [[ 1, 11], :on_ident, "x"], [[1, 12], :on_op, "*"], [[1, 13], :on_ident, "x"], [[1, 14], :on_rbrace, "}"], [[1, 15], :on_period, "."], [[1, 16], :on_ident, "call"] , [[1, 20], :on_lparen, "("], [[1, 21], :on_int, "3"], [[1, 22], :on_rparen, ")" ]] irb(main):005:0> Ripper.lex("->(x){x*x}.call(3)") => [[[1, 0], :on_tlambda, "->"], [[1, 2], :on_lparen, "("], [[1, 3], :on_ident, "x"], [[1, 4], :on_rparen, ")"], [[1, 5], :on_lbrace, "{"], [[1, 6], :on_ident, "x"], [[1, 7], :on_op, "*"], [[1, 8], :on_ident, "x"], [[1, 9], :on_rbrace, "}"] ] -> を使ったほうは無名ブロックの閉じブレースで解析が止まってます。 parse.y に手を入れる必要があるのでは? primary → tLAMBDA lambda のあたりとか。 ---------------------------------------- http://redmine.ruby-lang.org