【发布时间】:2016-08-24 17:57:33
【问题描述】:
我有一个简单的 ANTLR4 语法:
grammar Test;
preprocessing_file: oneline+;
oneline: IDENTIFIER? new_line;
new_line: EOF|CRLF
;
WS: [ \t\f]+ -> channel(2);
CRLF: '\r'? '\n';
IDENTIFIER: (NONDIGIT | DIGIT )+
;
fragment DIGIT: [0-9];
fragment NONDIGIT: [_a-zA-Z] ;
我正在测试如何使用允许最后一行不被 CRLF 终止的换行规则。我用 ANTLR v4.1 和 v4.5.3 测试了语法。
几行文本的输入文件导致 ANTLR4 冻结并在一段时间后出现 OutOfMemoryException。看起来 ANTLR4 进入了一些无限循环。这是ANTLR4的错误吗?我做错什么了吗?另外,如果我在new_line 规则中删除EOF,一切正常。
【问题讨论】: