Rubyのparserを語る上で忘れてはいけない存在としてRipperというライブラリがあります。 RipperはRubyのコードを構文解析するためのライブラリとしてirbやrdocなどで長く使われてきました。 一方でBug #10436のように長い間未解決のバグがあったり、Bug #18988のようにパーサーと挙動が異なる箇所があったりと完璧でない部分があります。 今回Ripperのアーキテクチャを見直すことでRipperの抱えている問題を解決することができたので、この記事で紹介したいと思います。 関連するPRとticketはそれぞれ以下のとおりです。 github.com bugs.ruby-lang.org Ripperとは RipperはRubyのパーサーライブラリです。入力されたコードに対応するS式を返すRipper.sexpを使ったことがある人もいるのではないでしょうか。 Ri
![Ruby Parser開発日誌 (18) - Rearchitect Ripper - かねこにっき](https://cdn-ak-scissors.b.st-hatena.com/image/square/5a4ba64a3aaa869d49a6d1d60d190e86d22aa603/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fy%2Fyui-knk%2F20240223%2F20240223135704.png)