2012-10-25 77 views
0

有沒有辦法在運行時用ANTLR來控制令牌的簡化操作。 例如,我有一個ANTLR語法看起來像:控制令牌減少

s: (a | b); 
a: WORD; 
b: WORD; 
WORD: ('a'..'z')+ 

凡涉及到這兩個「A」和「B」的確切值可能在運行時是已知的,即我想在運行時決定是否將WORD減少爲'a'或'b'。

+0

對不起,但這個語法不起作用。你能更具體地解釋一下,你想要達到的目標是什麼?可能是一些例子... – Andremoniy

+0

我知道有一個減少 - 減少conflit,但我正在尋找一種方法來解決這種conflit在運行時。我有一個表格可以簡化爲'a'到'b',但是這次在運行時會被填滿。 – bachr

回答

1

使用語義謂詞。除非您計劃對規則a和b添加操作,否則此示例不會特別有用。

s: 
    {someBoolFunction();}? a 
| b 
; 
a: WORD; 
b: WORD; 
WORD: ('a'..'z')+ 
+0

嘿,它是[消歧語義謂詞](http://stackoverflow.com/questions/3056441/what-is-a-semantic-predicate-in-antlr3)我在找什麼。謝謝 – bachr