ANTLR 在 Java 中动态评估逻辑运算 AND, OR, NOT

ANTLR Evaluating Logical Operations AND, OR, NOT dynamically in Java

提问人:User1512 提问时间:9/13/2023 最后编辑:Bart KiersUser1512 更新时间:9/14/2023 访问量:35

问:

我需要使用 Java 代码为输入数据 (Map) 执行动态表达式。例如

条件-

EmployeeShift = 'General' AND (EmployeeType = 'CONTRACT' OR Designation IN 'ADMIN')

这个表达式将作为字符串变量传递,有了这个,我必须评估我在运行时出现的输入数据。所以我正在寻找一个解析器来解析条件。

使用 @TagirValeev from - stackoverflow 的帖子的答案,我能够解析 AND、OR 操作。但我不确定如何将其扩展为 NOT 操作。我希望像下面这样工作,其中表达式检查 EmployeeType 和 Designation 的组合 NOT 操作,而不是检查每个变量。

EmployeeShift = 'General' AND NOT(EmployeeType = 'CONTRACT' OR Designation IN 'ADMIN')
if(EmployeeShift = 'General' && !(EmployeeType = 'CONTRACT' || Designation IN 'ADMIN'))

我尝试从本机 Java 代码中检查,但没有一个有效,所以决定使用 ANTLR,如果有人可以帮助我提供上述条件的一些示例,它将有很大帮助。提前致谢。

Java 解析

评论

0赞 Bart Kiers 9/14/2023
如果您有与 ANTLR 相关的问题,请添加您的 ANTLR 语法(并使用 antlr 标签重新标记您的问题)
0赞 User1512 9/14/2023
我想知道是否可以在 ANTLR 中解析上述条件,我想要一个可以满足它的示例语法文件。
0赞 Bart Kiers 9/14/2023
是的,这可以通过ANTLR轻松完成。下面是一个示例:stackoverflow.com/questions/30976962/...您只需要一些小的更改即可使其正常工作。首先自己尝试一下,通过阅读一些教程来研究 ANTLR 的工作原理。如果您遇到困难,请提出具体问题。
0赞 User1512 9/14/2023
非常感谢Kiers@Bart。我能够满足我想要的大部分条件。我想做一些字符串函数,如 CONTAINS 和 STARTS WITH,你能给出一个示例吗?
0赞 Bart Kiers 9/14/2023
首先自己尝试一下,通过阅读一些教程来研究 ANTLR 的工作原理。如果您因创建新问题而陷入困境,请提出具体问题。这些评论框不适合问答。

答: 暂无答案