获取函数的类型

本文关键字:类型 函数 获取 | 更新日期: 2023-09-27 18:13:59

我试图在c#中解析这个expression:

fun(p1, p2, 33,"lina", g(x,5), ...)

我如何获得expression中所有内容的"类型",给出这些示例:

fun    ---> function
p1, p2 ---> variables
33     ---> constant
"lina" ---> constant 
g      ---> function 
x      ---> variable
5      ---> constant 

获取函数的类型

一般情况下,您不能用正则表达式解析这样的字符串:正则表达式只能在需要上下文无关的正则语法时使用正则语法(有一些小扩展)。您需要一个解析器(例如Antlr或Irony)。看到

正则语法与上下文无关语法

详情。为了展示您可能面临的困难,让我们来看看字符串和注释:

 fun (1 + p1 + 1);                  // p1 is an argument
 fun (/*1 + p1 + 1*/);              // p1 is NOT an argument
 fun ("/*1" + p1 + "1*/");          // p1 is an argument 
 fun (/*"/*1" + p1 + "1*+/"*/);     // p1 is NOT an argument 
 fun ("/*""/*1" + p1 + "1*+/""*/"); // p1 is an argument  
 ...