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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!