Я пытаюсь получить начальную и конечную позицию (строку и столбец) контекста в ANTLR4. Я работаю с этой грамматикой Python3. Я написал слушателя, который печатает начальную и конечную строку:
class MyListener extends Python3BaseListener {
@Override
public void enterFuncdef(@NotNull Python3Parser.FuncdefContext ctx) {
Token start = ctx.getStart();
System.out.print("start: ");
System.out.print(start.getText());
System.out.print(": ");
System.out.println(start.getLine());
Token stop = ctx.getStop();
System.out.print("stop: ");
System.out.print(stop.getText());
System.out.print(": ");
System.out.println(stop.getLine());
}
}
Мой тестовый ввод:
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
def iterative_factorial(n):
result = 1
for i in range(2,n+1):
result *= i
return result
Мой слушатель печатает
start: def: 1
stop: DEDENT: 0
start: def: 7
stop: DEDENT: 0
но я ожидаю
start: def: 1
stop: DEDENT: 5
start: def: 7
stop: DEDENT: 11
Что случилось?