From e3b757ab811e82f8e1022b0bba0be5f3c328f8b7 Mon Sep 17 00:00:00 2001 From: Felix Perktold Date: Sun, 21 Dec 2025 02:01:00 +0100 Subject: add environments for symbol definition/lookup --- lisp.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'lisp.h') diff --git a/lisp.h b/lisp.h index 535bc50..4053bd5 100644 --- a/lisp.h +++ b/lisp.h @@ -32,6 +32,19 @@ value *make_string(const char *str); value *make_nil(); value *cons(value *car, value *cdr); -void *print_val(value *val); +void *print_value(value *val); +// environments, TODO: make this use hashtable +// symbol->val +typedef struct env env; +typedef struct env { + const char *symbol; + value *value; + env *next; + env *parent; +} env; + +env *env_create(env *parent); +env *env_define(env *e, const char *sym, value *val); +value *env_lookup(env *e, const char *sym); #endif -- cgit v1.2.3