Цитата Сообщение от Andrew771 Посмотреть сообщение
До сих пор не вкурю, какие-такие огромные данные ты собираешь хранить? Дерево разбора? Библиотеки процедур?
У меня в создаваемом компиляторе в памяти формируется только таблица констант, переменных и имен процедур, с несколькими параметрами. Занимает копейки. А код генерируется по-ходу.
Да, в основном это дерево разбора. Но его можно сократить на треть и больше, надо только подумать к чему приведёт удаление некоторых полей. Есть и другие мысли по поводу оптимизации дерева, в том числе использование промежуточного кода. Таблица имён действительно занимает копейки, килобайт 100, но это полная, хранить можно только видимые.

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