gpt4 book ai didi

ANTLR:输入不匹配

转载 作者:行者123 更新时间:2023-12-01 09:28:44 25 4
gpt4 key购买 nike

我无法理解我的语法错误。文件 Bug.g4 是:

grammar Bug;

text: TEXT;

WORD: ('a'..'z' | 'A'..'Z')+ ;
TEXT: ('a'..'z' | 'A'..'Z')+ ;

NEWLINE: [\n\r] -> skip ;

运行antlr4和javac后,我运行

grun Bug text -tree
aa
line 1:0 mismatched input 'aa' expecting TEXT
(text aa)

但如果我在语法中改用 text: WORD ,一切都会好起来的。怎么了?

最佳答案

当两个词法规则都匹配相同的文本字符串,并且没有其他词法规则匹配更长的文本字符串时,ANTLR根据语法中最先出现的规则分配标记类型。在您的情况下,词法分析器规则永远无法生成 TEXT 标记,因为 WORD 规则将始终匹配相同的文本和 WORD 规则出现在语法中的 TEXT 规则之前。如果您在语法中颠倒这些规则的顺序,您会开始看到 TEXT 标记,但永远不会看到 WORD 标记。

关于ANTLR:输入不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795301/

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