2010-10-03 46 views
0

当我的输入文件在EOF处没有换行符或者多于一个时,ANTLR给了我下面的错误。当没有足够的或者太多的换行符时ANTLR错误

line 0:-1 mismatched input '' expecting NEWLINE

我怎么会去考虑在输入文件的末尾有多个的可能性,或者不换行。我最好在文法中解释这一点。

回答

1

规则:

parse 
    : (Token LineBreak)+ EOF 
    ; 

仅解析标记流,通过正好一个换行符分离,用恰好一个换行符结束。

虽然规则:

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

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

但是,您是否真的需要在分析器中显示换行符?你不能把它们放在“隐藏频道”上吗?

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

HTH

相关问题