gpt4 book ai didi

java - 让 Antlr 词法分析器将语法错误作为标记处理

转载 作者:行者123 更新时间:2023-12-01 12:50:17 32 4
gpt4 key购买 nike

我正在使用 Antlr 4.2.2 和 Java 1.7 进行一些文本处理。我扩展了 BaseErrorListener 并重写了 syntaxError() 来报告语法错误,效果很好。但我希望它将不匹配的文本视为 token 并返回它,而不是完全删除它。

在我的词法分析器中,我有这个规则:

TEXT : ~[<{|]+ ;

当我尝试解析“foo { {”时,我收到预期的语法错误: token 识别错误:'{ {'。但我希望将 '{ {' 也报告为 token ,这样它就不会从输入流中删除。

最佳答案

您可以在文件末尾添加一个像这样的包罗万象的词法分析器规则:

Error : . ;

这将产生 Error 标记,这些标记很可能在解析过程中被报告为额外的“Error”标记

您也可以这样做:

 SilentError : . -> channel(LexingErrorChannel); // you need to set the constant for this channel

这将默默地忽略词法错误(如果您想自己处理/报告它们)。

但是,如果可以规避的话,不会真的这样做。

注意:这将为每个字符生成一个 Error 标记。如果您“知道”可能的错误,您可以添加其他规则,如下所示:

Error : [<{|]'+
| .
;

不过要小心不要太贪心。

关于java - 让 Antlr 词法分析器将语法错误作为标记处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271503/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com