所以我有这个测试语法:
grammar Test;
HELLO : 'Hello';
X : [a-z]+;
WS : [ ]+ -> skip;
test : HELLO X;
我有这个测试字符串:
Hello buddy
但是语法与提供的测试字符串不匹配。 HELLO 匹配“Hello”而 X 匹配“buddy”似乎应该是显而易见的。一旦我们有了令牌流 [HELLO, X] 它应该匹配解析器规则“test”。
这是基于更复杂的语法文件的更复杂的错误。我设法用你在上面看到的更简单的语法重现了这个错误。
我现在很困惑
上述语法和词法分析器规则按预期解析字符串。如果您使用 http://lab.antlr.org/ 进行测试,请确保在解析器选项卡下输入组合的词法分析器/解析器语法之前清除词法分析器规则选项卡。