在 Java 中实现自定义表达式计算器的正确方法是什么



我有一个包含许多属性的地图,例如"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',我自己不会超越递归下降。

相关内容

最新更新