Исправление no-such-file, (текущая версия) :
И зачем для этого два прохода?
Я там немного не в тему ответил. Два прохода нужно чтобы сначала собрать все декларации, построить табличку локальных переменных. А во втором проходе уже по этой табличке генерится пролог и дальше код.
Достаточно хранить при чтении функции одну структуру фрейма, и корректировать ее при появлении новых переменных
У тебя результат компиляции пишется на ленту. Пролог ты как потом собрался впихнуть? Придётся компилять во внутренний буфер, а это дорого. Если есть место под буфер можно тупо прочитать исходник и компилять в два прохода. Чуда не получилось.
Все равно придется, см goto
Смотри выше.
Исправление no-such-file, :
И зачем для этого два прохода?
Я там немного не в тему ответил. Два прохода нужно чтобы сначала собрать все декларации, построить табличку локальных переменных. А во втором проходе уже по этой табличке генерится пролог и дальше код.
Достаточно хранить при чтении функции одну структуру фрейма, и корректировать ее при появлении новых переменных
У тебя результат компиляции пишется на ленту. Пролог ты как потом собрался впихнуть? Придётся компилять во внутренний буфер, а это дорого. Если есть место под буфер можно тупо прочитать исходник и компилять в два прохода. Чуда не получилось.
Исходная версия no-such-file, :
И зачем для этого два прохода?
Я там немного не в тему ответил. Два прохода нужно чтобы сначала собрать все декларации, построить табличку локальных переменных. А во втором проходе уже по этой табличке генерится пролог и дальше код.
Достаточно хранить при чтении функции одну структуру фрейма, и корректировать ее при появлении новых переменных
У тебя результат компиляции пишется на ленту. Пролог ты как потом собрался впихнуть? Придётся компилять во внутренний буффер, а это дорого. Если есть место под буфер можно тупо прочитать исходник и компилять в два прохода. Чуда не получилось.