マクロ展開の実装

マクロの展開の定義を実装するにあたり具体的に考えてみた。

これはマクロの呼ばれかたを定義したもの。

NODES
 SYMBOL[_]
 SYMBOL[a]

これは実際にマクロが呼ばれた状態。

NODES
 SYMBOL[show]
 STRING["higepon"]

以上二つを比較すると。

a => "higepon" ということが分かります。

これを、以下のマクロ構造の定義に当てはめるとマクロ展開が完成です。

NODES
 SYMBOL[display]
 SYMBOL[a]

というのを実装しよう。
→できた!。

残る todo

  • マクロがマクロを参照している場合
  • マクロのマッチを組み込む
  • deepクローンで非破壊にする
  • マクロパターンをどこかに格納する