Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

RubyにlramaがマージされてBison依存がなくなった(RubyKaigi 2023)

こんにちは、hachi8833です。RubyKaigi 2023@松本に行ってまいりました。

イベント感想などは他の皆さまが続々ネット上のブログにアップしているのでそちらにおまかせするとして、今回のRubyKaigiのDay1で発表されていたlramaが気になったので手短にメモします(個人的にPEGパーサージェネレータに関心があるので)。

ruby/lrama - GitHub

Lramaでリャマと読みます。LALR parser generatorのYaccやBisonの流れをくむものとして、リャマという名前にしました。LR parser generatorなのでLlama (LL)ではなくLrama (LR)と綴ります。
Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した - かねこにっきより

lramaパーサーがmasterにマージされた

Day1の上の発表で、yui-knk(kaneko.y)さんが作ったLramaというパーサージェネレータがRubyのmasterブランチにマージされたことを知りました。

また、Day3朝の「Ruby Committers and The World」でもyui-knkさんから「RubyがBisonに依存しなくなった」ことが発表されました↓。

これまでBisonのバージョンによって挙動が違うという問題があったのだそうですが、依存がなくなったことで面倒がひとつ解決されました🎉

参考: Bison - Wikipedia


現時点では動画やスライドは公開されていませんが、既にyui-knkさん自身のブログに非常に詳しい経緯が書かれており、特に(5)〜(7)が今回の発表内容に近そうです↓。"Error Tolerant parser"がLrama開発の動機のひとつだったんですね。

参考: Ruby Parser開発日誌 (1) - かねこにっき
参考: Ruby Parser開発日誌 (2) - かねこにっき
参考: Ruby Parser開発日誌 (3) - かねこにっき
参考: Ruby Parser開発日誌 (4) - かねこにっき
参考: Ruby Parser開発日誌 (5) - Lrama LALR (1) parser generatorを実装した - かねこにっき
参考: Ruby Parser開発日誌 (6) - parse.yのMaintainabilityの話 - かねこにっき
参考: Ruby Parser開発日誌 (7) - doについて考える - かねこにっき

まだ全然ちゃんと読めていませんが、こうした詳細な技術情報を日本語で読めるありがたさを痛感します🙏。

参考: 構文解析 - Wikipedia

おまけ1

今回のRubyKaigiはパーサーの話題が多かったこともあって、発表者によってparserの発音が違っていることに気づきました。
parserの発音はイギリス式だと「パーザー」と濁り、米国式だと「パーサー」と濁らないようです↓。ヨーロッパはだいたいイギリス式の発音になりがちですね。

参考: parser - Wiktionary

おまけ2

最近OhmというPEGの改良版を見かけてちょっと気になっています↓。あまり速くないかもしれない代わりに読みやすさを重視しているそうで、ブラウザで動かせるPlaygroundもあります。

参考: Ohm
参考: Ohm Editor

関連記事

PEGと正規表現の違い「PEGの繰り返しはバックトラックしない」


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。