В своей внутренней памяти интерпретатор PostScript поддерживает несколько структур данных. Большинство команд сценария выполняются в стеке операндов, в котором могут содержаться числа, процедуры, массивы и другие типы объектов. Для того чтобы протолкнуть число в стек операндов, в сценарии просто пишется это число. В следующем фрагменте сценария

34 -5.2 % push 34 then -5.2 onto the stack

% в стек проталкивается сначала 34. а затем -5.2

12 % push 12 on top

% в вершину проталкивается 12

вначале в стек проталкивается число 34, затем -5,2 проталкивается выше 34, и наконец в вершину проталкивается 12. На рис. Г.1 показан стек в виде классического штабеля подносов в кафетерии:

1 См., например, http://www.engin.umd.umich.edu/CIS/course.des/cis400/forth/forth.html, а также книгу Лео Броди «Основы FORTH* [Brodie, Leo/Forth, INC., Starling FORTH, 2d ed. (Engleuood Cliffs, NJ: Prentice-Hall, 1987)].

1004

Приложение Г. Введение в PostScript® по мере того как каждый элемент (item) помещается на вершину, он проталкивает все остальные элементы дальше вниз. х

Мы используем более простую форму записи для иллюстрации того, что содержится в стеке после данной операции: стек показан «сбоку», причем его вершина находится справа. Тогда последовательность проталкиваний, показанная на рис. Г.1, выглядит следующим образом:

<empty> (meaning the stack is empty)

(подразумевается, что стек пуст)

34 -5.2 34 -5.2 12

Г1.3. Некоторые операции со стеком: pop, dup, exch, clear

Существует несколько операторов языка PostScript, называемых «командами», с помощью которых можно легко управлять стеком. Например, команда pop удаляет верхний элемент (и отбрасывает его), поэтому последовательность команд:

34 -5.2 12 pop

оставляет стек в состоянии 34 -5.2.

Мы будем использовать стрелку вправо (-») в качестве стенографического символа вместо слов «оставляет стек в состоянии», тогда команда pop может быть описана так:

34 -5.2 12 pop -* 34 -5.2

Запись будет выглядеть еще короче, если пропускать те элементы, которые находятся глубже в стеке и не влияют на рассматриваемый оператор (то есть числа 34 и -5.2), тогда команда pop будет выглядеть следующим образом:


⇐ Предыдущая| |Следующая ⇒