【问题标题】:Debugging ANTLR4 grammar调试ANTLR4语法
【发布时间】:2013-01-24 16:31:15
【问题描述】:

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

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

【问题讨论】:

    标签: antlr4


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我又解封了。在询问之前,我应该尝试在输入文件上转换行终止符...
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2022-01-23
    • 2022-01-09
    • 2014-10-24
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多