我有一个包含许多属性的地图,例如"a","b","c"...
我想定义一个模板,我可以在其中计算表达式,例如,
"a" && "b" &&!"c"表示以下内容,
如果为真,则为
"a" is in the map, "b" is in the map but "c" is not in the map
否则为假
在Java中实现这一点的方法是什么?居尔有帮助吗?
编辑:
为了明确这一点,我需要创建一种可配置的语言,您可以在配置文件中定义需要在运行时评估的任何类型的表达式。
例如,我需要我的 java 代码来解析可能包含任何表达式的文件,例如,
"a" && "b">
!("a"&&"d"(
我不知道在编译时需要计算哪些表达式。希望这使要求更加明确。
在Java中实现这一点的方法是什么?
我会使用Javacc或Antlr这样的东西:
- 阅读该工具的教程,并研究示例(特别是如果您以前从未学习/接受过语法和解析器生成器的学习(
- 为您的简单语言编写语法
- 将"动作"添加到语法中以动态评估表达式
- 生成 Java 类
您将有一个学习曲线,但这应该是一个非常简单/没有问题的语法来实现。
居尔有帮助吗?
应该不会。 首先,任何基于 JUEL 的东西都会接受完整的 EL 语法。
基本技术是递归下降,Dijkstra分流场算法,或通过相当多的系统中的任何一个生成解析器。如果你只需要处理括号,'not'、'and'和'or',我自己不会超越递归下降。