Я занимаюсь разработкой небольшого объектно-ориентированного языка программирования.
Я немного растерялся из-за простой вещи. Я реализовал пару посетителей, которые собирают имена, типы и параметры классов, заголовки методов и поля вне AST.
Моя проблема в том, что теперь делать с телом моих методов. Должен ли я добавить локальные переменные в таблицу символов?
Сначала это может показаться хорошей идеей, пока не придет в голову случай, такой как:
void myMethod() {
int i;
while (something) {
int y;
}
while (something) {
int y;
}
}
Если бы я просто добавил i
и y
переменные в таблицу символов, и я бы понял, что y
является дублированной переменной.
Имейте в виду, я знаю о возможностях таблицы символов. Что я не могу понять, так это то, нужно ли добавлять и удалять информацию на лету в Таблице символов, когда он находится внутри метода, или мне нужно постоянно добавлять данные в Таблицу символов при посещении метода (как я делал с классом + fields + methodsheader).
Повторяю вопрос: при посещении тела метода я должен оставить Таблицу символов в конце посещения, так же, как это было до посещения?
Спасибо!