feat: 数组+索引 [T;N], arr[i] (P1 #6)

- lexer: TOK_LBRACKET, TOK_RBRACKET
- type: TYPE_ARRAY + TypeInfo扩展(element_type/array_size)
- ast: AST_INDEX_EXPR, AST_ARRAY_ASSIGN_STMT
- parser: parse_type_expr()支持[T;N], Pratt加[索引], 数组元素赋值
- sema: 数组类型检查, 索引必须i64, 元素赋值类型匹配
- codegen: type_info_to_llvm(TYPE_ARRAY), GEP+load/store
- 新增集成测试: 18_array.l

测试: 136 通过 (41+15+59+21)
This commit is contained in:
2026-06-05 14:19:01 +08:00
parent 5237398245
commit 2923e7574d
14 changed files with 512 additions and 58 deletions
+2
View File
@@ -14,6 +14,7 @@ typedef enum {
TYPE_VOID,
TYPE_STRUCT, // 结构体类型
TYPE_ENUM, // 枚举类型
TYPE_ARRAY, // 固定大小数组类型
TYPE_UNKNOWN, // 尚未推断
TYPE_ERROR, // 类型错误
} TypeKind;
@@ -27,6 +28,7 @@ static inline const char* type_name(TypeKind kind) {
case TYPE_VOID: return "void";
case TYPE_STRUCT: return "struct";
case TYPE_ENUM: return "enum";
case TYPE_ARRAY: return "array";
default: return "<unknown>";
}
}