1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- .版本 2
- .支持库 spec
- .程序集 语法分析程序集
- .程序集变量 AST根, 抽象语法树节点
- .程序集变量 词, 词, , "0"
- .程序集变量 当前词游标, 整数型
- .子程序 语法分析
- .参数 _词, 词, 数组
- 复制数组 (词, _词)
- 当前词游标 = 1
- AST根.初始化内存 (“根”)
-
- .判断循环首 (当前词游标 < 取数组成员数 (词))
- 匹配表达式 ()
- .判断循环尾 ()
-
- .子程序 匹配表达式
- .局部变量 节点, 抽象语法树节点
- .如果真 (下个词 ().类型 = #词类_数字)
- 调试输出 (“遇到数字”, 下个词 ().内容)
- 节点.初始化内存 (“遇到数字 ” + 下个词 ().内容)
- AST根.添加参数节点 (节点)
-
- .如果真结束
- 词游标自增 ()
-
- .子程序 下个词, 词
- .局部变量 返回词, 词
-
- .如果 (当前词游标 > 取数组成员数 (词))
- 返回词.内容 = “”
- 返回词.类型 = #词类_结尾
- .否则
- 返回词 = 词 [当前词游标]
- .如果结束
-
- 返回 (返回词)
- .子程序 词游标自增
- 当前词游标 = 当前词游标 + 1
-
- .子程序 重复文本, 文本型
- .参数 n, 整数型
- .参数 s, 文本型
- .局部变量 res, 文本型
- res = “”
- .计次循环首 (n, )
- res = res + s
- .计次循环尾 ()
- 返回 (res)
- .子程序 输出语法分析结果
- .参数 AST, 抽象语法树节点
- .参数 当前层级, 整数型, 可空
- .局部变量 i, 整数型
- .如果真 (是否为空 (当前层级))
- 当前层级 = 0
- .如果真结束
- 标准输出 (, 重复文本 (当前层级, “ ”))
- 标准输出 (, AST.生成展示文本 () + #换行符)
- .计次循环首 (AST.获取参数数量 (), i)
- 输出语法分析结果 (AST.获取参数节点 (i), 当前层级 + 1)
- .计次循环尾 ()
- .子程序 语法分析并输出
- .参数 表达式, 文本型
- .局部变量 t0, 长整数型
- t0 = 时间_取现行时间戳1 (真)
- 词法分析 (表达式, 词)
- 语法分析 (词)
- 标准输出 (, “用时 ” + 到文本 (时间_取现行时间戳1 (真) - t0) + “ms” + #换行符)
- 输出语法分析结果 (AST根)
-
-
|