Хотелось бы иметь следующую грамматику (ее часть):
expression
:
expression 'AND' expression
| expression 'OR' expression
| StringSequence
;
StringSequence
:
StringCharacters
;
fragment
StringCharacters
: StringCharacter+
;
fragment
StringCharacter
: ~["\]
| EscapeSequence
;
Он должен соответствовать таким вещам, как «a b c d f» (без кавычек), а также таким вещам, как «a AND b AND c».
Проблема в том, что мое правило StringSequence является жадным и также использует OR / AND. Я пробовал разные подходы, но не мог заставить мою грамматику работать правильно. Возможно ли это с ANTLR4? Обратите внимание, что я не хочу заключать каждую строку в кавычки. Размещение кавычек отлично работает, потому что правило становится не жадным, то есть:
StringSequence
: '"' StringCharacters? '"'
;