在Groovy表达式中使用文字运算符(例如"and","或")?

wis*_*ame 5 dsl groovy

我当前的工作项目允许在特定的上下文中评估用户提供的表达式,作为他们扩展和影响工作流的一种方式.这些表达式通常是逻辑上的.为了使它对非程序员来说有点可口,我想给他们选择使用文字运算符(例如和,或者,而不是代替&,|,!).

简单的搜索和替换是不够的,因为数据可能包含引号内的那些单词并构建解析器,尽管可行,但可能不是最优雅和有效的解决方案.

要明确问题:Groovy中是否有一种允许用户编写的方法

x > 10 and y = 20 or not z 
Run Code Online (Sandbox Code Playgroud)

但是让Groovy对它进行评估,好像它是:

x > 10 && y == 20 || !z
Run Code Online (Sandbox Code Playgroud)

谢谢.

Bri*_*nry 0

GDK对布尔值进行补充and()or()方法。如果您提供了类似的方法

Boolean not(Boolean b) {return !b}
Run Code Online (Sandbox Code Playgroud)

你可以写类似的东西

(x > 10).and(y == 20).or(not(4 == 1)) 
Run Code Online (Sandbox Code Playgroud)

不过,我不确定这是否特别容易写。