RubyKaigi 2023 に二日目から参加しました。
処理系周りのセッションを主に聞いていたのですが,パーサー関連の話が多かったのと,二日目の夜に居酒屋で金子さんにパーサーの話を熱く語ってもらえたのが印象的だったので,Rubyのパーサーに関して書くことにします。
Rubyのパーサー周りの動向
CRubyはbison (注: RubyKaigi二日目くらいに金子さんのlramaに置き換わった) というパーサージェネレーターでparse.yから生成したパーサーを使っていることが知られています。
CRubyのパーサーにはいくつか課題があることが知られていて,金子さんが開発しているlramaと,Shopify主導の Yet Another Ruby Parser(YARP)が最近は盛んに開発されているようです。
lramaとYARPの最大の違いは,lramaはbisonのようにパーサージェネレータを用いたLRパーサーを用い,YARPは手書きのrecursive descentパーサーを用いるという点です。