EoPL reading (139) 3.2 The Front End
ええと、parse な試験は全部書けてはないはずなので検討。
以下で良いのかな。# 面倒なので全部
(use gauche.test) (add-load-path ".") (load "parse-program") (load "Fig3.2") (test-start "parse-program") (test-section "example") (test* "(eval-program (parse-program '5))" 5 (eval-program (parse-program '5))) (test* "(eval-program (parse-program '(add1 2)))" 3 (eval-program (parse-program '(add1 2)))) (test* "(eval-program (parse-program '(+ (add1 2) (- 6 4))))" 5 (eval-program (parse-program '(+ (add1 2) (- 6 4))))) (test-section "parse-program") (test* "(parse-program 1)" '(a-program (lit-exp 1)) (parse-program 1)) (test-section "parse-expression") (test* "(parse-expression 1)" '(lit-exp 1) (parse-expression 1)) (test* "(parse-expression 'a)" '(var-exp a) (parse-expression 'a)) (test* "(parse-expression '(+ 1 1))" '(primapp-exp (add-prim) ((lit-exp 1) (lit-exp 1))) (parse-expression '(+ 1 1))) (test* "(parse-expression '(- 1 1))" '(primapp-exp (subtract-prim) ((lit-exp 1) (lit-exp 1))) (parse-expression '(- 1 1))) (test* "(parse-expression '(* 1 1))" '(primapp-exp (mult-prim) ((lit-exp 1) (lit-exp 1))) (parse-expression '(* 1 1))) (test* "(parse-expression '(add1 1))" '(primapp-exp (incr-prim) ((lit-exp 1))) (parse-expression '(add1 1))) (test* "(parse-expression '(sub1 1))" '(primapp-exp (decr-prim) ((lit-exp 1))) (parse-expression '(sub1 1))) (test-end)
これで Ex.3.3 は OK ってコトにします。次は 3.4 です。パワーが続く限りヤッツケな方向にて。
Exercise 3.4
ええと、run は gauche.test で試験できますが read-eval-print は無理ですな。とりあえず run の試験が以下。
(use gauche.test) (add-load-path ".") (load "run") (test-start "run") (test-section "run") (test* "(run '5)" 5 (run '5)) (test* "(run '(add1 2))" 3 (run '(add1 2))) (test* "(run '(sub1 2))" 1 (run '(sub1 2))) (test* "(run '(+ 1 1))" 2 (run '(+ 1 1))) (test* "(run '(- 1 1))" 0 (run '(- 1 1))) (test* "(run '(* 1 1))" 1 (run '(* 1 1))) (test* "(run 'x)" 10 (run 'x)) (test-end)
今日はこれで力尽きる方向ッス。残りは明日以降な上に GAE にニゲる可能性大。あとマクドで無線の動作確認したい。 (何