簡體   English   中英

Java/Apex 中的動態邏輯表達式解析器/求值

[英]Dynamic logical expression parser/evaluation in Java/Apex

最終用戶可以在字符串中定義條件選擇/邏輯表達式,如下所示:

  • String expression = "((1 OR 2) AND 6 AND (3 OR 4)) AND 5";
  • String expression = "(1 AND 2 AND 3 AND 4) OR (5 AND 6)";
  • 或者等等……

並且 1, 2, 3, ... 的值預先計算並存儲在 map 中,例如{1: true, 2: false, 3: true, ...}

要求是使用 map 中存儲的值評估上述表達式,並以真/假得到最終的 output。

例如:

String expression = "(1 AND 2) OR 3";
Map<Integer, Boolean> values = new Map<Integer, Boolean>{1=> true, 2=> false, 3=> true};
System.debug(evaluate(expression, values)); // This should print true

在上面的例子中,“(1 AND 2)OR 3”應該評估為“(true AND false)OR true”,這會導致最終的真實答案。

我需要幫助來編寫evaluate方法。

我通過嵌入Apache Jexl解決了這些問題。 否則,如果您想為 Antlr 創建自己的解析器go - 它可能有一個現成的示例供您使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM