こんにちは、hachi8833です。RubyKaigi 2023@松本に行ってまいりました。
イベント感想などは他の皆さまが続々ネット上のブログにアップしているのでそちらにおまかせするとして、今回のRubyKaigiのDay1で発表されていたlramaが気になったので手短にメモします(個人的にPEGパーサージェネレータに関心があるので)。
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ブランチにマージされたことを知りました。
人生において自分がつくったparser generatorでBisonを置き換える日がくるとは思わなかったです。 https://t.co/diOO5pOVhl
— kaneko.y (@spikeolaf) May 12, 2023
また、Day3朝の「Ruby Committers and The World」でもyui-knkさんから「RubyがBisonに依存しなくなった」ことが発表されました↓。
これまでBisonのバージョンによって挙動が違うという問題があったのだそうですが、依存がなくなったことで面倒がひとつ解決されました🎉
現時点では動画やスライドは公開されていませんが、既に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
>「Ruby では字句解析と構文解析がややこしく結びついてしまって大変」と思っておけば、セッションを聞く際の前知識としては十分でしょう。
完全にその通りです... https://t.co/g9prSMCW3S— kaneko.y (@spikeolaf) May 9, 2023
おまけ1
今回のRubyKaigiはパーサーの話題が多かったこともあって、発表者によってparserの発音が違っていることに気づきました。
parserの発音はイギリス式だと「パーザー」と濁り、米国式だと「パーサー」と濁らないようです↓。ヨーロッパはだいたいイギリス式の発音になりがちですね。
おまけ2
最近OhmというPEGの改良版を見かけてちょっと気になっています↓。あまり速くないかもしれない代わりに読みやすさを重視しているそうで、ブラウザで動かせるPlaygroundもあります。
参考: Ohm
参考: Ohm Editor