From 2527c34ddf4ca3e5eb9197eeeb5bb7eac41c212c Mon Sep 17 00:00:00 2001 From: Max Regan Date: Fri, 4 Nov 2022 22:03:47 -0400 Subject: [PATCH] Add quote special form --- src/main.c | 3 +-- src/special.c | 4 ++++ src/special.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 29c84fc..ae62bb6 100644 --- a/src/main.c +++ b/src/main.c @@ -19,10 +19,9 @@ int main(int argc, const char **argv) { ucl_state_put(state, "lambda", ucl_special_create(ucl_special_lambda)); ucl_state_put(state, "setq", ucl_special_create(ucl_special_setq)); ucl_state_put(state, "progn", ucl_special_create(ucl_special_progn)); + ucl_state_put(state, "quote", ucl_special_create(ucl_special_quote)); // TODO: - // - progn - // - quote // - iteration ucl_state_put(state, "print", ucl_builtin_create(ucl_builtin_print)); diff --git a/src/special.c b/src/special.c index d5c1e7b..67420cc 100644 --- a/src/special.c +++ b/src/special.c @@ -101,3 +101,7 @@ struct ucl_object *ucl_special_setq(struct ucl_state *state, struct ucl_object * struct ucl_object *ucl_special_progn(struct ucl_state *state, struct ucl_object *args) { return ucl_progn(state, args); } + +struct ucl_object *ucl_special_quote(struct ucl_state *state, struct ucl_object *args) { + return ucl_car(args); +} diff --git a/src/special.h b/src/special.h index 2c80359..b052e03 100644 --- a/src/special.h +++ b/src/special.h @@ -9,5 +9,6 @@ struct ucl_object *ucl_special_defun(struct ucl_state *state, struct ucl_object struct ucl_object *ucl_special_lambda(struct ucl_state *state, struct ucl_object *args); struct ucl_object *ucl_special_setq(struct ucl_state *state, struct ucl_object *args); struct ucl_object *ucl_special_progn(struct ucl_state *state, struct ucl_object *args); +struct ucl_object *ucl_special_quote(struct ucl_state *state, struct ucl_object *args); #endif