我在 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
设置为解析器规则而不是词法分析器规则。