式ベースのパーサと処理系

式ベースのパーサとインタプリタを作ってみました。

{a:(a,b){a+b};b:(a,b){a*b}(5,2);c:(a(10,20)+b)*5;d:{a:a;c:c}}.d

このような、式をパースして、実行すると、

{a:Lambda([a,b],XOX(a,+,b)),c:200}

のような、式が帰って来ます。


今までは、括弧は特別扱いしようとしていました。
しかし、今回のものは式をパースするときに、
特別扱いしているものがありません。括弧や、セミコロン、カンマも
只の演算子です。


そこが、今までのものと一番違う点です。


実際に動くサンプルは以下にあります。
http://sakurai.s59.xrea.com/diary/c2.html

追記:

なんか、前回と同じことを書いてるなぁ。
関数が使えるようになったところと、オブジェクトで振り分けるようにした点が違うはずなのだけど。。。


こういうのを追記と言わない気もする。
TODO:言語を作るとか言ってる前に、まず日本語を勉強しよう!