没有标签的 antlr4 节点

antlr4 nodes without labels

我正在用 Antlr 4 (v4.9.2) 解析语法

语法如下:

grammar Test;

start
:
    command+ EOF
;
command: commandType params ;
commandType: 'DISPLAY' ;
params: param (',' param)*
    | ;//parameter list
param: ID;
ID : [a-z]+[a-z0-9]*
;
WS
:
    [ \t\r\n]+ -> skip
;

语法的输入文本是:

DISPLAY hello, really, sdfdsf
DISPLAY one more now

下面是生成的解析树。 (start (command (commandType DISPLAY) (params (param hello) , (param really) , (param sdfdsf))) (command (commandType DISPLAY) (params (param one))) 现在更多 )

节点“more now”没有被标记。

为什么解析器没有为“more now”抛出错误?

确实产生错误,但 ANTLR 的默认策略是(尝试)从无效输入中恢复,并继续解析。

这是在尝试解析您的输入时显示的内容:

尝试 Google“ANTLR 错误策略”、“ANTLR 错误处理”,或查看此问答:Handling errors in ANTLR4