Compiler can compile simple nested expressions and function calls.
The generated code can be called from C, and values can be passed between.
diff --git a/src/lisp/compiler.h b/src/lisp/compiler.h
index f7be765..37eaeba 100644
--- a/src/lisp/compiler.h
+++ b/src/lisp/compiler.h
@@ -1,9 +1,9 @@
#pragma once
#include "lisp.h"
+#include <dasm_proto.h>
#include <stdbool.h>
#include <stdint.h>
-#include <dasm_proto.h>
struct function
{
@@ -16,7 +16,7 @@
value_t (*def2) (value_t, value_t);
value_t (*def3) (value_t, value_t, value_t);
void *code_ptr;
- uintrptr_t code_addr;
+ uintptr_t code_addr;
};
struct function *prev;
@@ -45,5 +45,7 @@
void compile_expression (struct environment *env, struct local *local,
value_t val, dasm_State **Dst);
-void compile (struct istream *is);
+void compile_expr_to_func (struct environment *env, char *name, value_t val,
+ dasm_State **Dst);
+void compile (value_t val);
struct function *find_function (struct environment *env, char *name);