当新行不够或太多时,ANTLR错误

时间:2010-10-03 19:50:47

标签: antlr

当我的输入文件在EOF中没有换行符或多个换行符时,ANTLR会出现以下错误。

line 0:-1 mismatched input '' expecting NEWLINE

我如何考虑输入文件末尾有多个或没有换行符的可能性。我希望在语法中考虑到这一点。

1 个答案:

答案 0 :(得分:1)

规则:

parse
  :  (Token LineBreak)+ EOF
  ;

仅解析一个标记流,仅由一个换行符分隔,以一个换行符结束。

虽然规则:

parse
  :  Token (LineBreak+ Token)* LineBreak* EOF
  ;

解析由一个或多个换行符分隔的标记流,以零,一个或多个换行符结束。

但是你真的需要在解析器中看到换行符吗?难道你不能把它们放在“隐藏通道”上吗?

如果这不能回答你的问题,你必须发表你的语法(你可以编辑原来的问题)。

HTH