我是一个新手,正在尝试使用 ANTLR4 构建解析器。然而,我卡在了最基本的步骤 —— 解析单个单词上。
我的语法如下:
grammar test;
program : WORD EOF;
WORD : 'test';
我的输入文件看起来像这样:
test
输入文件只有一行,没有尾随空格。如果我在十六进制编辑器中打开它,它显示为 5 个字节:test<EOF>
.
根据我对 ANTLR 的理解,这条规则应该匹配一个 WORD 标记然后一个 EOF 标记,然后停止解析。但是,在解析文件时,我得到了“第 1 行:第 4 列缺少'test'”的错误消息。
我以前使用过 lex/yacc,从未遇到过这样的错误。我知道 ANTLR 的工作方式与之不同,所以我很好奇为什么会遇到这个错误。