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:
2026-06-05 14:01:47 +08:00
parent ab88ea2753
commit 5237398245
14 changed files with 267 additions and 21 deletions
+2
View File
@@ -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>";
}
}