Slide 24
Slide 24 text
CONFIDENTIAL © Kakaku.com Inc. All Rights Reserved. 24
ポイント1. MRI の RubyVM と同⼀の解析結果が得られるパーザを採⽤
⾷べログは MRI(Matz Ruby Implementation)で運⽤しているため、前述のように AST 変換には
RubyVM::AST を採⽤しています。RubyVM::AST は API が安定していないという⽋点もありますが、RubyVM
⾃⾝と構⽂解析仕様が完全に同⼀なので、解析結果が100%信頼できます。Ruby のカバレッジ可視化ツールと
して標準的な Coverband でも利⽤されています。
もっと扱いやすい Parser, Ripper, Prism などのパーザもありますが、エッジケースで実際の RubyVM と挙動
が異なります。例えば `def f = ..a ..` というコードは MRI では SyntaxError になり、RubyVM::AST でも
SyntaxError と判断されますが……
参考: Prism accepts some expression in range_node.left that Ruby rejects when the code includes `..a..` · Issue #2021 · ruby/prism