Да, в основном это дерево разбора. Но его можно сократить на треть и больше, надо только подумать к чему приведёт удаление некоторых полей. Есть и другие мысли по поводу оптимизации дерева, в том числе использование промежуточного кода. Таблица имён действительно занимает копейки, килобайт 100, но это полная, хранить можно только видимые.
Кроме констант, переменных и процедур есть ещё таблица типов. Andrew771, какие типы поддерживает или будет поддерживать создаваемый компилятор? Указатели, массивы, структуры, указатели на структуры, многомерные массивы указателей на структуры...? У меня заложена поддержка всего этого, а ещё поддержка модулей, процедурных и файловых типов, полиморфных и inline-процедур, переопределение операторов, умная линковка, условная компиляция {$IFDEF}...{$ENDIF}, и сам уже не помню что ещёВсё это требует памяти. К генерации кода по ходу разбора может потом и вернусь, но только для того чтобы всё-таки запустить это в 64 килобайтах
![]()





Всё это требует памяти. К генерации кода по ходу разбора может потом и вернусь, но только для того чтобы всё-таки запустить это в 64 килобайтах
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
