compact

オレオレ言語ブーム

IT戦記を見て、sumi言語に適応してみた。 <script src="smi.js"> print("hello world<br>"); </script> とhtmlに書けば、動きます。 ついでに、sumiを短くして、smiにしてみた。 http://sakurai.s59.xrea.com/compact/compact/smi.html

match式

Ocamlあたりのmatch式のsumiバージョンです。 f:(a){ match(a){ case(qq{$a+$b}){qq{add}} case(new XOX(qq{$a},qq{$b},qq{$c})){qq{xox}} default{a} } } print(f(qq{1+2})+"\n") print(f(qq{1*2})+"\n") print(f(qq{abc})+"\n") で、 add xox abc abcとい…

演算子定義とsyntaxマクロ

xox(100,_) syntax(qq{$a _ $b}){$a+$b} 1 _ 2 http://sakurai.s59.xrea.com/compact/compact/sumi.html?in=xox%28100%2C_%29%0D%0Asyntax%28qq%7B%24a+_+%24b%7D%29%7B%24a%2B%24b%7D%0D%0A1+_+2%0D%0Aこれで、3が返ります。まだ、完全ではないかんじだけど…

なんか、恥ずかしいぜい。

通りすがりの人に、普通のASTと何が違う言われて、んんん? 普通のASTってどんなものなのかいまいちわかってないので何ともいえません。Template HaskellとかDylanを見直して理解しないと差がわからない。 抽象構文木じゃなくて、只の構文木であるところが違…

CompactというかC式と言ってるものの何が凄いのか

S式はATOMをCONSセルで結合しています。基本は。 C式はこれを拡張して、XOX,XO,OY,XOY,XPXP,PXPという6つ種類の演算子で結合しています。 sumi言語はC式で記述されています。 LISPは構造化データ=プログラムです。 JavaScriptは文字列データ=プログラムです…

構文木をマッチングしてみる。

sumi言語で、quote()で囲まれた部分は構文木を返すようにしてみました。 そして、sumi言語で作ったmatch関数を使って構文木をマッチングできるように なりました。 print(match( quote($f($arg){$body}), quote(a.b(a,b,c){a+b*d}),{} )+"\n")上の例では、 $…

2進数表記追加

話題の2進数表記を追加してみました。 http://sakurai.s59.xrea.com/compact/compact0.0.2/sumi.html?0b1111+0b1 ついでに、URLのクエリー文字列にプログラムを書くと実行されるようにしてみました。http://sakurai.s59.xrea.com/compact/compact0.0.2/sumi…

仕様

式言語Compactの仕様書を作成中です。 http://sakurai.s59.xrea.com/compact/ ドキュメントを書くのはトテモ苦手なので、困ってますが、とりあえず、 かけるところからガツガツ書いてみてます。

APIを分離してみました。

とりあえず、XMLにあやかって、Bison風の仕事をするものをcsax、 jjtree的なツリーを生成するものをcdomとか適当に名前を付けてそれぞれ分離してみました。 で、目標?のFizzBuzzが動くようにしてみました。 http://sakurai.s59.xrea.com/compact/compact…