authorgravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2015-11-25 16:43:08-07:00
committergravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2015-11-25 16:43:16-07:00
log311fd6708398a81ceb17780974715f53c33f09d8
treea04ae009693ff7afa12cb309b991b23cc3a4a019
parent22421447fbaba77d9480e31a69f6b78448ea2b2f

inline AstNodeStatementExpression


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);
471464
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};
3332
...@@ -71,10 +70,6 @@ struct AstNodeBlock {...@@ -71,10 +70,6 @@ struct AstNodeBlock {
71 ZigList<AstNode *> statements;70 ZigList<AstNode *> statements;
72};71};
7372
74struct AstNodeStatementExpression {
75 AstNode *expression;
76};
77
78struct AstNodeStatementReturn {73struct 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;