lang: ast: implement parsing of true/false/null keyword constants

This commit is contained in:
2025-09-08 15:56:03 +01:00
parent bf250179da
commit 8ab377b3ab
5 changed files with 46 additions and 0 deletions

View File

@@ -42,6 +42,9 @@ extern struct ast_node_type pkg_dynamic_node_ops;
extern struct ast_node_type discard_node_ops;
extern struct ast_node_type try_node_ops;
extern struct ast_node_type try_catch_node_ops;
extern struct ast_node_type c_true_node_ops;
extern struct ast_node_type c_false_node_ops;
extern struct ast_node_type c_null_node_ops;
static const struct ast_node_type *node_ops[] = {
[IVY_AST_UNIT] = &unit_node_ops,
@@ -80,6 +83,9 @@ static const struct ast_node_type *node_ops[] = {
[IVY_AST_DISCARD] = &discard_node_ops,
[IVY_AST_TRY] = &try_node_ops,
[IVY_AST_TRY_CATCH] = &try_catch_node_ops,
[IVY_AST_C_TRUE] = &c_true_node_ops,
[IVY_AST_C_FALSE] = &c_false_node_ops,
[IVY_AST_C_NULL] = &c_null_node_ops,
};
static const size_t nr_node_ops = sizeof node_ops / sizeof node_ops[0];
@@ -129,6 +135,9 @@ enum token_expr_type get_token_expr_type(struct ivy_token *tok)
case IVY_KW_CONTINUE:
case IVY_KW_TRY:
case IVY_KW_THROW:
case IVY_KW_TRUE:
case IVY_KW_FALSE:
case IVY_KW_NULL:
return TOK_EXPR_BEGIN;
default:
op = ivy_operator_get_by_token(tok->t_keyword);
@@ -379,6 +388,9 @@ const char *ivy_ast_node_type_to_string(enum ivy_ast_node_type v)
ENUM_STR(IVY_AST_TRY);
ENUM_STR(IVY_AST_TRY_CATCH);
ENUM_STR(IVY_AST_TYPE_COUNT);
ENUM_STR(IVY_AST_C_TRUE);
ENUM_STR(IVY_AST_C_FALSE);
ENUM_STR(IVY_AST_C_NULL);
default:
return "";
}