第一次异常后不要停止解析



默认情况下,JavaCC在第一个异常(TokenMgrError)后停止解析,但是否可以解析所有输入直到EOF?

我需要它列出所有错误,而不是停留在第一个错误。

谢谢。

通常,您应该避免TokenMgeErrors。通常,这可以通过"一网打尽"规则来实现——有关详细信息,请参阅常见问题解答。

现在剩下一个ParseException。你可以使用try-catch来处理这些问题。有关这方面的信息,请参阅JavaCC文档。

您可以使用一个方法跳过所有令牌,直到参数一:

void error_skipto(int kind){
    ParseException e = generateParseException();
    System.out.println(e.toString());
    Token t;
    do {
        t = getNextToken();
    } while (t.kind != kind);
}

然后用非终端方法调用它:

void block(): {}
{
    try{
        < START > [code()] < END >
    }catch ( ParseException e ) {
        error_skipto(SEMICOLON);
        System.out.println( "Captured by: block()" );
    }
}

相关内容

最新更新