Browse Source

匹配单参数函数

myuan 3 years ago
parent
commit
b2bc2bd826

BIN
2. 词法分析科学计算器/词法分析科学计算器.e


+ 1 - 1
2. 词法分析科学计算器/词法分析科学计算器.代码/代码/程序集1.static.e.txt

@@ -39,7 +39,7 @@
         
     .计次循环尾 ()
     
-    语法分析并输出 (“1 -( 2 - (3) )* 4”)
+    语法分析并输出 (“1 -( sin(2222) - cos(3333) )* 4”)
     
     语法分析并输出 (“2*3-1*4+5/6-7”)
     

+ 55 - 1
2. 词法分析科学计算器/词法分析科学计算器.代码/代码/语法分析程序集.static.e.txt

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