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

Какую структуру данных лучше всего использовать для symtable? Находил разные

варианты и с хэш таблицами и с деревьями и со стеком. Symtable если что для scheme. И ещё вопрос, я правильно понимаю, что нужно создавать ее отдельным проходом по аст, а не во время парсинга?

26 ответов

13 просмотров

Зависит от языка. Есть языки где парсинг от таблицы символов зависит, например все семейство Си-подобных языков

Mar Ort
Зависит от языка. Есть языки где парсинг от таблиц...

Ну меня как я сказал сейчас интересует схема

Для учебного интерпретатора — любую, хоть список пар. Берите стандартный BTreeMap или HashMap.

пошукач 🥝
а в каких не зависит?

в js например не зависит

Впрочем, если Вы спрашиваете про Symtable для реализации Environment, то нужно будет реализовать корректный name shadowing, т.е. всё равно стек в той или иной форме.

Просто хочется ознакомиться с best practice, не вижу в этом ничего плохого

oleja ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Просто хочется ознакомиться с best practice, не ви...

Брать структуры данных из стандартной библиотеки — best of the best practices. 👍

Alexander Chichigin
Брать структуры данных из стандартной библиотеки —...

А что насчёт момента создания symtable? В моем примере

oleja ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
А что насчёт момента создания symtable? В моем при...

Начните с простого — хэш таблицы, если с ней возникнут проблемы то будет понятно в какую сторону ее доработать или на что лучше заменить

Mar Ort
Начните с простого — хэш таблицы, если с ней возни...

Я уже понял, ее и возьму, нужно только разобраться с затенением

Mar Ort
организуйте из них стек

Из хэш таблиц? Как говорится все гениальное просто..

oleja ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Из хэш таблиц? Как говорится все гениальное просто...

ну да, когда входите в новый скоуп — пушите очередную таблицу в ваш стек, когда выходите — попаете. Поиск — сверху вниз (от текущего скоупа до корневого)

Только что насчёт этого, мне лично больше симпатичен второй вариант(отдельный проход по аст), но с другой стороны при парсинге это тоже не так трудно сделать, так как будет лучше? P.S. scheme (r7rs)

oleja ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Только что насчёт этого, мне лично больше симпатич...

Я бы сначала сделал отдельно, если окажется что оно достаточно органично объединяется и в этом есть какой-то смысл (например код станет проще) то смержите

Mar Ort
ну да, когда входите в новый скоуп — пушите очеред...

Тут ловушка есть (ну или соблазн). До генерации эти таблицы дожить должны в большинстве случаев, не будет выталкивания здесь, кмк. А потому стек может быть не очень уместен. Но это сильно зависит от стратегии обработки скоупов.

Dmitry Solomennikov
Тут ловушка есть (ну или соблазн). До генерации эт...

Оставьте человеку хоть что-то на самому подумать :)

oleja ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Только что насчёт этого, мне лично больше симпатич...

Вообще, напишите как-нибудь, а потом за учебники засядете, станет и проще, и интереснее

Dmitry Solomennikov
Тут ловушка есть (ну или соблазн). До генерации эт...

А можно пример, где окружение нужно при кодогененрации? Или вы про область видимости C/C++?

Василий
А можно пример, где окружение нужно при кодогененр...

Вложенные циклы с именованными метками, вложенные функции, если правильно помню, требовали живых таблиц имен на генерации.

Василий
А можно пример, где окружение нужно при кодогененр...

Вынос переменной цикла, генерация условий и т.д. Довольно много вообще требовало наличия и скоупов, и имён

Alexander Chichigin
Для учебного интерпретатора — любую, хоть список п...

Понятно, что ключами хранить идентификаторы, но какие метаданные хранить нужно в значении? Я видел пример игрушечного интерпретатора на расте, там хранили значение при инициализации, но мне кажется это не то, да и схема не статически типизируемая, чтобы хранить тип, не будет ли достаточно просто вектора при анализе?

oleja ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Понятно, что ключами хранить идентификаторы, но ка...

Не понял вопроса... Тип в Схеме — часть значения, там будет в духе Fixnum(1234). Так что хранить нужно только значения, не знаю кому какая метаинформация и зачем нужна...

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

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

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