stage1 完成ast 定义sema
This commit is contained in:
@@ -69,20 +69,40 @@
|
||||
X(control.trap, V0, SPL_IR_CONTROL_TRAP) \
|
||||
X(dbg.breakpoint, V0, SPL_IR_DBG_BREAKPOINT) \
|
||||
X(dbg.declare, V0, SPL_IR_DBG_DECLARE)
|
||||
|
||||
|
||||
typedef enum {
|
||||
#ifdef X
|
||||
#undef X
|
||||
#endif
|
||||
#define X(a, b, c) c,
|
||||
SPL_IR_FN_TABLE
|
||||
#undef X
|
||||
} spl_ir_kind_t;
|
||||
/* clang-format on */
|
||||
|
||||
typedef struct {
|
||||
enum {
|
||||
|
||||
} kind;
|
||||
spl_ir_kind_t kind;
|
||||
} spl_ir_node_t;
|
||||
typedef VEC(spl_ir_node_t) spl_ir_node_vec_t;
|
||||
|
||||
typedef usize spl_ir_node_ref_t;
|
||||
typedef VEC(spl_ir_node_ref_t) spl_ir_node_ref_vec_t;
|
||||
|
||||
typedef struct {
|
||||
enum {
|
||||
SPL_IR_ATTR_NONE,
|
||||
SPL_IR_ATTR_LINK, /* 不实现 */
|
||||
SPL_IR_ATTR_ABI, /* 只有 C ABI 支持 */
|
||||
SPL_IR_ATTR_SYMBOL, /* 不实现 */
|
||||
SPL_IR_ATTR_NAKED, /* 不实现 */
|
||||
SPL_IR_ATTR_NOINLINE, /* 不实现 */
|
||||
SPL_IR_ATTR_ALWAYSINLINE, /* 不实现 */
|
||||
};
|
||||
} spl_ir_attr_t;
|
||||
typedef VEC(spl_ir_attr_t) spl_ir_attr_vec_t;
|
||||
typedef struct {
|
||||
const char *name;
|
||||
spl_ir_attr_t attr;
|
||||
spl_ir_node_vec_t nodes;
|
||||
spl_ir_node_ref_vec_t labels;
|
||||
} spl_ir_func_t;
|
||||
|
||||
Reference in New Issue
Block a user