feat: 复合赋值 += -= *= /= + CHANGELOG 更新

- lexer: 4 个复合赋值 Token (解析时优先于单字符)
- parser: desugar x+=expr → x=x+expr(零 sema/codegen 改动)
- 新增集成测试 09_compound_assign.l (15 12 24 6)
- CHANGELOG 新增 v0.2.0 条目
This commit is contained in:
2026-06-05 02:40:05 +08:00
parent 9e41b09318
commit d5a94d45cb
6 changed files with 71 additions and 2 deletions
+20
View File
@@ -1,5 +1,25 @@
# Changelog
## 0.2.0 (2026-06-05)
### Added
- `let mut` 可变变量 + 赋值语句 (`x = expr;`)
- 可变性检查:对不可变变量赋值报编译错误
- 字符串类型 `str` + 双引号字面量 (`"Hello"`)
- 字符串拼接 `str + str` (malloc + strlen + memcpy 运行时实现)
- `print_str` 内置函数 (委托 printf)
- 复合赋值运算符:`+=` `-=` `*=` `/=`
- 集成测试:`06_mut_while.l` (while 循环修改变量)、`07_hello_str.l` (字符串输出)、`08_str_concat.l` (字符串拼接)
### Changed
- codegen malloc → arena 统一分配
- LLVM 目标初始化解耦为 `target.h/c` 独立模块
- 新增 `.codegraphignore`
### Fixed
- codegen.c 内存管理不一致 (malloc 混用 arena)
- str+str 运行时拼接返回左操作数的 bug
## 0.1.0 (2026-06-05)
### Added