Serendipity
06c8773fac
feat: 装饰器 #[attr] 语法 — parser 解析并跳过
...
Token(74): +TOK_HASH, lexer 识别 '#', parser 在 fn/struct/enum 前解析 #[ident]
语法就位, 后续可扩展存储属性到 AST 节点
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-07 14:00:42 +08:00
Serendipity
443b22bdf1
feat: 列表推导式 [for x in arr: expr] — parser+sema+codegen
...
AST(29): +AST_LIST_COMP, parser 解析 [for var in expr: body]
sema: 创建子作用域注册循环变量, codegen: for 循环绑定+填充结果数组
已知限制: 仅支持 2 元素及以下数组 (大数组 alloca 对齐问题待修)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-07 13:58:54 +08:00
Serendipity
0088347576
feat: defer 延迟执行 — defer { stmts; } 在 return 前按 LIFO 执行
...
Token(73): +TOK_DEFER, AST(28): +AST_DEFER_STMT, 新增 38_defer.l
parser: defer { ... } 块 + defer expr; 表达式两种形式
codegen: defer 栈压入 block, emit_deferred() 在 return 前 LIFO 发射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-07 13:51:10 +08:00
Serendipity
e60021b684
docs: language-reference.md v0.7 全面重写
...
新增章节: 泛型、Trait、模块系统(mod+use+pub)、ADT枚举、if let、if-expr
更新: 类型表(14种)、测试数据(197+37)、版本号、快速参考卡片
2026-06-07 13:38:47 +08:00
Serendipity
1aafde0fd9
chore: 版本 v0.7.0
2026-06-07 13:08:21 +08:00
Serendipity
2247fa39f4
docs: CLAUDE.md v0.7 全面更新 — 架构/类型/限制/测试同步
2026-06-07 13:04:59 +08:00
Serendipity
c285a145c8
refactor: typeck.c 652→559 — 泛型单态化提取为 mono.c (97行)
2026-06-07 13:00:10 +08:00
Serendipity
82b0570869
refactor: codegen_expr switch→Visitor dispatch (12 handler)
...
cg_expr.c 440行: 12 表达式handler提取为独立函数 + AstDispatch 表
codegen_expr 从巨型 switch 改为 ast_visit() 查表调用
新增表达式节点: codegen_expr_init() 加一行即可
修复: to_llvm_type/type_info_to_llvm TYPE_ENUM/STR 完整映射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-07 12:59:18 +08:00
Serendipity
bcf6508c4c
feat: use 语句 — use module::item 导入模块符号
...
修复审查 #2 : use 语句从 skippable TODO 实现为完整符号导入
use math_mod::add → 加载模块, 匹配 pub 函数/结构体/枚举, 零前缀导入
新增 37_use.l 集成测试
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-07 12:53:18 +08:00
Serendipity
a070883ae4
fix: sprintf→snprintf + strcpy→memcpy 缓冲区安全加固
2026-06-07 12:52:09 +08:00
Serendipity
376738d7fc
docs: 全面架构与代码审查报告 (2026-06-07)
2026-06-07 12:40:43 +08:00
Serendipity
35e2691cb7
chore: 删除自动化分析报告目录
2026-06-06 21:28:48 +08:00
Serendipity
b34ad17aad
refactor: AST Visitor dispatch — sema analyze_expr switch→vtable
...
新增 src/ast/visit.h/c: AstDispatch 函数指针表 + ast_visit() 统一入口
analyze_expr 的 switch 替换为 dispatch 表, 10 个 handler 通过 SEMA_HANDLER 宏注册
新增 AST 节点: 在 analyze_expr_init() 加一行即可, 编译器会检查函数签名
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 20:36:13 +08:00
Serendipity
3733b41453
refactor: TypeTable 数据驱动 — promote/convert/numeric/comparable 统一查表
...
新增 src/sema/type_table.h/c: TypeDesc{promote_rank, bit_width, is_signed, is_numeric}
promote/can_implicit_convert/is_numeric/is_comparable 从硬编码 switch 改为查表
新增类型只需在 TABLE[] 加一行, 从 7+ 文件改为 3-4 文件 (token + table + codegen)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 20:31:32 +08:00
Serendipity
66b170a27f
docs: CLAUDE.md 反映 desugar pass + 文件行数更新
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 20:20:50 +08:00
Serendipity
eaae0b1c62
refactor: 独立 desugar pass — match/guard/for/if-let/复合赋值去糖提取
...
5 种去糖逻辑从 parser.c/expr.c 内联代码提取到 desugar.c:
desugar_match() — match → let + if-else 链
desugar_guard() — guard → if !(cond)
desugar_for() — for-in-to → var + while
desugar_if_let() — if let → let + if
desugar_compound_assign() — +=/-= → assign + binary
parser.c 662→564 行, 新增 desugar.c 109 行, 管道+插值保留在 expr.c
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 20:20:33 +08:00
Serendipity
f3cca30cca
docs: CLAUDE.md 数据同步 — 197单元+36集成,架构图反映文件拆分
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 20:16:51 +08:00
Serendipity
6d1db585c4
refactor: sema.c + codegen.c 拆分,全部源文件 <800 行
...
sema.c 1129行 → sema.c 499行 + typeck.c 629行 + sema_internal.h 51行
- typeck.c: 表达式类型检查 (10个analyze_*函数) + 泛型单态化 + 类型关系
- sema.c: analyze_node + sema_analyze
codegen.c 947行 → codegen.c 453行 + cg_expr.c 440行 + codegen_internal.h 83行
- cg_expr.c: LLVM表达式生成 + 类型映射 (to_llvm_type/coerce_int/type_info_to_llvm)
- codegen.c: 语句生成 + 模块入口 + 符号表 + 内存清理
全部核心源文件 <800 行限制: parser(662+498), sema(499+629), codegen(453+440)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 19:26:54 +08:00
Serendipity
90d081c3fd
fix: P0审查修复 P2补强 — parser.c 拆分 + 测试扩充
...
P0-③: parser.c 1211行 → parser.c 662行 + expr.c 498行 + parse_internal.h 71行
- expr.c: 表达式解析 (Pratt主循环/字面量/标识符/类型/运算符)
- parser.c: 语句/声明/程序入口 (block/match/let/if/while/for/guard/fn/parse)
- parse_internal.h: 共享 Parser struct + 内联辅助 + 向前声明
P2-①: parser 测试 5函数→20函数, 15断言→54断言
- 新增: struct声明、字面量类型、优先级链、guard去糖、命名参数
- 新增: 字段访问、方法调用、match、enum声明、for去糖、管道
- 新增: 类型别名、trait声明、数组类型、if表达式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 18:57:07 +08:00
Serendipity
466be76fd8
fix: P1审查修复 — error.c arena化 + Self类型解析 + trait查找加固 + 缓冲区安全
...
P1-①: error_init/add 从 malloc/realloc/strdup 改为 arena_alloc/arena_strdup
P1-②: impl 方法中 Self 类型在 sema 解析为实际结构体名
P1-③: trait 方法 fallback 增加前缀校验(strncmp),method_name 统一更新
P1-④: codegen args[16] 增加溢出检查,移除 parser 未使用的 mods/uses 数组
新增: 36_self_type.l 集成测试(Self 类型 + trait 方法)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-06 17:09:28 +08:00
Serendipity
17c19fd9b9
fix: P0审查修复 — CLAUDE.md数据更新 + load_module malloc→arena
2026-06-06 16:54:23 +08:00
Serendipity
b3b3d285f9
feat: trait 接口系统 — trait Show { fn method } + extend Trait Struct { }
2026-06-06 16:41:21 +08:00
Serendipity
9169796b77
feat: 泛型单态化完成 — fn id<T>(x: T) -> T 全流水线通过
2026-06-06 16:25:18 +08:00
Serendipity
350eeef3c5
feat: 泛型基础设施 — <T>解析 + 类型推断 (单态化 codegen 待补)
2026-06-06 16:17:15 +08:00
Serendipity
fa734b8a23
feat: 模块系统 mod + pub — 多文件编译支持
2026-06-06 16:09:30 +08:00
Serendipity
e02cc7b1d6
feat: if let 语句 — if let Option::Some = expr { ... }
2026-06-06 15:20:34 +08:00
Serendipity
0e1f8c5795
feat: 枚举关联数据 ADT — enum Option { Some(i64), None }
2026-06-06 14:21:43 +08:00
Serendipity
0ec3c3d65f
feat: 表达式作为值 — if/else 和 block 可产生值
2026-06-06 13:52:36 +08:00
Serendipity
380b52930a
docs: Token 计数修正 50→67 (AGENTS.md + CLAUDE.md)
2026-06-06 13:33:39 +08:00
Serendipity
031dedfb8e
refactor: 拆分 sema analyze_expr 为 9 个辅助函数 + 调度器
2026-06-06 01:36:37 +08:00
Serendipity
de91886712
fix: CreateProcess 替代 system() 调 ld.lld,消除 shell 转义问题
v0.6.0
2026-06-05 22:07:53 +08:00
Serendipity
39d8bad022
feat: 自包含安装包 — ld.lld + MinGW 库 (39MB, 零依赖)
2026-06-05 22:01:01 +08:00
Serendipity
1e161ecfff
feat: NSIS 安装包脚本 (62MB, 含 LLVM+clang+lld)
2026-06-05 21:51:22 +08:00
Serendipity
143174ee4f
refactor: 链接器从 gcc 改为 clang + lld(优先 clang→fallback gcc)
2026-06-05 21:43:48 +08:00
Serendipity
2baf762d82
docs: README/CHANGELOG/语言参考更新至 v0.6
2026-06-05 21:02:05 +08:00
Serendipity
459d1e1e10
feat: 管道 |> + 字符串插值 \(expr) — P0 四特性收官
2026-06-05 20:59:00 +08:00
Serendipity
6b6925b2b8
feat: 命名参数 draw_rect(width: 10, height: 20)
2026-06-05 20:54:58 +08:00
Serendipity
c6e492662e
feat: guard 语句 guard x >= 0 else { return -1; }
2026-06-05 20:49:03 +08:00
Serendipity
18172ca724
feat: 新增 i32 / u64 / char 类型 + 字符字面量 "'a'"
2026-06-05 20:47:44 +08:00
Serendipity
6fc599e6c2
feat: impl 关键字改为 extend
2026-06-05 19:50:40 +08:00
Serendipity
175f8a6658
feat: 数组类型语法 [T; N] 改为 T[N] 后置语法
2026-06-05 19:48:56 +08:00
Serendipity
ab4cc9a28b
feat: let mut 改为 var 关键字声明可变变量
2026-06-05 19:47:00 +08:00
Serendipity
a28d33854c
feat: for..in 范围语法 .. 改为 to 关键字
2026-06-05 19:44:26 +08:00
Serendipity
9a256d9be1
docs: 测试计数更新 145→158 单元 + 23→24 集成
2026-06-05 19:39:12 +08:00
Serendipity
a45f7d8e2f
feat: 数组支持 struct 元素类型 [Point; N]
2026-06-05 19:38:48 +08:00
Serendipity
beac40fd74
test: match sema + codegen 单元测试,总断言 145→158
2026-06-05 19:36:26 +08:00
Serendipity
a0a78de26e
docs: 补充数组初始化 = arr 语法说明
2026-06-05 19:31:46 +08:00
Serendipity
095604dc9f
docs: CLAUDE.md 语言设计哲学增加L化适配原则
2026-06-05 19:07:54 +08:00
Serendipity
6bd6eaae47
docs: CLAUDE.md 语言设计哲学 + 多语言特性分析
...
- 去糖优先: 复杂语法在parser层降级
- 博采众长: Elixir/Swift/Python/Go/Kotlin/Zig 候选特性
- P0-P3 优先级矩阵: 管道/guard/插值/命名参数优先
2026-06-05 18:59:02 +08:00
Serendipity
29648ef110
docs: L Language 语言参考手册 (language-reference.md)
...
- 14 章完整教程: 类型/变量/运算符/控制流/函数/struct/enum/数组/impl/match
- 3 个完整示例: 斐波那契/学生成绩/数组操作
- 快速参考卡片
- README 添加手册链接
2026-06-05 18:45:58 +08:00