| author | |
| committer | |
| log | 311fd6708398a81ceb17780974715f53c33f09d8 |
| tree | a04ae009693ff7afa12cb309b991b23cc3a4a019 |
| parent | 22421447fbaba77d9480e31a69f6b78448ea2b2f |
3 files changed, 3 insertions(+), 21 deletions(-)
src/codegen.cpp+2-7| ... | @@ -292,9 +292,6 @@ static void analyze_node(CodeGen *g, AstNode *node) { | ... | @@ -292,9 +292,6 @@ static void analyze_node(CodeGen *g, AstNode *node) { |
| 292 | analyze_node(g, child); | 292 | analyze_node(g, child); |
| 293 | } | 293 | } |
| 294 | break; | 294 | break; |
| 295 | case NodeTypeStatementExpression: | ||
| 296 | analyze_node(g, node->data.statement_expression.expression); | ||
| 297 | break; | ||
| 298 | case NodeTypeStatementReturn: | 295 | case NodeTypeStatementReturn: |
| 299 | analyze_node(g, node->data.statement_return.expression); | 296 | analyze_node(g, node->data.statement_return.expression); |
| 300 | break; | 297 | break; |
| ... | @@ -520,10 +517,9 @@ static void gen_block(CodeGen *g, AstNode *block_node) { | ... | @@ -520,10 +517,9 @@ static void gen_block(CodeGen *g, AstNode *block_node) { |
| 520 | LLVMBuildRet(g->builder, value); | 517 | LLVMBuildRet(g->builder, value); |
| 521 | break; | 518 | break; |
| 522 | } | 519 | } |
| 523 | case NodeTypeStatementExpression: | 520 | case NodeTypeExpression: |
| 524 | { | 521 | { |
| 525 | AstNode *expr_node = statement_node->data.statement_expression.expression; | 522 | gen_expr(g, statement_node); |
| 526 | gen_expr(g, expr_node); | ||
| 527 | break; | 523 | break; |
| 528 | } | 524 | } |
| 529 | case NodeTypeRoot: | 525 | case NodeTypeRoot: |
| ... | @@ -533,7 +529,6 @@ static void gen_block(CodeGen *g, AstNode *block_node) { | ... | @@ -533,7 +529,6 @@ static void gen_block(CodeGen *g, AstNode *block_node) { |
| 533 | case NodeTypeParamDecl: | 529 | case NodeTypeParamDecl: |
| 534 | case NodeTypeType: | 530 | case NodeTypeType: |
| 535 | case NodeTypeBlock: | 531 | case NodeTypeBlock: |
| 536 | case NodeTypeExpression: | ||
| 537 | case NodeTypeFnCall: | 532 | case NodeTypeFnCall: |
| 538 | case NodeTypeExternBlock: | 533 | case NodeTypeExternBlock: |
| 539 | case NodeTypeDirective: | 534 | case NodeTypeDirective: |
src/parser.cpp+1-8| ... | @@ -41,8 +41,6 @@ const char *node_type_str(NodeType node_type) { | ... | @@ -41,8 +41,6 @@ const char *node_type_str(NodeType node_type) { |
| 41 | return "Type"; | 41 | return "Type"; |
| 42 | case NodeTypeBlock: | 42 | case NodeTypeBlock: |
| 43 | return "Block"; | 43 | return "Block"; |
| 44 | case NodeTypeStatementExpression: | ||
| 45 | return "StatementExpression"; | ||
| 46 | case NodeTypeStatementReturn: | 44 | case NodeTypeStatementReturn: |
| 47 | return "StatementReturn"; | 45 | return "StatementReturn"; |
| 48 | case NodeTypeExpression: | 46 | case NodeTypeExpression: |
| ... | @@ -132,10 +130,6 @@ void ast_print(AstNode *node, int indent) { | ... | @@ -132,10 +130,6 @@ void ast_print(AstNode *node, int indent) { |
| 132 | fprintf(stderr, "ReturnStatement\n"); | 130 | fprintf(stderr, "ReturnStatement\n"); |
| 133 | ast_print(node->data.statement_return.expression, indent + 2); | 131 | ast_print(node->data.statement_return.expression, indent + 2); |
| 134 | break; | 132 | break; |
| 135 | case NodeTypeStatementExpression: | ||
| 136 | fprintf(stderr, "ExpressionStatement\n"); | ||
| 137 | ast_print(node->data.statement_expression.expression, indent + 2); | ||
| 138 | break; | ||
| 139 | case NodeTypeExternBlock: | 133 | case NodeTypeExternBlock: |
| 140 | { | 134 | { |
| 141 | fprintf(stderr, "%s\n", node_type_str(node->type)); | 135 | fprintf(stderr, "%s\n", node_type_str(node->type)); |
| ... | @@ -466,8 +460,7 @@ static AstNode *ast_parse_statement(ParseContext *pc, int token_index, int *new_ | ... | @@ -466,8 +460,7 @@ static AstNode *ast_parse_statement(ParseContext *pc, int token_index, int *new_ |
| 466 | token->id == TokenIdKeywordUnreachable || | 460 | token->id == TokenIdKeywordUnreachable || |
| 467 | token->id == TokenIdNumberLiteral) | 461 | token->id == TokenIdNumberLiteral) |
| 468 | { | 462 | { |
| 469 | AstNode *node = ast_create_node(NodeTypeStatementExpression, token); | 463 | AstNode *node = ast_parse_expression(pc, token_index, &token_index); |
| 470 | node->data.statement_expression.expression = ast_parse_expression(pc, token_index, &token_index); | ||
| 471 | 464 | ||
| 472 | Token *semicolon = &pc->tokens->at(token_index); | 465 | Token *semicolon = &pc->tokens->at(token_index); |
| 473 | token_index += 1; | 466 | token_index += 1; |
src/parser.hpp-6| ... | @@ -27,7 +27,6 @@ enum NodeType { | ... | @@ -27,7 +27,6 @@ enum NodeType { |
| 27 | NodeTypeFnCall, | 27 | NodeTypeFnCall, |
| 28 | NodeTypeExternBlock, | 28 | NodeTypeExternBlock, |
| 29 | NodeTypeDirective, | 29 | NodeTypeDirective, |
| 30 | NodeTypeStatementExpression, | ||
| 31 | NodeTypeStatementReturn, | 30 | NodeTypeStatementReturn, |
| 32 | }; | 31 | }; |
| 33 | 32 | ||
| ... | @@ -71,10 +70,6 @@ struct AstNodeBlock { | ... | @@ -71,10 +70,6 @@ struct AstNodeBlock { |
| 71 | ZigList<AstNode *> statements; | 70 | ZigList<AstNode *> statements; |
| 72 | }; | 71 | }; |
| 73 | 72 | ||
| 74 | struct AstNodeStatementExpression { | ||
| 75 | AstNode *expression; | ||
| 76 | }; | ||
| 77 | |||
| 78 | struct AstNodeStatementReturn { | 73 | struct AstNodeStatementReturn { |
| 79 | AstNode *expression; | 74 | AstNode *expression; |
| 80 | }; | 75 | }; |
| ... | @@ -124,7 +119,6 @@ struct AstNode { | ... | @@ -124,7 +119,6 @@ struct AstNode { |
| 124 | AstNodeType type; | 119 | AstNodeType type; |
| 125 | AstNodeParamDecl param_decl; | 120 | AstNodeParamDecl param_decl; |
| 126 | AstNodeBlock block; | 121 | AstNodeBlock block; |
| 127 | AstNodeStatementExpression statement_expression; | ||
| 128 | AstNodeStatementReturn statement_return; | 122 | AstNodeStatementReturn statement_return; |
| 129 | AstNodeExpression expression; | 123 | AstNodeExpression expression; |
| 130 | AstNodeFnCall fn_call; | 124 | AstNodeFnCall fn_call; |