lang: ast: implement parsing of break/continue loop-control statements
This commit is contained in:
@@ -30,6 +30,8 @@ extern struct ast_node_type cond_node_ops;
|
||||
extern struct ast_node_type match_node_ops;
|
||||
extern struct ast_node_type while_loop_node_ops;
|
||||
extern struct ast_node_type for_loop_node_ops;
|
||||
extern struct ast_node_type loop_break_node_ops;
|
||||
extern struct ast_node_type loop_repeat_node_ops;
|
||||
extern struct ast_node_type return_node_ops;
|
||||
extern struct ast_node_type property_node_ops;
|
||||
extern struct ast_node_type lambda_node_ops;
|
||||
@@ -66,6 +68,8 @@ static const struct ast_node_type *node_ops[] = {
|
||||
[IVY_AST_MATCH] = &match_node_ops,
|
||||
[IVY_AST_WHILE_LOOP] = &while_loop_node_ops,
|
||||
[IVY_AST_FOR_LOOP] = &for_loop_node_ops,
|
||||
[IVY_AST_LOOP_BREAK] = &loop_break_node_ops,
|
||||
[IVY_AST_LOOP_REPEAT] = &loop_repeat_node_ops,
|
||||
[IVY_AST_RETURN] = &return_node_ops,
|
||||
[IVY_AST_PROPERTY] = &property_node_ops,
|
||||
[IVY_AST_LAMBDA] = &lambda_node_ops,
|
||||
@@ -121,6 +125,8 @@ enum token_expr_type get_token_expr_type(struct ivy_token *tok)
|
||||
case IVY_KW_MATCH:
|
||||
case IVY_KW_FOR:
|
||||
case IVY_KW_WHILE:
|
||||
case IVY_KW_BREAK:
|
||||
case IVY_KW_CONTINUE:
|
||||
case IVY_KW_TRY:
|
||||
case IVY_KW_THROW:
|
||||
return TOK_EXPR_BEGIN;
|
||||
@@ -357,6 +363,8 @@ const char *ivy_ast_node_type_to_string(enum ivy_ast_node_type v)
|
||||
ENUM_STR(IVY_AST_IDENT);
|
||||
ENUM_STR(IVY_AST_FOR_LOOP);
|
||||
ENUM_STR(IVY_AST_WHILE_LOOP);
|
||||
ENUM_STR(IVY_AST_LOOP_BREAK);
|
||||
ENUM_STR(IVY_AST_LOOP_REPEAT);
|
||||
ENUM_STR(IVY_AST_CASCADE);
|
||||
ENUM_STR(IVY_AST_COND_GROUP);
|
||||
ENUM_STR(IVY_AST_MATCH);
|
||||
|
||||
Reference in New Issue
Block a user