首页 文章

调试ANTLR4语法

提问于
浏览
4

我是ANTLR的n00b,并试图在ANTLR4中运行ASN.1解析器 . 我现在正处于这样一个阶段,我正在输入一个输入文件,然后看到错误,例如“第1行:12029输入中没有可行的替代方案......”

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

1 回答

  • 3

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

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

相关问题