默认JavaCC在第一个异常(TokenMgrError)之后停止解析,但是是一种解析所有输入直到EOF的方法吗?
我需要列出所有错误,而不是在第一个错误中停止。
感谢。
答案 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()" );
}
}