2
是否有可能得到「積極」 ANTLR規則從一個動作方法被調用?取得積極ANTLR的規則
喜歡的東西了在ANTLR中,僞碼這本記錄功能,應該表現出的一些規則的開始和結束位置不拱手$開始和$結束的令牌與每個日誌() - 撥打:
@members{
private void log() {
System.out.println("Start: " + $activeRule.start.pos +
"End: " + $activeRule.stop.pos);
}
}
expr: multExpr (('+'|'-') multExpr)* {log(); }
;
multExpr
: atom('*' atom)* {log(); }
;
atom: INT
| ID {log(); }
| '(' expr ')'
;
謝謝你的幫助!我會在開始和結束標記之後將@ after操作傳遞給log()函數。 – Sonson
@Sonson,不客氣。是的,這是一個更好的選擇(在規則的'@after {...}'塊中的log方法中傳遞'getStart()'和'getEnd()':比使用局部變量' retval'。 –
我也這麼做 - 請參閱http://stackoverflow.com/questions/12892122/how-to-merge-two-asts,但是'stop'和'getTree()'總是返回null :-( – j3d