2014-04-01から1ヶ月間の記事一覧

alexpander

alexpander*1が、r5rsのsyntax-rulesを展開する*2らしいので、組み込んでみた。 let alexpand sexps = let defs = parseDefs (sexps_from "lib/alexpander.scm") and primis = ge Eval.eval_apply in let env = Eval.extendletrec primis defs in let expand…

caseとlet*

case syntaxとlet* syntaxに対応した。 パーサにparseLetstarとparseCaseを追加した。 対話環境でテストしてみる。 # let e1 = parse "(case (* 2 3) ((2 3 5 7) 'prime) ((1 4 6 8 9) 'composit))";; val e1 : Parser.exp = IfExp (ApplyExp (VarExp "memv"…

ベクタリテラル、文字リテラル

今まで対応していなかった、ベクタと文字のリテラルに対応した。 s式パーサとレキサを修正。r7rsによると、`#( は、トークンである。sparser.mly Sexp : | CHARV { Char $1 } | SHARPLPAREN Sexplist RPAREN { Vector $2 } 対話環境でテストしてみる。 # let…