stage1 实现部分ast2ir内容并重构stage0 引入并重构ir2vm 构建系统修改部分

This commit is contained in:
zzy committed 2026-08-28 13:01:19 +08:00
1 parent 3d57260f3f
commit 34df303b56
17 files changed
+636 -1800

No files matched your search

+15 -14
View File
@@ -46,7 +46,7 @@
X(SPL_AST_ASSIGN_OR_EXPR, V0, assign_or_expr) \
X(SPL_AST_ASSIGN_XOR_EXPR, V0, assign_xor_expr) \
X(SPL_AST_ASSIGN_LSHIFT_EXPR, V0, assign_lshift_expr) \
X(SPL_AST_ASSIGN_USHIFT_EXPR, V0, assign_ushift_expr) \
X(SPL_AST_ASSIGN_RSHIFT_EXPR, V0, assign_rshift_expr) \
X(SPL_AST_BOOL_OR_EXPR, V0, bool_or_expr) \
X(SPL_AST_BOOL_AND_EXPR, V0, bool_and_expr) \
X(SPL_AST_BIT_OR_EXPR, V0, bit_or_expr) \
@@ -152,14 +152,14 @@ struct spl_ast_node {
} attr_item;
struct {
spl_ast_node_ref_vec_t attr_list; /* attr_item */
spl_ast_node_ref_vec_t attr_list; /* attr_item */
const char *name;
spl_ast_node_ref_vec_t param_list; /* param_decl */
spl_ast_node_ref_t type_expr; /* ret type expr */
spl_ast_node_ref_vec_t block; /* 语句/尾表达式 */
spl_ast_node_ref_t type_expr; /* ret type expr */
spl_ast_node_ref_t block; /* block_expr */
} fn_decl;
struct {
spl_ast_node_ref_vec_t attr_list; /* attr_item */
spl_ast_node_ref_vec_t attr_list; /* attr_item */
const char *name;
spl_ast_node_ref_t type_expr;
} param_decl;
@@ -181,33 +181,34 @@ struct spl_ast_node {
spl_ast_node_ref_t expr;
} var_const_decl;
/* 语句数据:kind 决定解释哪个成员 */
/* statement */
struct {
spl_ast_node_ref_t expr;
spl_ast_node_ref_vec_t if_block; /* 语句 */
spl_ast_node_ref_vec_t else_block; /* 语句 */
spl_ast_node_ref_t if_block; /* block_expr */
spl_ast_node_ref_t else_block; /* block_expr */
} if_statement;
struct {
spl_ast_node_ref_t packed_expr;
spl_ast_node_ref_vec_t if_block; /* 语句 */
spl_ast_node_ref_vec_t else_block; /* 语句 */
spl_ast_node_ref_t if_block; /* block_expr */
spl_ast_node_ref_t else_block; /* block_expr */
} ifvar_statement;
struct {
spl_ast_node_ref_t expr;
spl_ast_node_ref_vec_t while_block; /* 语句 */
spl_ast_node_ref_t while_block; /* block_expr */
} while_statement;
struct {
spl_ast_node_ref_vec_t loop_block; /* 语句 */
spl_ast_node_ref_t loop_block; /* block_expr */
} loop_statement;
struct {
spl_ast_node_ref_vec_t expr_vec;
VEC(char *) ident_vec;
spl_ast_node_ref_vec_t block; /* 语句 */
spl_ast_node_ref_t block; /* block_expr */
} for_statement;
struct {
spl_ast_node_ref_t expr;
spl_ast_node_ref_vec_t paced_exprs; /* packed_expr */
spl_ast_node_ref_vec_t match_block; /* 语句 */
spl_ast_node_ref_t match_block; /* block_expr */
} match_statement;
struct {
spl_ast_node_ref_t expr;