@@ -39,7 +39,7 @@
.计次循环尾 ()
- 语法分析并输出 (“1 -( 2 - (3) )* 4”)
+ 语法分析并输出 (“1 -( sin(2222) - cos(3333) )* 4”)
语法分析并输出 (“2*3-1*4+5/6-7”)
@@ -182,6 +182,7 @@
.局部变量 中表达式, 抽象语法树节点
.局部变量 右括号, 抽象语法树节点
.局部变量 数字, 抽象语法树节点
+ .局部变量 函数, 抽象语法树节点
.判断开始 (下个词 ().类型 = #词类_括号)
.如果真 (下个词 ().内容 ≠ “(”)
@@ -203,10 +204,63 @@
.判断 (下个词 ().类型 = #词类_数字)
数字 = 匹配数字 ()
返回 (数字)
+
.默认
- 返回 (父节点.生成匹配失败节点 ())
+ 函数 = 匹配函数 (当前节点)
+ .如果真 (函数.失败 ())
+ 返回 (父节点.生成匹配失败节点 ())
+ .如果真结束
+ ' 当前节点.初始化内存 (“函数”, 父节点.获取当前节点指针 ())
+ ' 当前节点.添加参数节点 (函数)
+ 返回 (函数)
.判断结束
+.子程序 匹配函数, 抽象语法树节点
+ .参数 父节点, 抽象语法树节点
+ .局部变量 当前节点, 抽象语法树节点
+ .局部变量 标识符, 抽象语法树节点
+ .局部变量 参数, 抽象语法树节点
+ .如果真 (下个词 ().类型 ≠ #词类_标识符)
+ 标识符 = 匹配标识符 (当前节点)
+ .如果真 (下个词 ().内容 ≠ “(”)
+ 词游标自增 ()
+ 参数 = 匹配数字 ()
+ .如果真 (下个词 ().内容 ≠ “)”)
+ 标识符.添加参数节点 (参数)
+ 返回 (标识符)
+.子程序 匹配标识符, 抽象语法树节点
+ 当前节点.初始化内存 ()
+ .如果 (下个词 ().类型 ≠ #词类_标识符)
+ 当前节点.释放结构内存 ()
+ 返回 (当前节点.生成匹配失败节点 ())
+ .否则
+ 当前节点.设置函数名 (下个词 ().内容)
+ 返回 (当前节点)
+ .如果结束
.子程序 匹配数字, 抽象语法树节点
.局部变量 当前节点, 抽象语法树节点