kiyoka.2011_06_15 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2011_06
555555554455555555555555555555555555555555555555555555555555555555
5

[Nendo][Scheme] matchライブラリが動いた日

5

オレ処理系のNendoについての開発メモ。

5
 SYKjVO
5

 

5

やっとmatchが動いたぞ。

5

chibi-scheme 0.3のmatchを変更無しで動かすことができた。

5

長かったー。let-syntaxの間違った実装を直すところから始めて約3ヶ月かかった。

5

忘れないうちに、Rubyのコードにトランスレートする時の注意点などを、これから数日かけて記事にしていこう。

4

自分で設計したVMに変換するのとは違い、既にターゲット言語が持つレキシカルスコープに乗せるやりかた(騙しかた)は、トランスレータ系の処理系を作っている人の役に立つかも。

4

※ 英語で書ければベストなんだろうけど、そこまでのスキルは無い...

5

 

5

記念にmatchのテスト実行結果を貼っておこう。

5
time ruby -I ./lib ./bin/nendo ./test/match-test.nnd                | tee -a test.log
5
Testing match ...                                                
5
Testing match -----------------------------------------------------------------
5
<match>------------------------------------------------------------------------
5
test any, expects ok ==> ok
5
test symbol, expects ok ==> ok
5
test number, expects ok ==> ok
5
test string, expects ok ==> ok
5
test literal symbol, expects ok ==> ok
5
test null, expects ok ==> ok
5
test pair, expects ok ==> ok
5
test vector, expects ok ==> ok
5
test any doubled, expects ok ==> ok
5
test and empty, expects ok ==> ok
5
test and single, expects ok ==> ok
5
test and double, expects ok ==> ok
5
test or empty, expects ok ==> ok
5
test or single, expects ok ==> ok
5
test or double, expects ok ==> ok
5
test not, expects ok ==> ok
5
test pred, expects ok ==> ok
5
test named pred, expects 29 ==> ok
5
test duplicate symbols pass, expects ok ==> ok
5
test duplicate symbols fail, expects ok ==> ok
5
test duplicate symbols samth, expects ok ==> ok
5
test ellipses, expects ((a b c) (1 2 3)) ==> ok
5
test real ellipses, expects ((a b c) (1 2 3)) ==> ok
5
test vector ellipses, expects (1 2 3 (a b c) (1 2 3)) ==> ok
5
test pred ellipses, expects (1 2 3) ==> ok
5
test failure continuation, expects ok ==> ok
5
test let, expects (o k) ==> ok
5
test let*, expects (f o o f) ==> ok
5
test getter car, expects (1 2) ==> ok
5
test getter cdr, expects (1 2) ==> ok
5
test getter vector, expects (1 2 3) ==> ok
5
test setter car, expects (3 . 2) ==> ok
5
test setter cdr, expects (1 . 3) ==> ok
5
test setter vector, expects #(1 0 3) ==> ok
5
test single tail, expects ((a b) (1 2) (c . 3)) ==> ok
5
test single tail 2, expects ((a b) (1 2) 3) ==> ok
5
test multiple tail, expects ((a b) (1 2) (c . 3) (d . 4) (e . 5)) ==> ok
5
test Riastradh quasiquote, expects (2 3) ==> ok
5
test trivial tree search, expects (1 2 3) ==> ok
5
test simple tree search, expects (1 2 3) ==> ok
5
test deep tree search, expects (1 2 3) ==> ok
5
test non-tail tree search, expects (1 2 3) ==> ok
5
test restricted tree search, expects (1 2 3) ==> ok
5
test fail restricted tree search, expects #f ==> ok
5
test sxml tree search, expects (((href . "http://synthcode.com/")) ("synthcode")) ==> ok
5
test failed sxml tree search, expects #f ==> ok
5
test collect tree search, expects ((p ul li) ((href . "http://synthcode.com/")) ("synthcode")) ==> ok
5
passed.
5

 

5

...comment disabled...