[ruby-list:49824] Re: ripperのcompile_error呼び出しの挙動について

From: Misao X <mail@...>
Date: 2014-05-16 11:03:48 UTC
List: ruby-list #49824
ぺけみさおです

中田さん、ありがとうございます。
教えていただいたとおりon_parse_errorで
syntax errorを検出できました。

~~~~
require 'ripper'

class MyRipper < Ripper
  def on_parse_error(msg)
    puts msg
  end
end

src = <<SRC
42.times do
}
SRC

MyRipper.parse(src) # syntax error, unexpected tSTRING_DEND
~~~~

----
xmisao(ぺけみさお)
mail@xmisao.com
http://www.xmisao.com/

2014年5月16日 11:51 Nobuyoshi Nakada <nobu@ruby-lang.org>:
> (2014/05/16 8:30), Misao X wrote:
>> ripperはRipper.parseでコンパイルエラーが発生すると
>> compile_errorを呼び出すことがリファレンスに書かれています。
>>
>> http://docs.ruby-lang.org/ja/1.9.3/class/Ripper.html
>>
>> しかし、例えば以下のように明らかに不正なコードをパースしても
>> compile_errorが呼ばれないのは仕様なのでしょうか?
>> いわゆるsyntax errorに相当するソースコードの不正を
>> ripperで検出する方法はないのでしょうか。
>
> on_parse_errorを使ってください。
>
> --
> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。
>     中田 伸悦

In This Thread

Prev Next