|
@@ -5,6 +5,7 @@
|
|
|
.程序集 抽象语法树节点, , 公开
|
|
|
.程序集变量 当前节点指针, 长整数型
|
|
|
.程序集变量 已初始化, 逻辑型
|
|
|
+.程序集变量 失败, 逻辑型
|
|
|
|
|
|
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
|
|
|
已初始化 = 假
|
|
@@ -26,18 +27,24 @@
|
|
|
|
|
|
.子程序 初始化内存, , 公开
|
|
|
.参数 函数名, 文本型, 可空
|
|
|
+ .参数 父节点地址, 长整数型, 可空
|
|
|
|
|
|
当前节点指针 = 到长整数 (申请内存 (#语法树节点_长度, 真))
|
|
|
.如果真 (是否为空 (函数名) = 假)
|
|
|
设置函数名 (函数名)
|
|
|
.如果真结束
|
|
|
-
|
|
|
+ .如果真 (是否为空 (父节点地址) = 假)
|
|
|
+ 设置父节点指针地址 (父节点地址)
|
|
|
+ .如果真结束
|
|
|
+ 调试输出 (“设置参数指针地址”)
|
|
|
设置参数指针地址 (申请内存 (#语法树节点_参数容量初始值 × #指针大小, 真))
|
|
|
设置参数容量 (#语法树节点_参数容量初始值)
|
|
|
|
|
|
已初始化 = 真
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+.子程序 初始化否, 逻辑型
|
|
|
+ 返回 (已初始化)
|
|
|
|
|
|
.子程序 释放结构内存, , 公开
|
|
|
.如果真 (获取参数容量 () ≠ 0)
|
|
@@ -45,6 +52,37 @@
|
|
|
.如果真结束
|
|
|
释放内存 (当前节点指针)
|
|
|
已初始化 = 假
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+.子程序 生成子节点, 抽象语法树节点, 公开
|
|
|
+ .参数 子节点函数名, 文本型, 可空
|
|
|
+ .局部变量 ast, 抽象语法树节点
|
|
|
+
|
|
|
+ .如果 (是否为空 (子节点函数名))
|
|
|
+ ast.设置函数名 (子节点函数名)
|
|
|
+ .否则
|
|
|
+ ast.设置函数名 (格式化文本 (“%s 的子节点”, 获取函数名 ()))
|
|
|
+ .如果结束
|
|
|
+ ast.设置父节点指针地址 (获取当前节点指针 ())
|
|
|
+ 返回 (ast)
|
|
|
+
|
|
|
+.子程序 生成匹配失败节点, 抽象语法树节点, 公开
|
|
|
+ .局部变量 ast, 抽象语法树节点
|
|
|
+
|
|
|
+ ast = 生成子节点 (格式化文本 (“%s 的失败子节点”, 获取函数名 ()))
|
|
|
+ ast._设置失败 ()
|
|
|
+ 返回 (ast)
|
|
|
+
|
|
|
+.子程序 失败, 逻辑型, 公开
|
|
|
+ 返回 (失败)
|
|
|
+
|
|
|
+.子程序 成功, 逻辑型, 公开
|
|
|
+ 返回 (失败 = 假)
|
|
|
+
|
|
|
+.子程序 _设置失败, , 公开
|
|
|
+ 失败 = 真
|
|
|
+ 已初始化 = 假
|
|
|
|
|
|
.子程序 从内存初始化, 抽象语法树节点, 公开
|
|
|
.参数 地址, 长整数型
|
|
@@ -135,9 +173,10 @@
|
|
|
|
|
|
写到内存 (旧参数数组打包, 新参数指针地址, 获取参数数量 () × #指针大小)
|
|
|
释放内存 (旧参数指针地址)
|
|
|
+
|
|
|
设置参数指针地址 (新参数指针地址)
|
|
|
- 设置参数容量 (新长度)
|
|
|
|
|
|
+ 设置参数容量 (新长度)
|
|
|
返回 (新参数指针地址)
|
|
|
|
|
|
.子程序 添加参数节点, , 公开
|
|
@@ -149,10 +188,52 @@
|
|
|
.如果真 (当前参数数量 ≥ 获取参数容量 ())
|
|
|
扩容参数指针 ()
|
|
|
.如果真结束
|
|
|
-
|
|
|
+ 节点.设置父节点指针地址 (获取当前节点指针 ())
|
|
|
写到内存 (节点.获取当前节点指针 (), 获取参数指针地址 () + 当前参数数量 × #指针大小, )
|
|
|
设置参数数量 (当前参数数量 + 1)
|
|
|
|
|
|
+.子程序 插入参数节点, , 公开
|
|
|
+ .参数 节点, 抽象语法树节点
|
|
|
+ .局部变量 当前参数数量, 整数型
|
|
|
+ .局部变量 新参数指针地址, 整数型
|
|
|
+ .局部变量 旧参数数组打包, 字节集
|
|
|
+ .局部变量 旧参数指针地址, 长整数型
|
|
|
+
|
|
|
+ 当前参数数量 = 获取参数数量 ()
|
|
|
+ .如果真 (当前参数数量 ≥ 获取参数容量 ())
|
|
|
+ 扩容参数指针 ()
|
|
|
+ .如果真结束
|
|
|
+
|
|
|
+ 旧参数指针地址 = 获取参数指针地址 ()
|
|
|
+ 旧参数数组打包 = 获取参数数组字节集 ()
|
|
|
+ 新参数指针地址 = 申请内存 (获取参数容量 () × #指针大小, 真)
|
|
|
+
|
|
|
+ 写到内存 (到字节集 (节点.获取当前节点指针 ()) + 旧参数数组打包, 新参数指针地址, (当前参数数量 + 1) × #指针大小)
|
|
|
+ 释放内存 (旧参数指针地址)
|
|
|
+
|
|
|
+ 设置参数指针地址 (新参数指针地址)
|
|
|
+ 设置参数数量 (当前参数数量 + 1)
|
|
|
+
|
|
|
+
|
|
|
+.子程序 生成自词节点, 抽象语法树节点, 公开
|
|
|
+ .参数 词, 词
|
|
|
+ .局部变量 n, 抽象语法树节点
|
|
|
+
|
|
|
+ n.初始化内存 (词.内容)
|
|
|
+ 返回 (n)
|
|
|
+
|
|
|
+.子程序 添加词节点, , 公开
|
|
|
+ .参数 词, 词
|
|
|
+
|
|
|
+ 添加文本节点 (词.内容)
|
|
|
+
|
|
|
+.子程序 添加文本节点, , 公开
|
|
|
+ .参数 文本, 文本型
|
|
|
+ .局部变量 n, 抽象语法树节点
|
|
|
+
|
|
|
+ n.初始化内存 (文本)
|
|
|
+ 添加参数节点 (n)
|
|
|
+
|
|
|
.子程序 获取参数节点, 抽象语法树节点, 公开
|
|
|
.参数 i, 整数型, 可空
|
|
|
|
|
@@ -166,3 +247,19 @@
|
|
|
返回 (格式化文本 (“%s | 基地址: %x | 参数数量: %d | 参数容量: %d | 参数数组地址: %x ”, 获取函数名 (), 到整数 (获取当前节点指针 ()), 到整数 (获取参数数量 ()), 到整数 (获取参数容量 ()), 到整数 (获取参数指针地址 ())))
|
|
|
|
|
|
|
|
|
+.子程序 设置父节点, , 公开
|
|
|
+ .参数 父节点, 抽象语法树节点
|
|
|
+
|
|
|
+ 设置父节点指针地址 (父节点.获取当前节点指针 ())
|
|
|
+
|
|
|
+.子程序 设置父节点指针地址, , 公开
|
|
|
+ .参数 地址, 长整数型
|
|
|
+
|
|
|
+ 写到内存 (地址, 当前节点指针 + #语法树节点_父节点指针偏移, #指针大小)
|
|
|
+
|
|
|
+.子程序 获取父节点指针地址, 长整数型, 公开, 已经不在本结构体了, 在远处了
|
|
|
+ 返回 (取字节集数据 (指针到字节集 (当前节点指针 + #语法树节点_父节点指针偏移, #指针大小), #长整数型, ))
|
|
|
+
|
|
|
+.子程序 获取父节点, 抽象语法树节点, 公开
|
|
|
+ 返回 (从内存初始化 (获取父节点指针地址 ()))
|
|
|
+
|