From 645549b8a42844fc5a8042a4808c8ebf5050d7da Mon Sep 17 00:00:00 2001 From: Teddy Date: Sun, 4 Aug 2013 23:35:59 +0800 Subject: added support for `cons`, `car`, `cdr` --- eval.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'eval.cpp') diff --git a/eval.cpp b/eval.cpp index efd1114..de06209 100644 --- a/eval.cpp +++ b/eval.cpp @@ -21,6 +21,9 @@ void Evaluator::add_builtin_routines() { ADD_ENTRY("<", new BuiltinProcObj(builtin_lt, "<")); ADD_ENTRY("=", new BuiltinProcObj(builtin_arithmetic_eq, "=")); ADD_ENTRY("display", new BuiltinProcObj(builtin_display, "display")); + ADD_ENTRY("cons", new BuiltinProcObj(builtin_cons, "cons")); + ADD_ENTRY("car", new BuiltinProcObj(builtin_car, "car")); + ADD_ENTRY("cdr", new BuiltinProcObj(builtin_cdr, "cdr")); ADD_ENTRY("if", new SpecialOptIf()); ADD_ENTRY("lambda", new SpecialOptLambda()); ADD_ENTRY("define", new SpecialOptDefine()); @@ -79,7 +82,7 @@ EvalObj *Evaluator::run_expr(Cons *prog) { RetAddr *ret_addr = static_cast(*top_ptr); if (!ret_addr->addr) { - Cons *nexp = cont->proc_body->cdr; + Cons *nexp = TO_CONS(cont->proc_body->cdr); cont->proc_body = nexp; if (nexp == empty_list) { -- cgit v1.2.3