|
1 | 1 | # CodeNothing 更新日志 |
2 | 2 |
|
3 | | -## [v0.3.1] - 2025-07-22 |
| 3 | +## [v0.3.1] - 2025-07-23 |
| 4 | + |
| 5 | +### 🎉 重大更新:面向对象编程(OOP)支持 |
| 6 | + |
| 7 | +#### 新增功能 |
| 8 | +- **完整的类系统**:支持类定义、对象创建、字段访问 |
| 9 | + - 类定义语法:`class ClassName { ... };` |
| 10 | + - 字段定义:`public/private/protected fieldName : Type;` |
| 11 | + - 方法定义:`public fn methodName() : ReturnType { ... };` |
| 12 | + - 构造函数:`constructor(params) { ... };` |
| 13 | + |
| 14 | +- **对象操作**: |
| 15 | + - 对象创建:`new ClassName(args)` |
| 16 | + - 字段访问:`obj.field` |
| 17 | + - this关键字:`this.field = value` |
| 18 | + |
| 19 | +- **访问控制**: |
| 20 | + - `public` - 公共访问 |
| 21 | + - `private` - 私有访问 |
| 22 | + - `protected` - 保护访问 |
| 23 | + |
| 24 | +- **类型系统扩展**: |
| 25 | + - 新增 `Type::Class(String)` 类型 |
| 26 | + - 支持自定义类类型声明 |
| 27 | + - 完整的类型推断和检查 |
| 28 | + |
| 29 | +#### 技术实现 |
| 30 | +- **AST扩展**:新增 `Class`, `Field`, `Method`, `Constructor`, `Visibility` 等结构体 |
| 31 | +- **解析器增强**:新增 `class_parser.rs` 模块,支持完整的OOP语法解析 |
| 32 | +- **解释器核心**:新增 `Value::Object(ObjectInstance)` 类型,支持对象实例化 |
| 33 | +- **表达式系统**:新增 `ObjectCreation`, `FieldAccess`, `This` 表达式类型 |
| 34 | +- **语句系统**:新增 `ClassDeclaration`, `FieldAssignment` 语句类型 |
| 35 | + |
| 36 | +#### 测试文件 |
| 37 | +- `test_oop_basic.cn` - 基础OOP功能测试 |
| 38 | +- `test_oop_advanced.cn` - 高级OOP特性测试 |
| 39 | +- `test_oop_complex.cn` - 复杂多类交互测试 |
| 40 | + |
| 41 | +#### 当前状态 |
| 42 | +- ✅ 类定义和解析 - 完全支持 |
| 43 | +- ✅ 对象创建 - 完全支持 |
| 44 | +- ✅ 字段访问 - 完全支持 |
| 45 | +- ⏳ 方法调用 - 待实现 |
| 46 | +- ⏳ 构造函数执行 - 待实现 |
| 47 | +- ⏳ 继承系统 - 待实现 |
| 48 | + |
| 49 | +这是CodeNothing语言发展史上的一个重要里程碑,标志着从过程式编程向面向对象编程的重大跃进! |
| 50 | + |
| 51 | +### 修复 |
| 52 | +- 修复:重写了词法分析器,以正确处理浮点数、链式调用(`.`)和多字符运算符。 |
| 53 | +- 修复:现在可以正确解析 `variable.method()` 形式的链式调用,解决了“期望 ';', 但得到了 '.identifier'”的错误。 |
| 54 | +- 修复:现在可以正确解析浮点数字面量(如 `0.2`),解决了“期望 ')', 但得到了 '.'”的错误。 |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## [v0.3.0] - 2025-07-22 |
4 | 59 | - 修复:重写了词法分析器,以正确处理浮点数、链式调用(`.`)和多字符运算符。 |
5 | 60 | - 修复:现在可以正确解析 `variable.method()` 形式的链式调用,解决了“期望 ';', 但得到了 '.identifier'”的错误。 |
6 | 61 | - 修复:现在可以正确解析浮点数字面量(如 `0.2`),解决了“期望 ')', 但得到了 '.'”的错误。 |
|
0 commit comments