From 18accf3d69f4aa698dc72448b27028a32cdf383b Mon Sep 17 00:00:00 2001 From: Bernd Jendrissek Date: Mon, 28 Jan 2008 00:20:40 +0000 Subject: [PATCH] Implement quote as a built-in macro. --- lisp/lisp.c | 11 +++++++++++ lisp/test-expected | 2 ++ lisp/test-input | 2 ++ 3 files changed, 15 insertions(+) diff --git a/lisp/lisp.c b/lisp/lisp.c index a562648..62df56e 100644 --- a/lisp/lisp.c +++ b/lisp/lisp.c @@ -473,6 +473,16 @@ union value_pointer builtin_lambda(struct environment *env, return retval; } +union value_pointer builtin_quote(struct environment *env, + struct pair *rest) +{ + union value_pointer retval; + + retval = rest->car; + + return retval; +} + union value_pointer builtin_plus(struct environment *env, struct pair *rest) { @@ -529,6 +539,7 @@ int main() binding_builtin(top_env, "cdr", opaque_builtin_function, builtin_cdr); binding_builtin(top_env, "cons", opaque_builtin_function, builtin_cons); binding_builtin(top_env, "lambda", opaque_builtin_macro, builtin_lambda); + binding_builtin(top_env, "quote", opaque_builtin_macro, builtin_quote); binding_builtin(top_env, "+", opaque_builtin_function, builtin_plus); form.vp_pair = NULL; pointer_mark(&form, 3); diff --git a/lisp/test-expected b/lisp/test-expected index a9552a4..96335f6 100644 --- a/lisp/test-expected +++ b/lisp/test-expected @@ -7,3 +7,5 @@ lambda -> builtin-macro (lambda () 42) -> user-function ((lambda () 42)) -> 42 ((lambda (a) (+ 2 a)) 17) -> 19 +(quote ()) -> () +(quote (a b c)) -> (a b c) diff --git a/lisp/test-input b/lisp/test-input index 6346b3f..ca7da3d 100644 --- a/lisp/test-input +++ b/lisp/test-input @@ -7,3 +7,5 @@ lambda (lambda () 42) ((lambda () 42)) ((lambda (a) (+ 2 a)) 17) +(quote ()) +(quote (a b c)) -- 2.11.4.GIT