Ввод сопоставления antlr с использованием нескольких альтернатив error

Я получаю предупреждение, когда antlr v3.1 компилируется по этому правилу

 sentence
:
(CAPITAL_LETTERS_AND_NUMBERS | INT | ANY_WORD ) 
(
    INT
| CAPITAL_LETTERS_AND_NUMBERS
| ANY_WORD 
)*;

Предупреждение:

 5:2: Decision can match input such as "CAPITAL_LETTERS_AND_NUMBERS" using multiple alternatives: 1, 2
 As a result, alternative(s) 2 were disabled for that input
 Semantic predicates were present but were hidden by actions.
 Decision can match input such as "INT" using multiple alternatives: 1, 2
 As a result, alternative(s) 2 were disabled for that input
 Semantic predicates were present but were hidden by actions.

Причина, по которой я запутался, - это довольно сложная грамматика. проходит, пока я не помещаю другое подправило в другое место в файле, которое также использует предложение. Он принимает указанное выше правило, пока это не произойдет, что кажется странным. Я ищу подсказки, как лучше всего отладить и понять, как это могло произойти?

Спасибо, Ричард

5
задан probably at the beach 27 June 2011 в 21:53
поделиться