есть ли способ «подделать» ретроспективный взгляд в Antlr4? Я хочу решить некоторую двусмысленность в соответствии с токеном прямо перед тем, где я.Lookback lexer member in antlr4
EDIT
read: STAR text STAR text STAR text
| STAR text STAR KEY_WORD STAR text
text: STR +;
@lexer::members {
private boolean checkAhead(int maxAmountOfCharacters, String pattern) {
final Interval ahead = new Interval(this._tokenStartCharIndex, this._tokenStartCharIndex + maxAmountOfCharacters - 1);
return this._input.getText(ahead).matches(pattern);
}
KEY_WORD: LETTER LETTER LETTER LETTER LETTER ;
STAR :'*';
STR: {(!checkAhead(6, "([A-Z]){5}[*](\\D|$)") }?
(
LETTER
| DIGIT
)+
;
Я хочу, чтобы вход, который должен читаться как KEY_WORD только если это СТАР KEY_WORD СТАР сейчас, если последнее слово в тексте [AZ] {5} она согласована с KEY_WORD
, пожалуйста, поделитесь частью грамматики роура и простым примером сценария вашей проблемы – ddb
извините, вопрос и пример изменены –
Нужно предоставить образец ввода, отмеченный ожидаемыми результатами. Непонятно, что вы просите от вашего описания. – GRosenberg