2007-09-18から1日間の記事一覧

self.html

<script src="secd_cod.js"></script> <script> function main() { document.getElementById("fout").value="initialize ...\n"; setTimeout(main2,100); } function main2() { init(); printf("Reading compiler code ...\n"); flush(); setTimeout(main3,100); } function main3() { readSFrom("compil…

compiler.secd

(6 2 NIL 3 (1 (0.0) 2 NIL 14 8 (2 NIL 9) (2 NIL 1 (0.0) 11 13 1 (1.5) 4 1 (0.0) 10 11 13 9) 5) 13 3 (1 (0.0) 2 NIL 14 8 (2 NIL 9) (2 NIL 1 (0.0) 11 13 1 (1.4) 4 1 (0.0) 10 10 13 9) 5) 13 3 (6 2 NIL 3 (1 (0.0) 11 2 1 1 (0.0) 10 15 13 5) 13 …

compiler.lisp

(LETREC COMPILE (COMPILE LAMBDA (E) (COMP E (QUOTE NIL) (QUOTE (4 21)))) (COMP LAMBDA (E N C) (IF (ATOM E) (CONS (QUOTE 1) (CONS (LOCATION E N) C)) (IF (EQ (CAR E) (QUOTE QUOTE)) (CONS (QUOTE 2) (CONS (CAR (CDR E)) C)) (IF (EQ (CAR E) (QUO…

secd_cod.js

/* secd_mem */ var maxReg = 10; var regs = new Array(maxReg + 1); function error(s) { printf("\n"+s+" !\n"); flush(); throw s; } function showStat() { printf("--- SECD stats: Loops= "+loopCnt+"\n"); } /** * regs[s]のcarをregs[d]に入れる。 …

HendersonのSECDマシン

SECD ManiaのHendersonのSECDマシンをjavascriptに移植したので、載せておきます。 self.htmlを開くとcompiler.secdコードを使ってcompiler.lispを セルフコンパイルします。結果が画面上に表示されます。 ファイル読み込みは、AJax使ってます。 VMなので、…