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

时间:2014-08-24 00:49:33

标签: parsing antlr antlr4

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

这是我的输入,我应该在第2行和第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
 ^^^^

2 个答案:

答案 0 :(得分:2)

Antlr 4的解析器错误策略是从输入中删除令牌,直到它可以检测到一个合理的状态,然后继续解析。看看你的例子,在尝试恢复时,它可能永远不会在EOF之前达到理智状态。

答案 1 :(得分:-1)

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