好了,對於在兩天我的第三個ANTLR問題:遞歸處理規則在ANTLR
我的語法是爲了解析布爾語句,像這樣:
AGE > 21 AND AGE < 35
由於這是一個比較簡單的語法,我嵌入代碼而不是使用AST。規則是這樣的:
: a=singleEvaluation { $evalResult = $a.evalResult;}
(('AND') b=singleEvaluation {$evalResult = $evalResult && $b.evalResult;})+
{
// code
}
;
現在我需要實現使用括號運算順序,來解析這樣的事情:
AGE >= 21 AND (DEPARTMENT=1000 OR DEPARTMENT=1001)
甚至更糟:
AGE >= 21 AND (DEPARTMENT=1000 OR (EMPID=1000 OR EMPID=1001))
能
人建議一種實現遞歸所需的方法?我寧願不在這個晚期階段轉向AST,而且我仍然是一個相對的菜鳥。
傑森
我不得不做出一些調整,特別是在原子規則。我使用Apache Commons BeanUtils對Java POJO進行了驗證,並在語法中定義了字段爲字符串/日期等的定義。但總的來說,這太棒了。再次感謝。 – Jason