期待ANTLR中的NEWLINE

mar*_*ike 1 java antlr eof

我有一个错误显示:

line 1:5 mismatched input '<EOF>' expecting NEWLINE
Run Code Online (Sandbox Code Playgroud)

我的意见:

print "hi"
Run Code Online (Sandbox Code Playgroud)

我基本上是ANTLR的新手,所以我真的不知道这个错误的含义是什么?我知道我应该有一个文件结束,但我应该如何放置它?

Bar*_*ers 6

我基本上是ANTLR的新手,所以我真的不知道这个错误的含义是什么?

这意味着解析器偶然发现文件的末尾,而它期望换行.要修复它,只需在输入的末尾添加换行符即可.

这意味着你的语法中有这样的东西:

parse : (statement NEWLINE)+ EOF
Run Code Online (Sandbox Code Playgroud)

在... NEWLINE之前强制执行EOF.你也可以这样做:

parse : statement (NEWLINE statement)* NEWLINE* EOF
Run Code Online (Sandbox Code Playgroud)

使得NEWLINE可选的结束,但之间的强制性statement秒.