Oberon space
General Category => Общий раздел => Тема начата: vlad от Февраль 04, 2014, 05:53:31 am
-
Чего-то мне воображение рисует какие-то сложные схемы. Особенно для случая вызова внешних процедур (level - n) из локальных. Кто-нибудь разбирался как оно по Вирту должно быть?
-
Передача во вложенную функцию неявным параметром указателя на стек объемлющей функции не подойдёт?
-
Передача во вложенную функцию неявным параметром указателя на стек объемлющей функции не подойдёт?
Да, наверное можно. У меня просто подсознаетельно ощущение, что это не будет работать из-за привычки, что функция всегда может быть вызвана откуда угодно по указателю. А тут похоже все строго - начало стека всех объемлющих процедур всегда можно вычислить имея указатель на стек родительской.
-
Передача во вложенную функцию неявным параметром указателя на стек объемлющей функции не подойдёт?
Да, наверное можно. У меня просто подсознаетельно ощущение, что это не будет работать из-за привычки, что функция всегда может быть вызвана откуда угодно по указателю. А тут похоже все строго - начало стека всех объемлющих процедур всегда можно вычислить имея указатель на стек родительской.
Ну, поскольку вложенные процедуры никуда передавать нельзя, то и проблемы нет :-) (что, впрочем, делает оные процедуры много менее полезными чем могли бы быть)
-
Если ввести параметры-процедуры с обязательным неявным указателем, значения которых нельзя присваивать, то ограничение на передачу можно обойти. Слишком мудрённо это для Оберона.
-
Если ввести параметры-процедуры с обязательным неявным указателем, значения которых нельзя присваивать, то ограничение на передачу можно обойти. Слишком мудрённо это для Оберона.
Вот здесь я как раз забуксовал. Одного связанного параметра мало - из-за возможности рекурсивного вызова. Или это будет параметр-указатель на некую стековую структуру, которая модифицируется в процессе рекурсивного вызова объемлющих процедур. Получается сложно и неочевидно. Уж лучше от классических замыканий плясать, если хочется чего-то большего.
-
Если ввести параметры-процедуры с обязательным неявным указателем, значения которых нельзя присваивать, то ограничение на передачу можно обойти. Слишком мудрённо это для Оберона.
Одного связанного параметра мало
Хотя не - еще раз прокрутил, вроде должно работать просто с одним параметром - указателем на стек объемлющий процедуры.
-
Кто-нибудь разбирался как оно по Вирту должно быть?
А чем не устраивает описание реализации от самого Вирта? "Построение компиляторов", гл. 12.
-
А чем не устраивает описание реализации от самого Вирта? "Построение компиляторов", гл. 12.
Ага, это оно, спасибо!