Ситуация:
rule : block+ ;
block : '[' String ']' ;
String : ([a-z] | '[' | '\\]')+ ;
Хитрость заключается в том, что String может содержать [ без обратной косой черты и ] с обратной косой чертой, поэтому в этом примере:
[hello\]world][hello[[world]
Первый блок может быть проанализирован правильно, но второй... парсер пытается найти ] для каждого [. Есть ли способ сказать парсеру antlr игнорировать этот автономный [? Я не могу изменить формат, но мне нужно найти обходной путь с помощью antlr.
PS: Без antlr есть алгоритм, чтобы избежать этого, что-то вроде: собрать [ в очереди, прежде чем мы найдем первый ] и использовать только начало очереди. Но мне очень нужен antlr =_=