実装の続き

今日は、、、。

while,break,continue,function,returnを実装しました。
あとは、actionscriptで動くように直しました。
なんと、actionscriptでは、正規表現が使えないという問題点がありまして、(AS3ではあるらしいのだけど)RegExpactionscriptによる実装を拾ってきて、paraflaコンパイルできるように改造して使えるようにしてみました。


paraflaは文法がかなり制限されていて、困ります。また、バグも結構あって、死ななくていいところで死んだりしますが、何とか動くようにしました。しかし、動作があまりにも遅すぎました。(短い1文を構文解析するのに1秒とかかかってしまう)お!動いた!でも、遅いよ。ってことで終わってしまいました。なんで、IEJavaScriptより遅いのよ!


あとは、インタラクティブにいじれるようにしたら、公開できるかと思いますが、だから、どーしたって感じかもしれません。


見難い言語が出来ただけジャンってことになりかねない。というか、なっているので。


でも、とてもシンプルな言語なので、(全部で現在、700行くらい)いろいろいじって遊ぶにはいい言語だと思います。その割に、演算子の優先順位も変えられるし、字句解析のルールも変更できます。


次は、マクロ機能を作ろうと思います。

まずは、簡単な、defmacro[name](valuelist){statements}


cのmacroと同じような、単純置き換えです。

defmacro[add](a,b){(a+b)}
と言った感じな仕様にしようと思います。

defmacro[add](a,b){(a+b)}stdio.write(add(1,2)+"\n")

3

と出ればいいかなって感じで。
このマクロは、実行する前に展開するので、今回作った実行環境のノウハウは役に立つと思います。