diff options
| author | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2025-12-20 21:59:28 +0100 |
|---|---|---|
| committer | Felix Perktold <Felix.Perktold@student.uibk.ac.at> | 2025-12-20 21:59:28 +0100 |
| commit | 5eeb355805e0d5d91981dbe7eacb078f41da0437 (patch) | |
| tree | d4d2a76e7988cf63aa9438d2b42d0a4a4656ee42 /lisp.h | |
init commit
Diffstat (limited to 'lisp.h')
| -rw-r--r-- | lisp.h | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -0,0 +1,37 @@ +#ifndef LISP_H +#define LISP_H + +typedef enum { + VALTYPE_INT, + VALTYPE_DOUBLE, + VALTYPE_SYMBOL, + VALTYPE_STRING, + VALTYPE_NIL, + VALTYPE_PAIR +} val_type; + +typedef struct value value; +struct value { + val_type type; + union { + int i; + double d; + const char *sym; + const char *str; + struct { + value *car; + value *cdr; + } pair; + } as; +}; + +value *make_int(int i); +value *make_double(double d); +value *make_symbol(const char *sym); +value *make_string(const char *str); +value *make_nil(); +value *cons(value *car, value *cdr); + +void *print_val(value *val); + +#endif |
