默认情况下,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()" );
}
}