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

时间:2015-03-18 16:46:08

标签: java javacc

默认JavaCC在第一个异常(TokenMgrError)之后停止解析,但是是一种解析所有输入直到EOF的方法吗?

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

感谢。

2 个答案:

答案 0 :(得分:1)

通常,您应该避免使用TokenMgeErrors。通常这可以通过" catch all"规则 - 有关详细信息,请参阅常见问题解答。

现在你留下了ParseException。您可以使用try-catch处理这些问题。有关该信息,请参阅JavaCC文档。

答案 1 :(得分:0)

您可以使用跳过所有标记的方法,直到参数1:

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()" );
    }
}