Mazdaywik/Refal-05

Генерация результатного выражения

Closed this issue · 1 comments

Эта задача — подзадача для #8.

Предлагается сделать примерно так, как это сделано сейчас в Модульном Рефале. Распределяемые объекты (скобки, символы, копии переменных) последовательно размещаются в списке свободных узлов. Для переносимых переменных сохраняется позиция после вставляемого элемента.

Преимущества:

  • скорее всего, упростится генерация кода,
  • не потребуется запоминать позиции для создаваемых символов и копий переменных,
  • возможно повышение быстродействия (но нам это не важно).

Недостатков явных не видно.

Как и раньше, выполнение предложения состоит из трёх фаз:

  1. сопоставление с образцом,
  2. распределение памяти,
  3. построение результата.

Фазы и их инварианты сохраняются.

При решении задачи #16 имеет смысл сразу объявить функции аллокации как возвращающие void. Но тогда перестанет работать сгенерированный код, который присваивает указателям выделенную память.

Так что, наверное, имеет смысл изменить генерацию результата раньше.