stage1 优化重构代码
This commit is contained in:
@@ -245,6 +245,16 @@ typedef struct {
|
||||
} spl_expr_result_t;
|
||||
|
||||
spl_expr_result_t spl_parse_expr(spl_comp_t *ctx, int min_prec);
|
||||
spl_expr_result_t spl_parse_struct_literal(spl_comp_t *ctx, spl_type_info_t *type);
|
||||
|
||||
/* Match arm pattern comparison — emit code to compare saved match value
|
||||
* against a parsed pattern. Comparison logic belongs in expr layer
|
||||
* so that match arms behave as "enhanced if-conditions".
|
||||
* For enum: parses .VariantName, emits tag comparison, returns variant.
|
||||
* For value: parses expression, emits equality comparison. */
|
||||
spl_enum_variant_t *spl_emit_match_enum_cmp(spl_comp_t *ctx,
|
||||
spl_type_info_t *enum_type, int val_offset);
|
||||
void spl_emit_match_value_cmp(spl_comp_t *ctx, int val_offset);
|
||||
|
||||
/* ============================================================
|
||||
* Statement functions (spl_stmt.c)
|
||||
@@ -252,6 +262,7 @@ spl_expr_result_t spl_parse_expr(spl_comp_t *ctx, int min_prec);
|
||||
|
||||
void spl_parse_stmt(spl_comp_t *ctx);
|
||||
void spl_parse_block(spl_comp_t *ctx);
|
||||
spl_expr_result_t spl_parse_block_expr(spl_comp_t *ctx);
|
||||
|
||||
/* ============================================================
|
||||
* Codegen helpers (spl_comp.c)
|
||||
@@ -268,6 +279,8 @@ void spl_patch_to_here(spl_comp_t *ctx, spl_val_t addr);
|
||||
* Stack: [..., temp_addr] → [...]
|
||||
* Copies nslots slots (each sizeof(spl_val_t) bytes) from temp offset to dest_offset. */
|
||||
void spl_emit_copy_slots(spl_comp_t *ctx, int dest_offset, usize nslots);
|
||||
void spl_emit_ret(spl_comp_t *ctx, spl_type_info_t *ret_type);
|
||||
void spl_emit_store_init(spl_comp_t *ctx, int var_offset, spl_type_info_t *var_type);
|
||||
|
||||
/* Variable management */
|
||||
int spl_declare_var(spl_comp_t *ctx, const char *name, spl_type_info_t *type, int is_const);
|
||||
|
||||
Reference in New Issue
Block a user