diff --git a/src/ast_util.c b/src/ast_util.c index 799b596..44e390c 100644 --- a/src/ast_util.c +++ b/src/ast_util.c @@ -56,11 +56,47 @@ void ast_node_print(ASTNode *node, int depth) { case NODE_TYPE_STAR: printf("NODE_TYPE_STAR"); break; + case NODE_EXPR: + printf("NODE_EXPR"); + break; case NODE_ID: printf("NODE_ID"); break; - default: - printf("UNKNOWN_NODE"); + case NODE_NUM: + printf("NODE_NUM"); + break; + case NODE_STR: + printf("NODE_STR"); + break; + case NODE_STAR: + printf("NODE_STAR"); + break; + case NODE_ANDREF: + printf("NODE_ANDREF"); + break; + case NODE_PARAM_LIST: + printf("NODE_PARAM_LIST"); + break; + case NODE_PARAM: + printf("NODE_PARAM"); + break; + case NODE_LAMBDA: + printf("NODE_LAMBDA"); + break; + case NODE_COMPOUND: + printf("NODE_COMPOUND"); + break; + case NODE_STMT_RETURN: + printf("NODE_STMT_RETURN"); + break; + case NODE_STMT_EXPR: + printf("NODE_STMT_EXPR"); + break; + case NODE_STMT_SET: + printf("NODE_STMT_SET"); + break; + case NODE_STMT_IF: + printf("NODE_STMT_IF"); break; } @@ -110,6 +146,8 @@ ASTNode *ast_node_type_simple(Token tok_id) { ASTNode *ast_node_type_complex( Token tok_bracket, ASTNode *type_param, ASTNode *type_out) { ASTNode *node = ast_node_new(NODE_TYPE_COMPLEX, tok_bracket); + type_param->token = tok_bracket; + type_out->token = tok_bracket; ast_node_add_child(node, type_param); ast_node_add_child(node, type_out); return node; diff --git a/test2.cval b/test2.cval index 336e114..0cbbd59 100644 --- a/test2.cval +++ b/test2.cval @@ -4,4 +4,6 @@ val char* line; val size_t line get_line_ptr stdin line; -val char first *line; \ No newline at end of file +val char first *line; + +val [int [int->size_t]->size_t] functor; \ No newline at end of file