среда, 2 декабря 2015 г.

#1126. Печать стека после вычисления значения выражения. Используем Log вместо Print. Только код

Код:

UNIT DumpStack.ms.dict

USES
 io.ms.dict
;

: DumpStack
 ^ IN aLambda

 %SUMMARY 'Печатает состояние стека после вычисления выражения aLambda' ;

 INTEGER VAR l_StackLevel
 %REMARK 'Уровень стека'

 StackLevel >>> l_StackLevel
 l_StackLevel Log

 aLambda DO
 %REMARK 'Вычисляем выражение aLambda. Оно может положить на стек "сколько угодно" значений'

 StackLevel l_StackLevel - >>> l_StackLevel
 %REMARK 'Вычисляем приращение стека'
 l_StackLevel Log

 l_StackLevel >= 0 ?ASSURE 'Приращение стека не может быть отрицательным'

 while ( l_StackLevel > 0 )
 begin
  Dec l_StackLevel
  l_StackLevel Log
 end // while ( l_StackLevel > 0 ) 
 
; // DumpStack

Комментариев нет:

Отправить комментарий