diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2015-12-24 15:36:49 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2015-12-24 15:36:49 -0700 |
| commit | 5943f995106f9fc2c7c5b416c8d4a2ebba2b8315 (patch) | |
| tree | e7c67f1b85260de9b54e22a85de8eb3212788d86 /src/parser.cpp | |
| parent | 44ca5e19dc174383b1b0490e636398092711306d (diff) | |
| download | zig-5943f995106f9fc2c7c5b416c8d4a2ebba2b8315.tar.gz zig-5943f995106f9fc2c7c5b416c8d4a2ebba2b8315.zip | |
implement continue expression
closes #6
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index ff6a2dd573..994923c377 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -124,6 +124,8 @@ const char *node_type_str(NodeType node_type) { return "Goto"; case NodeTypeBreak: return "Break"; + case NodeTypeContinue: + return "Continue"; case NodeTypeAsmExpr: return "AsmExpr"; case NodeTypeFieldAccessExpr: @@ -341,6 +343,9 @@ void ast_print(AstNode *node, int indent) { case NodeTypeBreak: fprintf(stderr, "%s\n", node_type_str(node->type)); break; + case NodeTypeContinue: + fprintf(stderr, "%s\n", node_type_str(node->type)); + break; case NodeTypeAsmExpr: fprintf(stderr, "%s\n", node_type_str(node->type)); break; @@ -1107,7 +1112,7 @@ static AstNode *ast_parse_struct_val_expr(ParseContext *pc, int *token_index) { } /* -PrimaryExpression : token(Number) | token(String) | KeywordLiteral | GroupedExpression | Goto | Break | BlockExpression | token(Symbol) | StructValueExpression +PrimaryExpression : token(Number) | token(String) | KeywordLiteral | GroupedExpression | Goto | token(Break) | token(Continue) | BlockExpression | token(Symbol) | StructValueExpression */ static AstNode *ast_parse_primary_expr(ParseContext *pc, int *token_index, bool mandatory) { Token *token = &pc->tokens->at(*token_index); @@ -1165,6 +1170,10 @@ static AstNode *ast_parse_primary_expr(ParseContext *pc, int *token_index, bool AstNode *node = ast_create_node(pc, NodeTypeBreak, token); *token_index += 1; return node; + } else if (token->id == TokenIdKeywordContinue) { + AstNode *node = ast_create_node(pc, NodeTypeContinue, token); + *token_index += 1; + return node; } AstNode *grouped_expr_node = ast_parse_grouped_expr(pc, token_index, false); |
