私は 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' の最初の 2 文字が含まれている場合を除いて、問題なく動作するようです。たとえば、次のコマンドを指定すると:
go to Glasgo
ノードツリーは次のように表示されます。
目的地としてフィルワードと一致することを期待していました。
「go」の代わりに「travel」など、キーワードを変更してみました。その場合、宛先に 'tr' があれば、ANTLR は文句を言います。
なぜこれが起こるのか分かりますか?これを修正する方法は?
前もって感謝します。