我是 ANTLR 的新手,并尝试在 ANTLRWorks1.4.3 中遵循语法。
command
: 'go' SPACE+ 'to' SPACE+ destination
;
destination
: (UPPER | LOWER) (UPPER | LOWER | DIGIT)*
;
SPACE
: ' '
;
UPPER
: 'A'..'Z'
;
LOWER
: 'a'..'z'
;
DIGIT
: '0'..'9'
;
这似乎工作正常,除非'destination' 包含关键字'go' 和'to' 的前两个字符。例如,如果我给出以下命令:
go to Glasgo
节点树显示如下:
我期待它匹配填充词作为目的地。
我什至尝试更改关键字,例如“旅行”而不是“去”。在这种情况下,如果目的地中有“tr”,ANTLR 会抱怨。
知道为什么会这样吗?以及如何解决这个问题?
提前致谢。