Mazdaywik / Refal-05

Очень минималистичный компилятор Рефала
https://mazdaywik.github.io/Refal-05/
Other
4 stars 3 forks source link

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

Closed Mazdaywik closed 6 years ago

Mazdaywik commented 6 years ago

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

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

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

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

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

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

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

Mazdaywik commented 6 years ago

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

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