Ruby では `RubyVM::AbstractSyntaxTree` で AST を取得する事ができます。
この AST 情報を元にして Ruby のコードに変換する機能を実装しました。
これを利用することで AST レベルで Ruby のコードを変更して実行する事ができるようになります。
- Ruby のコード -> AST に変換 -> 別の AST に変換 -> AST から Ruby のコードに変換 -> Ruby のコードを実行
このセッションでは『AST から Ruby のコードに変換する実装』、また『AST から別の AST に変換する実装』について解説を行います。
この『別の AST に変換する』という機能は他の言語では『マクロ』と呼ばれている機能に近いです。
Ruby で『マクロ』を実装するとどうなるのか一緒に考えてみましょう。