2023/08/25 工作日志

1. 提交了一些漏洞修复

  1. 修改了AnonClass节点(这些漏洞比较难解释,你可以通过对比源码来了解我更改了哪些地方)
  2. 修复了部分依赖库(ArrayList.hpp和Stack.hpp)
  3. 修复了AST代码,在原本的AST代码当中,将子节点的存储方式从值存储变成指针存储(详见src/ast下的源码)
  4. 修复了文档的一些病句(详细请对比20230812.md)

2. 更新了依赖库

我添加了NumberMap,它和StringMap相似,是一个以整数为键的Map。
如果你要了解NumberMap的用法或实现,请阅读NumberMap.hpp。
当然,目前的NumberMap仍然是临时的,我会在后续做出改动。

此外,我也稍加改动了其他依赖库,让它在后续更容易改动

3. 数据类型定义的代码已经全部完工

代码位于src/data_type。
如果你想要直接引用所有数据类型定义,请直接引用DataType.hpp。
注意,所有的数据类型定义都存放在stamon::datatype这个命名空间里,所以如果你要使用数据类型定义,可以写以下代码

#include"DataType.hpp"   //引用DataType.hpp
using namespace stamon::datatype;    //引用数据类型定义的命名空间

4. 数据类型定义的设计

数据类型定义的设计比Ast节点的设计要简单得多(详见20230812.md):
有一个基类DataType,所有的具体数据类型都需要继承DataType。

接下来我们来简单介绍一下目录结构。

data_type
|-DataType.hpp  //在这里存放基类的定义
|-NullType.hpp  //空值数据类型定义
|-NumberType.hpp    //数字数据类型定义,具体定义了整数、单精度浮点数、双精度浮点数
|-StringType.hpp    //字符串数据类型定义
|-SequenceType.cpp  //数列数据类型定义
|-MethodType.cpp    //方法数据类型定义
|-ClassType.cpp     //类数据类型定义
|-ObjectType.cpp    //类对象数据类型定义


如果你想要阅读数据类型定义的源码,建议按照以下顺序阅读

  1. DataType.hpp
  2. NullType.hpp
  3. NumberType.hpp
  4. StringType.hpp
  5. SequenceType.cpp
  6. MethodType.cpp
  7. ClassType.cpp
  8. ObjectType.cpp

5. 接下来要做的事

  1. 完成STVM的内部数据结构
  2. 对代码进行测试

6. 后记

本次提交的内容其实不算复杂,但是因为数据类型定义的设计会影响到后面的很多架构,所以我需要谨慎思考。

本次提交还着重更改了依赖库,事实上,依赖库的设计也是让我比较头疼的。

本次提交的数据类型定义可能注释并不全面,我将会在后续继续提交注释。

这种简单的代码还需要写注释

值得注意的是,从项目第一次提交到现在,我没有对代码进行过一次调试,接下来我会对我写过的代码进行简单的调试。