Учитывая следующий ANTLR 3 грамматику:ANTLR грамматики неясность
statement1 : CHAR_KEYWORD;
statement2 : DIGIT_KEYWORD (COLON_KEYWORD DIGIT_KEYWORD)?;
COLON_KEYWORD : ':';
DIGIT_KEYWORD : '0'..'9';
CHAR_KEYWORD : 'a'..'z' | COLON_KEYWORD;
При разборе следующий текст:
1
Верховенство оператор2 подхватывает этот текст. Это хорошо. Однако, если один имеет следующий текст в настоящее время:
1:2
Правило оператор2 не подхватить этот текст и выдает ошибку. Это происходит потому, что «:» соответствует CHAR_KEYWORD, который не является частью правила. Если удалять COLON_KEYWORD из CHAR_KEYWORD, правило statement2 работает отлично, за исключением того, что правило statement1 не работает должным образом. Как можно реорганизовать эту грамматику так, чтобы оба правила statement1 и statement2 работали должным образом? Благодаря!