185 похожих чатов

Здравствуйте. А как в Reference Attributed Grammar решают проблему с разрешением

скоупа имён в случае с инкрементальными вычислениями?

Например, у нас есть такой код:

let x = 10;
x + 2;

Разрешая имя x во втором выражении мы можем его связать с объявлением переменной, пройдя по дереву разбора обратно, и не создавая тем самым символьной таблицы. Но если пользователь напишет после let x = 10; еще какое-нибудь затемнение переменной типа

let x = 10;
let x = 20;
x + 2;

то нам нужно будет пересвязать x + 2 на новое объявление. Но как это сделать без таблиц имён не очень понятно.

4 ответов

3 просмотра

Идите вверх по дереву просто и все. Наткнулись на x=20, его и используйте, не? Другой разговор, что name shadowing сам по себе может быть проблемой.

Проходить по дереву в обратном порядке до первого определения?

Ilya-Lakhin Автор вопроса
Dmitry Solomennikov
Идите вверх по дереву просто и все. Наткнулись на ...

А как я пойму, что нужно что-то перерасчитывать в атрибуте, связанным с x + 2, если изменение в коде произошло где-то сильно посередине?

Ilya Lakhin
А как я пойму, что нужно что-то перерасчитывать в ...

Надо различать разбор и исполнение. На исполнении есть переменная х? Если да, то какая разница, где она определена? Просто ссылаетесь на нее и все. Будет это таблица имен или нет, неважно. Ну, если я вопрос осилил корректно.

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Карта сайта