stage1 实现部分ast2ir内容并重构stage0 引入并重构ir2vm 构建系统修改部分
This commit is contained in:
1 parent
3d57260f3f
commit
34df303b56
17 files changed
+636
-1800
No files matched your search
+15
-14
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user