feat: 结构体 struct — 最后一项 P0 功能

- lexer: TOK_STRUCT, TOK_DOT 关键字和运算符
- ast: AST_STRUCT_DECL/STRUCT_INIT/FIELD_ACCESS 3 种新节点
- parser: struct 声明 + .field 访问 + Name{field:val} 初始化
- sema: struct 类型符号表,字段类型解析,初始化字段检查
- codegen: LLVMStructType + extractvalue/insertvalue 字段操作
- 新增集成测试: 12_struct.l, 13_struct_nested.l
- 基于 Codex 分析报告 P0 #4

所有 P0 功能已全部完成。
This commit is contained in:
2026-06-05 12:21:22 +08:00
parent 620cec4d57
commit b390d390f3
17 changed files with 1521 additions and 47 deletions
+5 -3
View File
@@ -12,8 +12,9 @@ typedef enum {
TYPE_BOOL,
TYPE_STR,
TYPE_VOID,
TYPE_STRUCT, // 结构体类型
TYPE_UNKNOWN, // 尚未推断
TYPE_ERROR, // 类型错误
TYPE_ERROR, // 类型错误
} TypeKind;
static inline const char* type_name(TypeKind kind) {
@@ -22,8 +23,9 @@ static inline const char* type_name(TypeKind kind) {
case TYPE_F64: return "f64";
case TYPE_BOOL: return "bool";
case TYPE_STR: return "str";
case TYPE_VOID: return "void";
default: return "<unknown>";
case TYPE_VOID: return "void";
case TYPE_STRUCT: return "struct";
default: return "<unknown>";
}
}