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