knockout.js が便利そう

http://knockoutjs.com/Webアプリで MVVM やりたいなと思ったら、そのままのフレームワーク knockout.js を見つけたのでメモしておく。 MVVM が欲しくなった経緯 サーバー側でのWebページの生成にテンプレートエンジンを使う これ無しに Webアプリ作るのは無…

peg-sharp でインデント表現された木構造を読んでみる

Python や YAML は、インデントでツリーを表現しているけど、あれが簡単な BNF で書ける気がしなくて、どうやって書くのか気になっていたので書いて見ることにした。試して分かったことというと、インデントを解釈するのにコンテキストを持たせる必要があり…

peg-sharp

C# で スクリプトをパースしたくなったので、peg-sharp というのを試しに遊んで見ることにした。http://code.google.com/p/peg-sharp/OMeta とかに近いかな? 字句解析と構文解析を区別する必要がなくて、その場でデータを処理できる。前々からお手軽に使え…

多値

無くても良さそうな気がしてたけど、せっかくだから作ろうとする。いい作り方が浮かばないけど。

ゆっくり再開

とりあえず末尾再帰は出来るようになった・・・と思う。 関数呼び出しをした所に目印を入れて関数を呼び出すたびに末尾かどうかチェック。効率悪そう。関数を作った時にどこが末尾式か調べるようにした方がいいのかな?その辺はマクロなんかを作れるようにな…

評価したりしなかったり

Schemeの式って同じような位置にあるのに同じタイミングで評価したりしなかったりする。 たとえば(if test then else)って感じに全部同じようにならんでるけどtestを評価した後thenかelseを評価しないといけない。他にも(define v e)なんかもeは評価するけど…

末尾再帰

今のところインタプリタだから一応作れそうなんだけど効率悪そう。もっとお手軽に末尾式であることを判定できないのかねぇ。今の予定ではとりあえず関数を呼び出すたびに関数の末尾だったかどうかを判定することになってる… 形 今、式の評価をスタック使った…

もう少し分かりやすく作れないだろうか

再帰に頼っていたところを再帰無しにするのって難しい。さて、lambdaも書き換えないといけない。そして、適当に完了。 継続をオブジェクトにするところまではできたと思う。ただ、call/ccをどう作ろうか悩んでる。call/ccが関数なら関数は好きなタイミングで…

構造かいかく

さて、次は末尾再帰や継続を作りたいところ。でも、まだifや=なんてものすら作っていない。重要な要素ではあるもののシステムには直接影響がなさそうなので後回し。 で、継続を作ってる最中に末尾再帰を作れるのではなかろうかと期待して継続を作り始める。…

ループ

今はBoostのshared_ptrを使ってるんだけど、これ使うとインテリセンスが対応できないみたいで残念。 参照カウントタイプのスマートポインタって循環した参照があると永遠に解放されなくなるから、そのうち真面目にGCを作らないといけない。そのうち… さて、…

き構造

とりあえず、S式から木構造を作ってそれをまたS式で再表示させるだけのプログラムを目指す。とりあえず扱うのは識別子、数値、くらいでいいかな。必要になったら増やす。 データは抽象クラスとスマートポインタで適当に。 共用体ってクラスとかを中に入れら…

FlexとBison使って。

今、Schemeの処理系作ってみようとしてる。 S式だから解析器を直接作るのもそれほど手間じゃないんだけど、ここはその手のプログラムを生成するのに一般的そうなFlexとBisonを使って作ってみようということで、手を付けてみる。 http://guppy.eng.kagawa-u.a…