4

我是 ANTLR 的 n00b 并且通过尝试让 ASN.1 解析器在 ANTLR4 中运行而变得更大。我目前正处于将输入文件传递给 grun 并看到诸如“第 1:12029 行在输入时没有可行的替代方案......”之类的错误的阶段

我试图将这与我的规则的一些问题联系起来,但通过字符数定位有问题的输入是一个挑战。ANTLR 解析器将输入视为单行是正常的,还是因为规则问题(我在 OSX 系统上)而无法识别 EOL?如果将输入视为一长行是正常的,有人可以推荐一种用于在文件中定位给定字符位置的工具吗?

4

1 回答 1

3

您的代码是否仅使用\r行尾?ANTLR 4 仅在使用字符时增加行数并重置 char 位置\n。如果您需要处理普通的\r行尾,则需要覆盖LexerATNSimulator.consume以执行此检查。

检查完整的行尾集比单独检查要昂贵得多因此由于行尾很少见,默认实现使用最大性能。\n\r\n

于 2013-01-24T17:34:42.443 回答