2007-10-01から1ヶ月間の記事一覧

の個人的感想

YTさんのあたりみてて、、、。 式ベースの言語であるのは好み。 camlp4は、使ってないけど、原理的なものは分かってきたつもり。式だから楽できるんだと思う。 ;や,の使い方がより一般的になってる。リストは、;で区切るので,はタプル用の演算子だ!!!って…

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が返ります。まだ、完全ではないかんじだけど…

なんとなく

thenを2項演算子として使うと、if式って自然にかけるんだなぁとか思った今日この頃です。 if(a) then b else cは xox( xox( xpxp(if,(,a,)), then, b ), else, c )てなかんじになっていいなと。追記: いや、それより、 xox( xpxp(if,(,a,)), then, xox( b,…

シンプルなXMLのパーサを作ってみました。 単独タグ、通常タグ、アトリビュート、文字列のみ対応です。 コメント、CDATAセクション、等は対応してません。 使い方は X.p = 0; // 初期化 X x = new X("<xml da=\"yo\">aiu<eo/></xml>") というかんじで。 javac -source 1.2 -target 1.1 …

うお、もう仕事、行かないと。

番兵君をたくさん置いて、XMLの短いバージョンのパーサだけ作ってみた。 class dom{ char[] name; char[][char[]] attr; dom[] childs; int id; void parse(char[] str) { char c; while((c = str[id++]) != 0) { name ~= c; } // attrs while((c = str[id++…

エラーメッセージをまともにする。

SAC

ちょっとだけ、まともにしてみた。lineも出してみた。

ショートコーディングは意味があるぞ。

J2ME用のライブラリは小さければ小さいほどいいと思う。 なので、ショートコーディングの技で特に、バイナリサイズを小さくするってところは ビジネスに生きるじゃんと思ったのでした。 XMLのパーサが2kとかで便利って話を聞いて。。。 ん?俺もそのくらいの…

リアルタイムOSが動いてたよ。

ちうか、仕事で使ってました。と、Jに突っ込もうと思ってパスワードがわからず、 というか、長すぎてめんどくさいので諦めて、悔しいのでここに書いてみる。

出た!

ので、ドキュメントをちょいと書きました。 if式、switch式、while式、whileメソッド、with式あたりを。 それだけって言えばそれだけですが何か? http://sakurai.s59.xrea.com/compact/index.cgi?p=sumi どーもドキュメントって苦手。だけど書かないと誰も…

出ないです。

なんだか、寂しい気分で、やる気が出ません。 うう、時間だけがすぎていく。もったいない。

switch,while式を追加。

switch式は a:"a" switch(a){ case("a"){1} case("b"){2} default{3} }で、1が返ります。 http://sakurai.s59.xrea.com/compact/compact0.0.5/sumi.html?in=a%3A%22a%22%0D%0Aswitch%28a%29%7B%0D%0Acase%28%22a%22%29%7B1%7D%0D%0Acase%28%22b%22%29%7B2%7D…

いろいろと

よくよく考えてみたら、幼稚で単純といわれるくらいのものを目指してたから いいんだ。これで。うんうん

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

通りすがりの人に、普通の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…

俺と声(1)

なんか、id:yaneuraoさんとid:Ozyさんが音楽の話を書いてるので俺も書いてみようかと思います。 俺の場合、幼稚園のときに英語を使った授業をする幼稚園に通い始めたときの 発音がちがう。「バナナ」じゃない。「バネェナァ」ってかんじ。 「アップル」じゃ…

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

式ベースのパーサとインタプリタを作ってみました。 {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} のような、式が帰って来ます。 今までは、括弧は特別…