使用ANTLR,我解析语法.ANTLR错误在语法的自定义编辑器中指示.但是,我想禁用将错误消息打印到Java控制台.
我已经实现了自己的BaseErrorListener并删除了ANTLR书中描述的默认值:
MyErrorListener errList=new MyErrorListener ();
lexer.removeErrorListeners();
lexer.addErrorListener(errList);
parser.removeErrorListeners();
parser.addErrorListener(errList);
Run Code Online (Sandbox Code Playgroud)
我仍然得到打印输出到我的Java控制台(连接到Java输出和错误流).
如何在ANTLR中禁用打印到控制台?
uwo*_*fer 13
默认情况下,ConsoleListener激活[1].
您可以在代码中删除它:
lexer.removeErrorListener(ConsoleErrorListener.INSTANCE);
Run Code Online (Sandbox Code Playgroud)
[1] https://github.com/antlr/antlr4/blob/master/runtime/Java/src/org/antlr/v4/runtime/Recognizer.java#L56 (参见add(ConsoleErrorListener.INSTANCE);)
我终于找到了解决方案。我在语法之前有一个过滤器:
Filter filter = new Filter(tokens)
Run Code Online (Sandbox Code Playgroud)
其中过滤器的侦听器(预解析器类)也必须删除:
filter.removeErrorListeners();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3500 次 |
| 最近记录: |