我正在尝试编辑使用'\ n'而不是';'的ANTLR中的Java语法作为STMTEND,但分号仍然是可选的。但是,即使我已经在语法的起始规则的末尾添加了一个显式的EOF,我也会从我的解析器中遇到这个错误。它不断向我显示这个错误:
mismatched input '<EOF>' expecting {',', '
'}
这是起始语法:
grammar Baraco;
// starting point for parsing a java file
compilationUnit
: constDeclaration* methodDeclaration* statement* EOF
;
这是我创建的STMTEND版本以及片段NEWLINE:
STMTEND : SEMI NEWLINE*
| NEWLINE
;
fragment
NEWLINE
: '\r' '\n'
| '\n'
| '\r'
;
最后,这是我为了测试而进入我的解析器的输入:
int x = 0