[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はできる。
> 中田 伸悦