diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | ast.c | 10 | ||||
-rw-r--r-- | ast.h | 4 |
3 files changed, 13 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a470cdb --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +parser.c +parser.h +badthing @@ -2,6 +2,7 @@ #include <stdlib.h> #include <stddef.h> #include <stdio.h> +#include <assert.h> AstVec astvec_new() { AstNode *vals = malloc(2 * sizeof(AstNode)); @@ -23,6 +24,12 @@ void astvec_append(AstVec *v, AstNode val) { v->len ++; } +void astnode_append(AstNode *l, AstNode val) { + printf(" astnode_append: %d\n",l->ty); + assert(l->ty == AST_LIST); + astvec_append(&l->as.list, val); +} + AstNode astnode_new_num(int n) { return (AstNode){ .ty = AST_NUM, @@ -41,6 +48,3 @@ AstNode astnode_new_list() { }; } - - - @@ -5,8 +5,9 @@ #include <stddef.h> typedef enum { - AST_NUM, + AST_NOTHING, AST_LIST, + AST_NUM, } AstTy; struct _astnode; @@ -29,6 +30,7 @@ struct _astnode { AstVec astvec_new(); void astvec_append(AstVec *v, AstNode val); +void astnode_append(AstNode *l, AstNode val); AstNode astnode_new_num(int n); AstNode astnode_new_list(); |