【发布时间】:2012-03-22 16:57:10
【问题描述】:
我有一个错误显示:
line 1:5 mismatched input '<EOF>' expecting NEWLINE
我的意见:
print "hi"
我基本上是 ANTLR 的新手,所以我真的不知道这个错误是关于什么的?我确实知道我应该有一个文件结尾,但我应该如何放置它?
【问题讨论】:
我有一个错误显示:
line 1:5 mismatched input '<EOF>' expecting NEWLINE
我的意见:
print "hi"
我基本上是 ANTLR 的新手,所以我真的不知道这个错误是关于什么的?我确实知道我应该有一个文件结尾,但我应该如何放置它?
【问题讨论】:
我基本上是 ANTLR 的新手,所以我真的不知道这个错误是关于什么的?
这意味着解析器偶然发现了文件的末尾,而它预计会出现换行符。要修复它,只需在输入的末尾放置一个换行符即可。
这意味着你的语法中有这样的东西:
parse : (statement NEWLINE)+ EOF
在EOF 之前强制设置NEWLINE。你也可以这样做:
parse : statement (NEWLINE statement)* NEWLINE* EOF
最后使NEWLINE 可选,但在statements 之间是强制性的。
【讨论】: