2015-04-02 5 views
2

В соответствии с PLRM это не имеет значения, в каком порядке вы выполняете FORALL на Dict:PostScript FORALL на словарях

(стр. 597) FORALL выталкивает ключ и значение в стек операндов и выполняет прок для каждой пары ключ-значение в словаре

...

(стр. 597) порядок, в котором FORALL перебирает записи в словаре произвольно. Новые записи, помещенные в словарь во время выполнения proc, могут быть включены или не включены в перечисление. Существующие записи, удаленные из словаря proc, не будут встречаться позже в перечислении.

Теперь я выполнял код:

/d 5 dict def 
d /abc 123 put 
d { } forall 

Мой вывод (стек операндов) является:

--------top- 
/abc 
123 
-----bottom- 

Выход Ghostscript и PLRM (стек операндов) является:

--------top- 
123 
/abc 
-----bottom- 
  1. D oes действительно не имеет значения, в каком порядке вы обрабатываете пары ключ-значение dict?
  2. в стеке, вам сначала нужно нажать значение, а затем клавишу, или вам нужно сначала нажать клавишу? (поскольку PLRM говорит только о «ключе и значении», но не сообщает вам ничего о заказе).

Заранее спасибо

ответ

4

Это, вероятно, поможет, если вы процитировали номер страницы qhen вы цитируете секции из PLRM, его трудно увидеть, где вы получаете это от.

При выполнении forall порядок, в котором forall перечисляет словарь пары произволен, вы не имеете никакого влияния на него. Однако forall всегда выталкивает ключ, а затем значение. Даже если это подразумевается в тексте, который вы (не совсем) цитируете, вы можете видеть из примера в операторе forall, что это случай hte.

Когда вы говорите «мой вывод», вы имеете в виду, что вы пишете собственный интерпретатор PostScript? Если это так, то ваш вывод неверен, при нажатии пары ключ/значение сначала нажата клавиша.

+0

Я добавил номер страницы. Из текста, который я видел, мне было непонятно. «ключ и значение в стеке операндов». на самом деле не говорит, что это всегда первый ключ. Примером может служить пример, когда ключ был первым, но не говорит о том, возможно ли значение в первую очередь или нет. Это «глупые» детали, но я хочу быть на это 100% уверен, поэтому вопрос. Да, я работаю над своим собственным переводчиком :) – juFo

+1

Ну, удачи в этом, его мамонтовая задача ...... Может быть, вам следует сотрудничать с Luser droog. FWIW всякий раз, когда операция словаря приводит к парам в стеке, ключ всегда нажимается первым. – KenS

+0

Я видел, что Luser droog также занят некоторыми постскриптумами, основываясь на его ответах здесь на SO :-) – juFo

 Смежные вопросы

  • Нет связанных вопросов^_^