如何验证NCalc表达式?我希望在我的简单自定义语言中使用NCalc来计算if/ use /endif条件,以定义步骤序列。主程序将提供一些条件参数。序列是由用户定义的,所以我的解析器必须验证条件是否正常,并且只使用提供的参数。
我已经试过一些测试了,但不知道怎么做。HasErrors()方法不检查已使用的参数。invalid ()使用优化,因此如果我编写表达式"true或XXXX",它将以true结果结尾,而不会发现XXXX参数无效。我该怎么做?我想在编译时验证它。
谢谢。
发布于 2022-06-14 20:32:28
我在这个问题中找到了答案(标记为答案),也许我也应该在google中使用其他关键字。Get the parameters in an expression using NCalc
我在基于LogicalExpressionVisitor的访问者身上测试了这个解决方案,而且它正在工作。但是,从理论上讲,它可能与验证不一样,因为我从解析表达式中得到了参数名称的列表,而没有提供参数值。因此,在为评估提供特殊“坏”参数值的情况下,表达式可能会失败。但这对我的情况来说已经足够了,我知道我将提供给表达式的所有参数,所以对我来说,它就足够得到参数名称了。
https://stackoverflow.com/questions/72609927
复制相似问题