如何在Antlr 4.4中出现错误后继续解析



是否有人知道在发现错误后Antlr4.4上是否有ErrorStrategy继续解析,我需要显示程序中发现的所有错误,但Antlr在发现第一个错误后停止解析,我使用DefaultErrorStrategy

这是我的输入,我应该在第2行、第3行和第6行得到错误,但它只在第2行报告错误。

class Program {
    bool
    bool test
    int prueba ;
    int prueba ;
    int test;
    bool    prueba
}

错误是:

line 2:1 mismatched input 'bool' expecting {'boolean', 'int', 'void', '}'}
 bool
 ^^^^

Antlr 4的解析器错误策略是从输入中删除令牌,直到它可以检测到相同的状态,然后继续解析。查看您的示例,在尝试恢复时,可能它在EOF之前从未达到正常状态。

似乎antlr无法恢复,如果有两个连续的错误在程序中。如果错误不是连续的,它可以正常工作。非常感谢您的帮助。

相关内容

  • 没有找到相关文章

最新更新