0
有沒有辦法在運行時用ANTLR來控制令牌的簡化操作。 例如,我有一個ANTLR語法看起來像:控制令牌減少
s: (a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+
凡涉及到這兩個「A」和「B」的確切值可能在運行時是已知的,即我想在運行時決定是否將WORD減少爲'a'或'b'。
有沒有辦法在運行時用ANTLR來控制令牌的簡化操作。 例如,我有一個ANTLR語法看起來像:控制令牌減少
s: (a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+
凡涉及到這兩個「A」和「B」的確切值可能在運行時是已知的,即我想在運行時決定是否將WORD減少爲'a'或'b'。
使用語義謂詞。除非您計劃對規則a和b添加操作,否則此示例不會特別有用。
s:
{someBoolFunction();}? a
| b
;
a: WORD;
b: WORD;
WORD: ('a'..'z')+
嘿,它是[消歧語義謂詞](http://stackoverflow.com/questions/3056441/what-is-a-semantic-predicate-in-antlr3)我在找什麼。謝謝 – bachr
對不起,但這個語法不起作用。你能更具體地解釋一下,你想要達到的目標是什麼?可能是一些例子... – Andremoniy
我知道有一個減少 - 減少conflit,但我正在尋找一種方法來解決這種conflit在運行時。我有一個表格可以簡化爲'a'到'b',但是這次在運行時會被填滿。 – bachr