diff options
-rw-r--r-- | com.c | 9 | ||||
-rw-r--r-- | tests/def.bth | 5 | ||||
-rw-r--r-- | tests/def.out | 2 |
3 files changed, 12 insertions, 4 deletions
@@ -712,14 +712,15 @@ int main(int argc, char **argv) { exit(1); } - AstNode an; - memset(&an, 0, sizeof an); + AstNode an = { 0 }; + AstNode top = astnode_new_list(); pcc_context_t *parser = pcc_create(infile); while (pcc_parse(parser, &an)) { - compile_node(&com, an, 0); - astnode_free(&an); + astnode_append(&top, an); } pcc_destroy(parser); + compile_body(&com, top.as.list, 0, 0); + astnode_free(&top); } diff --git a/tests/def.bth b/tests/def.bth new file mode 100644 index 0000000..d4a7d74 --- /dev/null +++ b/tests/def.bth @@ -0,0 +1,5 @@ +(def a 100) +(def b 200) +(def c 300) +(say b) +(let (q 10 r 20 s 30) (say r)) diff --git a/tests/def.out b/tests/def.out new file mode 100644 index 0000000..f774a6f --- /dev/null +++ b/tests/def.out @@ -0,0 +1,2 @@ +200 +20 |