LINUX.ORG.RU

История изменений

Исправление no-such-file, (текущая версия) :

И зачем для этого два прохода?

Я там немного не в тему ответил. Два прохода нужно чтобы сначала собрать все декларации, построить табличку локальных переменных. А во втором проходе уже по этой табличке генерится пролог и дальше код.

Достаточно хранить при чтении функции одну структуру фрейма, и корректировать ее при появлении новых переменных

У тебя результат компиляции пишется на ленту. Пролог ты как потом собрался впихнуть? Придётся компилять во внутренний буфер, а это дорого. Если есть место под буфер можно тупо прочитать исходник и компилять в два прохода. Чуда не получилось.

Все равно придется, см goto

Смотри выше.

Исправление no-such-file, :

И зачем для этого два прохода?

Я там немного не в тему ответил. Два прохода нужно чтобы сначала собрать все декларации, построить табличку локальных переменных. А во втором проходе уже по этой табличке генерится пролог и дальше код.

Достаточно хранить при чтении функции одну структуру фрейма, и корректировать ее при появлении новых переменных

У тебя результат компиляции пишется на ленту. Пролог ты как потом собрался впихнуть? Придётся компилять во внутренний буфер, а это дорого. Если есть место под буфер можно тупо прочитать исходник и компилять в два прохода. Чуда не получилось.

Исходная версия no-such-file, :

И зачем для этого два прохода?

Я там немного не в тему ответил. Два прохода нужно чтобы сначала собрать все декларации, построить табличку локальных переменных. А во втором проходе уже по этой табличке генерится пролог и дальше код.

Достаточно хранить при чтении функции одну структуру фрейма, и корректировать ее при появлении новых переменных

У тебя результат компиляции пишется на ленту. Пролог ты как потом собрался впихнуть? Придётся компилять во внутренний буффер, а это дорого. Если есть место под буфер можно тупо прочитать исходник и компилять в два прохода. Чуда не получилось.