Scalaのコンパイラプラグインの使い方がようやく分かってきた。
ソースの構文解析木を見るのはだいぶ前に試していた(試していたことすら忘れかけていた(爆))けれど、それは意外と簡単だった。
Scalaお得意のパターンマッチが炸裂・大活躍(笑)
難物だったのはソースコード変換。
構文解析木のTreeだけ変えればいいのかと思ったら、Symbolも一緒に変えないといけない。しかもTreeの中にSymbolを保持していたり、いつの間にかContextでスコープを保持していたり…。分かってみれば対処法はあったけれど、分かるまでが大変だった(苦笑)
なにせサンプルが少なくて。検索してみると見つかるのが掲示板で、しかも質問は載っていても回答が付いていなかったり理解できなかったり(英語だし)。
しかし新しいTreeを作る為のTreeDSLは面白い。これぞDSLだな。Scalaの構文解析木を作る為のDSL。Scalaの面目躍如(笑)
何はともあれ、クラスにフィールドやメソッドを追加することは出来た。(やり方が確立してしまえば、意外と簡単)
これで何か自動生成できるかな~?
※コメント投稿者のブログIDはブログ作成者のみに通知されます