diff --git a/CLAUDE.md b/CLAUDE.md index deb5368..3464ea2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,6 +4,66 @@ L Language v0.5 — 用 C17 实现的静态类型编译型编程语言,Rust 风格语法,LLVM 22.x 后端。经典 5 阶段流水线:词法 → 语法 → 语义 → IR → 可执行文件。145 单元测试 + 23 集成程序。 +## 语言设计哲学 + +L 借鉴 Rust 语法骨架(let/mut/struct/impl/match),但有自己的设计理念: + +1. **去糖优先** — 复杂语法在 parser 层去糖为简单原语,零 sema/codegen 改动。已验证: for/match/复合赋值。 +2. **博采众长** — 从多语言吸收优秀特性,而非单一模仿 Rust: + - **Elixir/F#** → 管道运算符 `|>` + - **Go** → defer、多返回值 + - **Swift** → guard、字符串插值、命名参数 + - **Kotlin** → 扩展函数、when 表达式 + - **Python** → 列表推导式、装饰器 + - **Zig** → comptime 常量折叠 +3. **渐进演进** — 先加语法糖(parser 层),后加强类型(sema/codegen 层) + +### 候选特性优先级 + +| 优先级 | 特性 | 来源 | 实现层 | 预计行数 | 独特性 | +|--------|------|------|--------|---------|--------| +| **P0** | 管道 `\|>` | Elixir/F# | parser | ~30 | 极高 | +| **P0** | guard 语句 | Swift | parser | ~15 | 高 | +| **P0** | 字符串插值 | Swift/Python | lexer+parser | ~60 | 高 | +| **P0** | 命名参数 | Swift/Kotlin | parser | ~50 | 高 | +| P1 | 列表推导式 | Python | parser | ~50 | 高 | +| P1 | 装饰器 `@` | Python | parser | ~40 | 高 | +| P1 | defer | Go/Zig | parser+codegen | ~60 | 中 | +| P1 | 扩展函数 | Kotlin | parser+sema | ~80 | 高 | +| P1 | when 表达式 | Kotlin | parser | ~30 | 中 | +| P2 | 多返回值 | Go | 全流水线 | ~200 | 中 | +| P2 | 空安全 `?.` / `??` | Kotlin | sema+codegen | ~150 | 中 | +| P2 | comptime 求值 | Zig | sema+codegen | ~200 | 极高 | +| P3 | 隐式接口 | Go | sema+codegen | ~300 | 中 | +| P3 | in/out 参数 | Carbon/Cpp2 | sema+codegen | ~150 | 高 | + +### P0 特性设计 + +**管道 `|>`** — 数据流从左到右: +```rust +let result = 10 |> double() |> add(5); +// 脱糖为: add(double(10), 5) +``` + +**guard** — 提前返回的语法糖: +```rust +guard x >= 0 else { return -1; } +// 脱糖为: if !(x >= 0) { return -1; } +``` + +**字符串插值**: +```rust +let msg = "Hello, {name}! Age: {age}"; +// 脱糖为: "Hello, " + name + "! Age: " + age +``` + +**命名参数** — 调用点可选标注: +```rust +fn drawRect(width: i64, height: i64) { ... } +drawRect(width: 10, height: 20); // 命名 +drawRect(10, 20); // 位置 +``` + ## 构建命令 ```bash