Получить реальную позицию в лексере. Добавлен пример

Я пишу редактор с netbeans7 и ANTLR4
У меня есть строка в файле my.g4

Label       : {(getCharPositionInLine()==0)}? ID; 

Это хорошо работает для статических файлов, но при редактировании getCharPositionInLine() часто возвращает 0 в других местах.
Как получить реальную позицию в лексере?

обновленный
Я создал пример с этой проблемой
https://github.com/daimor/SimpleANTLR

1 ответ

Вероятно, ваша ошибка связана с тем, как вы строите свой лексер и / или входной поток (т. Е. Код, который вы здесь не показывали). Предикат, который вы описали выше, будет работать, как и ожидалось, для лексера ANTLR 4.

Кроме того, если getCharPositionInLine()==0, тогда точно одно из следующих условий также верно:

  1. _input.index()==0
  2. _input.LA(-1)=='\n'
Другие вопросы по тегам