我在 Antlr3 中的词法分析器规则为:
HYPHEN : '-';
TOKEN : HYPHEN CHARS;
CHARS : 'a' ..'z';
解析器规则如下:
exp : CHARS | some complex expression;
parser_rule : exp HYPHEN exp;
如果我尝试将“abc-abc”与 parser_rule 匹配,则会失败。因为词法分析器为 HYPHEN exp 创建 TOKEN。如何将其与 parser_rule 正确匹配。
在ANTLR词法分析器中,使用可以匹配输入的最长子序列的词法分析器规则。所以你的输入
abc-abc
将被标记为
CHARS("abc")
TOKEN("-abc")
因此与预期不符CHARS HYPHEN CHARS
.
你应该考虑制作TOKEN
解析器规则而不是词法分析器规则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)