lang: ast: implement parsing of match statements

This commit is contained in:
2024-12-04 22:22:25 +00:00
parent 0bb4a4284c
commit 7acf80f930
10 changed files with 396 additions and 13 deletions

View File

@@ -22,6 +22,8 @@ extern struct ast_node_type string_node_ops;
extern struct ast_node_type cascade_node_ops;
extern struct ast_node_type cond_group_node_ops;
extern struct ast_node_type cond_node_ops;
extern struct ast_node_type match_node_ops;
extern struct ast_node_type discard_node_ops;
static const struct ast_node_type *node_ops[] = {
[IVY_AST_UNIT] = &unit_node_ops,
@@ -41,6 +43,8 @@ static const struct ast_node_type *node_ops[] = {
[IVY_AST_CASCADE] = &cascade_node_ops,
[IVY_AST_COND_GROUP] = &cond_group_node_ops,
[IVY_AST_COND] = &cond_node_ops,
[IVY_AST_MATCH] = &match_node_ops,
[IVY_AST_DISCARD] = &discard_node_ops,
};
static const size_t nr_node_ops = sizeof node_ops / sizeof node_ops[0];
@@ -222,6 +226,7 @@ const char *ivy_ast_node_type_to_string(enum ivy_ast_node_type v)
ENUM_STR(IVY_AST_LAMBDA);
ENUM_STR(IVY_AST_UNIT_PACKAGE);
ENUM_STR(IVY_AST_UNIT_IMPORT);
ENUM_STR(IVY_AST_DISCARD);
ENUM_STR(IVY_AST_INT);
ENUM_STR(IVY_AST_DOUBLE);
ENUM_STR(IVY_AST_STRING);
@@ -232,6 +237,7 @@ const char *ivy_ast_node_type_to_string(enum ivy_ast_node_type v)
ENUM_STR(IVY_AST_WHILE_LOOP);
ENUM_STR(IVY_AST_CASCADE);
ENUM_STR(IVY_AST_COND_GROUP);
ENUM_STR(IVY_AST_MATCH);
ENUM_STR(IVY_AST_COND);
ENUM_STR(IVY_AST_TUPLE);
ENUM_STR(IVY_AST_BLOCK);