Я пытаюсь понять, как заставить antlr4 выполняться в заданной точке входного файла, а не вверху. Я воспользовался советом пользователей SO и начал решение с помощью посетителей Antlr4.
Мой входной файл объявляет «BASIC», как подпрограммы, и имеет Main внизу. Пример входного файла:
#Program hello;
Sub mysub1()
print "please dont call me but I know you will";
End Sub
Sub mysub2()
#code
End Sub
Main() #execute code from here
call mysub2;
EndMain
Неудивительно, что он выполняет любой код в Sub, потому что он не знает ничего другого, кроме как начать сверху.
Мой файл грамматики включает
prog
: stat* 'Main' stat* 'EndMain' EOF
;
stat
: call_sub
| assignment
| if_stat
| while_stat
...
Итак, первый stat* выполняется — и это моя точка зрения, как мне заставить выполнение начинаться с Main. например Как мне обнаружить/использовать токен/правило «Основной», а затем начать посещать его, а не верхнюю часть файла/дерева?
Спасибо заранее.
Кевин