Rubyのパーサーを書き直そうという野心的なプロジェクトを持っている人の発表です。 プロジェクトに対するモチベーションに関してはこちらのツイートのスレッドを見るのがよいと思います。
Since @yukihiro_matz mentioned it on stage at #rubykaigi...
— Kevin Newton (@kddnewton) September 9, 2022
Yes! I'm going to be rewriting the Ruby parser. I'm super super excited about this, and you should be too!
Below is a brief thread about how and why, but tl;dr: portability, error tolerance, and maintainability.
発表内容は
Ripperの構文木のイベントは190あります。 整理すると160になります。
みたいな、話とRubyの構文木を操作する一般的な話をしていたような気がします。 よくわかりません。
そもそもRubyに限らずプログラムの構文木を操作するプログラムを書いた事がありません。 RubyでつくるRuby 読書感想文 - @ledsun blog で、本の手順に従って動かしてみたぐらいです。 「RubyでつくるRuby」では構文木をたどって順番に処理していきます。 任意の目的のために構文木の特定のノードを探して特定のルールに則って編集する、そしてまたプログラムにもどす。 いわゆるトランスパイラみたなプログラムを書いたことがありません。
こりゃなんか一発トランスパイラみたなプログラムを書いてみる必要があります。 そういえば、直近でC#のプログラムを特定のルールに従ってまとめて編集したい要求があります。 「複数クラスが一つのファイルに書かれている箇所を、クラス毎にファイルをわけたい」です。 ルールは簡単だし、ツール作ればスケールするし、めっちゃ最高じゃないですか。 と言うことでググってRoslynって、C#用のコンパイラプラットフォームを使えばよさそうと調べてました。
発表内容と全然関係ない?いや、構文木というテーマとしてはドンピシャのアイデアをもらいました。 今回のRubyKaigi 2022で一番の即物的な収穫です。
それで練習し始めたのが Roslynを使ってC#のクラス名を変更する - @ledsun blog です。