我是 Antlr4 的新手,几天来我一直在绞尽脑汁地思考一种我根本不理解的行为。我有以下组合语法并期望它失败并报告错误,但事实并非如此:
grammar MWE;
parse: cell EOF;
cell: WORD;
WORD: ('a'..'z')+;
Run Code Online (Sandbox Code Playgroud)
如果我给它输入输入
a4
Run Code Online (Sandbox Code Playgroud)
我希望它无法解析它,因为我希望它匹配整个输入字符串,而不仅仅是其中的一部分,如EOF. 但它没有报告任何错误(我使用实现接口的错误监听器监听错误IAntlrErrorListener)并给出以下解析树:
(parse (cell a) <EOF>)
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
antlr4 ×1