0
在ANTLR 4中,通过实现ANTLRErrorListener可以扩展错误/异常处理。只有当我遍历使用词法分析器和解析器创建的树时,才会触发事件。 例如ANTLR 4在触发监听事件之前预先进行错误和异常处理
parser.removeErrorListeners();
parser.addErrorListener(new MyTryDSLErrorListener());
ParseTreeWalker walker = new ParseTreeWalker();
MyTryDSLListener listener = new MyTryDSLListener(); // Can be replaced by default Base listener(empty implementation)
walker.walk(listener, parser.test()); // At this line tree will be traversed and if any error then MyTryDSLErrorListener's callback will be called.
我想知道有没有干净的方式来获得输入 字符串错误,而无需调用监听器/访问者。
注:虽然没有用的默认实现替换监听器来处理此问题的方法。然后再次遍历树自己实现的听众,就像如下:
walker.walk(new TryDSLBaseListener(), parser.test()); // Find if has any errors.
walker.walk(new MyTryDSLListener(), parser.test()); // Actual use case.
您可以请详细解释_解析器中的解析器_或如果可能请您提供给我的教程。如果我理解它,那么我应该将它改为:'parser.test();'?然后添加听众并穿过树? –