堆栈溢出!
我使用antlr4来解析输入。我有我的x.g4语法文件和antlr4maven插件生成了一些解析器代码。我正在用以下代码分析输入:
XXXXParser parser = new XXXXParser(new CommonTokenStream(
new XXXXLexer(new ANTLRInputStream(currentInput))));
parser.command();
在上面的代码中,“command”是语法中规则的名称。每次启动此代码时,如果currentinput字符串不符合语法,我会在控制台中收到一条错误消息。我希望能够捕捉这些信息并使用它们。问题是如何做到这一点?
1条答案
按热度按时间c0vxltue1#
您可以编写一个实现
IAntlrErrorListener<T>
然后打电话parser.AddErrorListener()
并传入自定义错误列表。下面是一个来自我自己代码的示例(我实际上是从DiagnosticErrorListener
):然后你可以这样写代码: