feat: 枚举 enum (P1 #7)
- lexer: TOK_ENUM, TOK_COLON_COLON
- ast: AST_ENUM_DECL, AST_ENUM_VARIANT + AST_PROGRAM enums数组
- parser: enum Name { A, B } + Enum::Variant语法
- sema: SYM_ENUM, 变体验证, enum→i64类型兼容
- codegen: TYPE_ENUM→i64, 变体→ConstInt(索引值)
- 新增集成测试: 17_enum.l
测试: 121 通过 (41+15+47+18)
This commit is contained in:
@@ -13,6 +13,7 @@ typedef enum {
|
||||
TYPE_STR,
|
||||
TYPE_VOID,
|
||||
TYPE_STRUCT, // 结构体类型
|
||||
TYPE_ENUM, // 枚举类型
|
||||
TYPE_UNKNOWN, // 尚未推断
|
||||
TYPE_ERROR, // 类型错误
|
||||
} TypeKind;
|
||||
@@ -25,6 +26,7 @@ static inline const char* type_name(TypeKind kind) {
|
||||
case TYPE_STR: return "str";
|
||||
case TYPE_VOID: return "void";
|
||||
case TYPE_STRUCT: return "struct";
|
||||
case TYPE_ENUM: return "enum";
|
||||
default: return "<unknown>";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user