Дело в том, что существует позиция в схеме алгоритма, которая указывает на текущую команду. По этому можно удалять любую часть алгоритма, кроме той, в которой находится текущая команда удаления. Именно для решения этой проблемы существует Spirit(), который само удаляется, как одна команда, сразу после своего исполнения.
Перед запуском каждая функция проходит путь: текст -> дерево -> схема алгоритма. Последняя исполняется интерпретатором. А потом проходит обратный путь преобразований. Так, что изменения в схеме, будут видны в тексте программы.
Здесь я видимо должен уточнить. Интерпретатор позволяет алгоритму вмешиваться в себя, прямо в процессе работы.
И ничего перекомпилировать ненужно. Алгоритмы могут анализировать себя как схему алгоритма а не как текст/код программы.
И ничего перекомпилировать ненужно. Алгоритмы могут анализировать себя как схему алгоритма а не как текст/код программы.