operator」を試してみて、parse.yと少し近づけた?sellRuby,Ruby_記事投稿キャンペーン,RubyKaigi2023RubyKaigi2023にオンライン参加しました。いくつかセッションを聞いた中で、こちらのセッションが個人的にとてもおもしろかったです。触ってみることにしました。このセッションでは実際のコードを示しながら、ステップに分けて説明・実装しており、このスライドをベースに触ってみました。ようにインクリメントの演算子がありません。そこで、Rubyの文法規則が書かれたparse.yというファイルをいじって実装するというものです。++というトークンに対応するsymbolを設定したり、そのsymbolを使った新しい文法規則を追加したり、色々な方法で実装を試しています。objects"たしかになと思った言語デザインの話もあったが、意識せずに使っていたが、意識すると面白いなと感じた今まで、Rubyのしくみは読んだことがありましたが、何回読んでもあんまり理解が深まっていない感覚がありました。今回のセッション自体も、当日聞いてあまり理解していなかったのですが、スライドを何度も読んで、自分で手を動かしてみて、やっとparse.yとの距離が一気に近づいた感覚があり、とても楽しかったです。(セッションはなんとなくの理解でもめちゃくちゃおもしろかったです!)セッションを見ていない方は、まずは動画のアーカイブが公開されたら見てください!そしてparse.yを読んで触ってみることをとても強くおすすめします。(RubyKaigiでは他のパーサー関連のセッションを聞けず、大パーサー時代の波に乗れていないので、アーカイブが公開されるのが待ち遠しい...)その他補足セッションの内容については実際にスライドの内容をじっくり読んでもらうのが一番かと思います。実装しながら、Scannerの実装の話に飛んだり、Parserの話に飛んだりするので、個人的には途中に結構混乱していました。そのため、少し整理してみます。++)を少しずつ読み進めながら、以下のswitch文を使ってsymbolを特定します。(スライド49ページ目)Parserでは以下のように、symbolが:の右側にマッチした時に左側のsymbolへreductionをします。このときに実行するactionを定義します。ここでRNodeを作成したりします。(スライド31ページ目)i++をパースするにしても、(Scannerで)++をまとめた新しいトークンとして扱うか、(Scannerで)+,+と別々のsymbolとしてParserに渡して処理をするかどちらもでき、それぞれScanner、Parserでどのようにロジックを組むのかが勝負なのだなとわかりました。Rubyのビルドについて今までRubyをビルドして実行したことがありませんでした。そこで僕と同じように、今回始めてRubyをビルドする人もいるかもしれないのでメモとして残します。RubyリポジトリをForkして開発できる環境を整える。ドキュメント通りにRubyをビルド。