diff options
| author | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2025-12-21 02:01:00 +0100 |
|---|---|---|
| committer | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2025-12-21 02:01:00 +0100 |
| commit | e3b757ab811e82f8e1022b0bba0be5f3c328f8b7 (patch) | |
| tree | 622899eddc04da4a862f340bd2910c9d72acdd3f /lisp.h | |
| parent | bb631d0e744fa91c663a7a35195125e36c1139b0 (diff) | |
add environments for symbol definition/lookup
Diffstat (limited to 'lisp.h')
| -rw-r--r-- | lisp.h | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -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 |
