Javascriptプリプロセッサ
JavascriptでJavascriptプリプロセッサを作れば、Javascriptでマクロが使えるようになるんじゃね、と思ったので作ってみた。
テストページ(Firefoxで確認、Operaでは動かない)
パーサはNarcissus(Javascript on Javascript)のものを流用したので苦労してない。ただ、構文木を文字列に落す部分は自分で書いている。
ちなみに、今使えるのは以下の機能のみ。
- 関数宣言
- 初期値付きの変数宣言(OK:var x=0,NG:var x)
- マクロ宣言
- 加算(+)
- 代入
- 関数呼び出し。オブジェクトを経由した関数呼び出し(hoge.f)は未対応
例えば、0を代入するようなマクロは次のように書ける。
macro reset(v){ return parse(v+'=0') } reset(x); // x = 0;と同じ
作ってみて思ったんだけど、関数呼び出ししかマクロにできないのは今ひとつかもしれない。やっぱりcamlp4のようにパーサ部分をいじれるようにするべきなのかもしれない。