Получить реальную позицию в лексере. Добавлен пример
Я пишу редактор с netbeans7 и ANTLR4
У меня есть строка в файле my.g4
Label : {(getCharPositionInLine()==0)}? ID;
Это хорошо работает для статических файлов, но при редактировании getCharPositionInLine() часто возвращает 0 в других местах.
Как получить реальную позицию в лексере?
обновленный
Я создал пример с этой проблемой
https://github.com/daimor/SimpleANTLR
1 ответ
Вероятно, ваша ошибка связана с тем, как вы строите свой лексер и / или входной поток (т. Е. Код, который вы здесь не показывали). Предикат, который вы описали выше, будет работать, как и ожидалось, для лексера ANTLR 4.
Кроме того, если getCharPositionInLine()==0
, тогда точно одно из следующих условий также верно:
_input.index()==0
_input.LA(-1)=='\n'