docs: CLAUDE.md 语言设计哲学 + 多语言特性分析

- 去糖优先: 复杂语法在parser层降级
- 博采众长: Elixir/Swift/Python/Go/Kotlin/Zig 候选特性
- P0-P3 优先级矩阵: 管道/guard/插值/命名参数优先
This commit is contained in:
2026-06-05 18:59:02 +08:00
parent 29648ef110
commit 6bd6eaae47
+60
View File
@@ -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