From f3cca30ccae88568fa8e969f999f226cf17c60cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=88=AA=E5=AE=87?= <3364451258@qq.com> Date: Sat, 6 Jun 2026 20:16:51 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20CLAUDE.md=20=E6=95=B0=E6=8D=AE=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=20=E2=80=94=20197=E5=8D=95=E5=85=83+36=E9=9B=86?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E6=9E=B6=E6=9E=84=E5=9B=BE=E5=8F=8D=E6=98=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- CLAUDE.md | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 2acb9c0..9269e05 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,7 +2,7 @@ ## 项目概述 -L Language v0.5 — 用 C17 实现的静态类型编译型编程语言,Rust 风格语法,LLVM 22.x 后端。经典 5 阶段流水线:词法 → 语法 → 语义 → IR → 可执行文件。145 单元测试 + 23 集成程序。 +L Language v0.6 — 用 C17 实现的静态类型编译型编程语言,Rust 风格语法,LLVM 22.x 后端。经典 5 阶段流水线:词法 → 语法 → 语义 → IR → 可执行文件。197 单元测试 + 36 集成程序。 ## 语言设计哲学 @@ -134,14 +134,20 @@ L Language/ │ │ ├── token.h/c Token {kind, start, length, line, col} │ │ └── lexer.h/c 手写状态机,72 种 Token 类型 │ ├── parser/ -│ │ └── parser.h/c Pratt 表达式 (9 级优先级) + 递归下降语句 +│ │ ├── parse_internal.h 共享 Parser struct + 内联辅助 +│ │ ├── parser.h/c 语句/声明/程序入口 (662 行) +│ │ └── expr.c 表达式/类型解析 (498 行, Pratt 主循环) │ ├── ast/ │ │ └── ast.h/c 27 种 AST 节点 + 工厂函数 │ ├── sema/ +│ │ ├── sema_internal.h 共享声明 + 向前声明 │ │ ├── symbol.h/c 作用域链 (Scope* parent 链表) -│ │ └── sema.h/c 类型推断 + 类型检查 + 5 个内建函数注册 +│ │ ├── sema.h/c 语义分析入口 + analyze_node (499 行) +│ │ └── typeck.c 表达式类型检查 + 泛型单态化 (629 行) │ ├── codegen/ -│ │ └── codegen.h/c AST → LLVM-C API → LLVMModuleRef +│ │ ├── codegen_internal.h 共享 CgCtx + 表操作声明 +│ │ ├── codegen.h/c 语句生成 + 模块入口 (453 行) +│ │ └── cg_expr.c LLVM 表达式生成 + 类型映射 (440 行) │ ├── driver/ │ │ ├── main.c 入口 + 命令行解析 + 流水线串联 │ │ └── error.h/c ErrorInfo / ErrorList 错误报告 @@ -149,10 +155,11 @@ L Language/ │ └── arena.h/c Bump allocator (8MB, 8 字节对齐) ├── test/ │ ├── test_utils.h 断言宏 (ASSERT / TEST_RUN / test_summary) -│ ├── test_lexer.c 词法测试 (41 tests) -│ ├── test_parser.c 语法测试 (15 tests) -│ ├── test_sema.c 语义测试 (74 tests) -│ └── programs/ .l 集成测试 (34 个程序) +│ ├── test_lexer.c 词法测试 (41 tests, 3 functions) +│ ├── test_parser.c 语法测试 (54 tests, 20 functions) +│ ├── test_sema.c 语义测试 (74 tests, 24 functions) +│ ├── test_codegen.c 代码生成测试 (28 tests, 10 functions) +│ └── programs/ .l 集成测试 (36 个程序) ├── docs/ │ ├── PRD.md 产品需求文档 │ └── superpowers/plans/ 实现计划 @@ -245,9 +252,10 @@ LLVMModuleRef codegen_module(AstNode* ast, const char* module_name, ```bash # 单元测试 (每个 test_*.c 独立编译运行,各有自己的 main) -./l_lang_lexer_test.exe # 41 个断言 -./l_lang_test.exe # 15 个断言 -./l_lang_sema_test.exe # 9 个断言 +./l_lang_lexer_test.exe # 41 tests (3 functions) +./l_lang_test.exe # 54 tests (20 functions) +./l_lang_sema_test.exe # 74 tests (24 functions) +./l_lang_codegen_test.exe # 28 tests (10 functions) # 集成测试 (编译 .l → 运行 .exe → 检查输出) for f in ../test/programs/*.l; do