【发布时间】:2012-06-08 10:47:01
【问题描述】:
我只想解析简单的表达式,比如 -
IIF(FVAL(PFC) = TRUE, (IIF((ORGVAL(BAS, "2012/12/31") + ORGVAL(DA)) < 6500, (FVAL(BAS) + FVAL(DA)) * 12%, 780)), 0)`
解析后应该可以知道哪些函数包含哪些参数。
|-FVAL
|-PFC
|-ORGVAL
|-BAS
|-"2012/12/31"
我被 .Net Framework 2.0 困住了,所以我没有 Linq 或 lambda 表达式的好东西。此外,我想将代码包含在我的自定义库中,而不仅仅是引用它。谁能指点我一些好的库或代码。
我只需要解析而不是评估表达式并找出正在使用的标记。找到标记后,我需要在解析之前更改表达式字符串,例如如果使用函数ORGVAL,则传递的参数必须带有下划线前缀。就像ORGVAL(BAS) 将转换为ORGVAL(_BAS)。有些函数可以有两个参数,比如ORGVAL(BAS, "2012/12/31"),这将转换为ORGVAL(_BAS, "2012/12/31")
注意:如果有其他方法,请告诉我。我希望避免使用解析器和词法分析器。
【问题讨论】:
-
ANTLR。或者另一个语法解析器..
-
@Yossarian ANTLR 对我来说太难了。我对此一无所知。也许更简单一些。
-
忽略通用解决方案使其成为购物问题的标志。在所有 SE 网站上偏离主题。
标签: c# vb.net parsing .net-2.0 expression-trees