将逻辑转换为 Kotlin(或 Java)代码

Translating logic into Kotlin (or Java) code

我有一个用例,我想让用户编写简单的逻辑,然后在幕后将此逻辑转换为代码中的条件。

例如,用户可能会写:

someFieldName > 10 AND otherFieldName is NULL

我希望生成以下代码:

if (data["someFieldName"] > 10 && data["otherFieldName"] == null) {
   // Do something
}

经过一些研究,我发现其中一个选项是使用 eval(通过利用 JS 引擎),尽管它并不适合所有用例。 我还看到可以使用像 ANTLR 这样的工具,这似乎有点矫枉过正。

是否有任何简单的现成产品可用于此类目的?还是我们自己创建一个简单的解析器是处理它的最佳方式?

您的用例可以通过 MVEL2 充分解决。

您无需使用 ANTLR 编写解析器和 AST 或转换为 Java 代码,只需使用适当的参数计算表达式即可。

事实上,任何 Java 表达式语言库都可以。您还可以查看 JUEL.

但是,从表达式来看,我认为它更符合 MVEL2。

试试这两个库。