d5a94d45cb
- lexer: 4 个复合赋值 Token (解析时优先于单字符) - parser: desugar x+=expr → x=x+expr(零 sema/codegen 改动) - 新增集成测试 09_compound_assign.l (15 12 24 6) - CHANGELOG 新增 v0.2.0 条目
1.8 KiB
1.8 KiB
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
- 词法分析器:手写状态机,40 种 Token 类型,支持
//和/* */注释 - 语法分析器:Pratt 表达式解析(9 级优先级)+ 递归下降语句/函数解析
- AST:14 种节点类型,工厂函数模式创建
- 语义分析器:作用域链符号表 + 类型推断 + 类型检查
- LLVM IR 代码生成:全 AST 节点覆盖,内建
print_i64/print_f64/print_bool - 驱动程序:命令行参数解析 + 编译流水线串联 +
--emit-ir调试模式 - Arena bump allocator (8MB)
- 错误报告:ANSI 红色高亮,文件名:行号:列号 格式
- 类型系统:
i64/f64/bool/void,let不可变变量,类型推断 - 控制流:
if/else,while循环,return语句 - 函数:多参数、递归、可选返回类型标注
- 65 个单元测试 (词法 41 + 语法 15 + 语义 9)
- 5 个集成测试 (算术、分支、递归、斐波那契、浮点)
- CMake 构建系统,静态库 + 可执行文件 + 测试分离