diff options
| author | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2026-01-24 18:33:31 +0100 |
|---|---|---|
| committer | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2026-01-24 18:33:31 +0100 |
| commit | dc1fc66181cba96cc94f21f055676b952489dbd9 (patch) | |
| tree | 61889b183df011298c41d314419b41e55ee02991 /lisp.h | |
| parent | 991d7eaa2a9550c7be0a63d7c1ba7c38c7de2acf (diff) | |
start implementing mark&sweep
Diffstat (limited to 'lisp.h')
| -rw-r--r-- | lisp.h | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -3,6 +3,7 @@ typedef struct value value; typedef struct env env; +typedef struct reg reg; // environments, TODO: make this use hashtable // symbol->val @@ -16,7 +17,6 @@ typedef struct env { env *env_create(env *parent); env *env_define(env *e, const char *sym, value *val); value *env_lookup(env *e, const char *sym); - extern env *global_env; value *eval_pair(env *e, value *val); @@ -25,4 +25,16 @@ value *apply(value *lambda, value *args); value *procedure_load_module(env *e, value *args); +typedef struct reg { + value *value; + reg *next; +} reg; + +reg *reg_add(value *val); +void free_value(reg *r); +extern reg *global_reg; +int mark_env(env *e); +int mark_val(value *v); +int sweep(); + #endif |
