0
我正在嘗試改進antlr給出的錯誤消息,並注意到句法謂詞似乎是錯誤消息的根源。改進句法謂詞錯誤消息?
這是我目前正在研究的那個。這是一個語法結構的例子。對不起,我無法提供實際的語法。但希望這可以說明這一點。
defs
: (a) => a | b
;
a
: A B c
;
//b is actually much further down the chain and due to ordering can't be moved up.
b
: A c
;
問題是,例如,如果您有令牌「A B D」。您收到的錯誤消息來自'b'規則。我希望錯誤消息來自'a'規則。如果「A B」匹配,意味着如果'C'不匹配,我想要一個錯誤。
我想你也許可以做到這一點
a
: (A B) => A B c | {EmitErrorMessage("error");}
;
嗯,我可以發誓我早些時候試過,它沒有奏效。雖然我現在只是嘗試過,並且它可以工作。謝謝! – Will 2013-04-22 23:13:50