docs: CHANGELOG v0.4/v0.5 + README/CLAUDE 版本刷新
- CHANGELOG: 新增 v0.4.0 (struct+RAII) 和 v0.5.0 (alias+enum+array+impl+match) - README: 版本0.5.0, 测试145, 完整功能列表+运算符表 - CLAUDE: v0.5 已知限制更新
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/version-0.1.0-blue" alt="version">
|
||||
<img src="https://img.shields.io/badge/version-0.5.0-blue" alt="version">
|
||||
<img src="https://img.shields.io/badge/C-17-555555" alt="C">
|
||||
<img src="https://img.shields.io/badge/LLVM-22.1.7-4B8BBE" alt="LLVM">
|
||||
<img src="https://img.shields.io/badge/GCC-15.x-darkgreen" alt="GCC">
|
||||
<img src="https://img.shields.io/badge/tests-70%20passed-brightgreen" alt="tests">
|
||||
<img src="https://img.shields.io/badge/tests-145%20passed-brightgreen" alt="tests">
|
||||
<img src="https://img.shields.io/badge/license-MIT-green" alt="license">
|
||||
</p>
|
||||
|
||||
@@ -73,31 +73,49 @@ graph TB
|
||||
| `codegen/` | `AstNode*` | `LLVMModuleRef` | `CgCtx` {module, builder, var_table} |
|
||||
| `driver/` | 命令行参数 | exit code | 流水线串联 + 错误报告 |
|
||||
|
||||
## 功能 (v0.1)
|
||||
## 功能 (v0.5)
|
||||
|
||||
### 类型系统
|
||||
|
||||
| 类型 | 关键字 | 说明 |
|
||||
|------|--------|------|
|
||||
| 类型 | 语法 | 示例 |
|
||||
|------|------|------|
|
||||
| 64 位有符号整数 | `i64` | `42`, `-7` |
|
||||
| 64 位浮点数 | `f64` | `3.14`, `-0.5` |
|
||||
| 64 位浮点数 | `f64` | `3.14` |
|
||||
| 布尔值 | `bool` | `true`, `false` |
|
||||
| 无返回值 | `void` | 函数不返回值时使用 |
|
||||
| 字符串 | `str` | `"hello"` |
|
||||
| 结构体 | `struct` | `Point { x: i64, y: i64 }` |
|
||||
| 枚举 | `enum` | `Color { Red, Green, Blue }` |
|
||||
| 数组 | `[T; N]` | `[i64; 10]` |
|
||||
| 无返回值 | `void` | 函数默认 |
|
||||
| 类型别名 | `type` | `type Meters = i64;` |
|
||||
|
||||
- `let` 不可变变量,支持可选类型标注和类型推断
|
||||
- 类型在编译时完全确定,无隐式转换(除 `i64` → `f64` 自动提升)
|
||||
- `let` 不可变 + `let mut` 可变,类型推断
|
||||
- `i64` → `f64` 自动提升
|
||||
|
||||
### 控制流
|
||||
|
||||
- `if` / `else` 条件分支(支持 `else if` 链)
|
||||
- `if` / `else` / `else if`
|
||||
- `while` 循环
|
||||
- `return` 提前返回(可选带表达式)
|
||||
- `for i in 0..10` (去糖为 while)
|
||||
- `match expr { pat => { ... } _ => { ... } }` (去糖为 if-else)
|
||||
- `return`
|
||||
|
||||
### 函数
|
||||
### 函数 & 方法
|
||||
|
||||
- 多参数,显式返回类型(可省略,默认 `void`)
|
||||
- 递归调用
|
||||
- 内建函数:`print_i64`, `print_f64`, `print_bool`
|
||||
- 多参数、递归、struct 参数/返回值
|
||||
- 返回类型校验
|
||||
- `impl StructName { fn method(self: Type) -> Ret { ... } }`
|
||||
- `instance.method(args)` 调用
|
||||
- 内建函数:`print_i64`, `print_f64`, `print_bool`, `print_str`
|
||||
|
||||
### 运算符
|
||||
|
||||
`+ - * / %` `== != < > <= >=` `&& || !` `+= -= *= /=` `str + str`
|
||||
|
||||
### 内存管理
|
||||
|
||||
- str 拼接 malloc → 作用域退出自动 free (RAII)
|
||||
- struct/array 栈上值类型
|
||||
|
||||
## 安装
|
||||
|
||||
@@ -136,10 +154,11 @@ mingw32-make -j4
|
||||
# 构建
|
||||
cd build && mingw32-make -j4
|
||||
|
||||
# 运行全部测试 (65 单元 + 5 集成)
|
||||
# 运行全部测试 (145 单元 + 23 集成)
|
||||
./l_lang_lexer_test.exe # 词法分析 (41 tests)
|
||||
./l_lang_test.exe # 语法分析 (15 tests)
|
||||
./l_lang_sema_test.exe # 语义分析 (9 tests)
|
||||
./l_lang_sema_test.exe # 语义分析 (65 tests)
|
||||
./l_lang_codegen_test.exe # 代码生成 (24 tests)
|
||||
|
||||
# 集成测试
|
||||
for f in ../test/programs/*.l; do
|
||||
|
||||
Reference in New Issue
Block a user