页面描述语言与格式-第二章_第1页
页面描述语言与格式-第二章_第2页
页面描述语言与格式-第二章_第3页
页面描述语言与格式-第二章_第4页
页面描述语言与格式-第二章_第5页
已阅读5页,还剩136页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021/8/141页面描述语言与格式PostScript & PDF甘朝华2021/8/142第二章 PostScript语言的基本特点 ASCII ASCII编码与注释表示编码与注释表示 数据类型与对象数据类型与对象 PostScript PostScript程序的执行环境程序的执行环境 PostScript PostScript对象的执行方式对象的执行方式 早期名字联编的概念与具体实现早期名字联编的概念与具体实现 常用操作符常用操作符 PostScript PostScript资源、函数和过滤器资源、函数和过滤器2021/8/143 语法语法、数据类型数据类型和和执行语义执行语义

2、是任何一个是任何一个 PostScript程序的三个基本方面,加上以后章程序的三个基本方面,加上以后章节中描述的节中描述的PostScript语言的图形、图像和文语言的图形、图像和文字功能,使得字功能,使得PostScript语言能够胜任控制打语言能够胜任控制打印页面处理的任务。印页面处理的任务。 本章主要介绍本章主要介绍PostScript语言作为通用程语言作为通用程序设计语言的特点,序设计语言的特点,PostScript语言吸收了其语言吸收了其他几种优秀程序设计语言的元素与思想。采用他几种优秀程序设计语言的元素与思想。采用 “前缀前缀”表示法,即操作数在前,操作符在后。表示法,即操作数在前

3、,操作符在后。2021/8/144 尽管尽管PostScript语言内置的操作符很多,语言内置的操作符很多,但操作符的名字在语言中并不是固定的,在但操作符的名字在语言中并不是固定的,在PostScript程序中可通过程序中可通过重定义重定义的方法来改变的方法来改变操作符的含义。操作符的含义。 数据类型包括一些在许多现代程序设计语数据类型包括一些在许多现代程序设计语言中都有的元素,如数值、串和数组,同时还言中都有的元素,如数值、串和数组,同时还能够能够把程序作为数据进行处理把程序作为数据进行处理,以及,以及控制语言控制语言执行状态执行状态许多方面,这些方法来源于许多方面,这些方法来源于 LISP

4、等等其他程序设计语言。其他程序设计语言。2021/8/145 PostScript语言语言语法比较简单语法比较简单,而,而功能非功能非常强大常强大。 它的强大功能来自于它能够它的强大功能来自于它能够不受任何限制不受任何限制地 以 任 意 方 式 组 合 它 的 各 项 特 征地 以 任 意 方 式 组 合 它 的 各 项 特 征 。 利 用。 利 用 PostScript 语言的这些功能人们可以设计出复语言的这些功能人们可以设计出复杂的图形应用程序,否则这些程序很难甚至不杂的图形应用程序,否则这些程序很难甚至不可能用于创造复杂图形。可能用于创造复杂图形。2021/8/146本章将系统地介绍本章

5、将系统地介绍 PostScript 语言作为通用程语言作为通用程序设计语言的每个方面:序设计语言的每个方面:语法语法 数据类型数据类型执行语义执行语义内存组织内存组织简要介绍文件输入和输出简要介绍文件输入和输出命名资源命名资源过滤器文件过滤器文件 2021/8/1472.12.1 ASCII ASCII编码与注释表示编码与注释表示 PostScript语言有三种编码方式:语言有三种编码方式:ASCII、二进制标记和二进制对象序列。二进制标记和二进制对象序列。 ASCII编码容易读且不依赖于通信应用中编码容易读且不依赖于通信应用中所保留的特殊字符,它适用于阐述目的、存储所保留的特殊字符,它适用于

6、阐述目的、存储文件及各种通信设备间的信息传递。文件及各种通信设备间的信息传递。 两种二进制编码则采用较少字符的二进制两种二进制编码则采用较少字符的二进制标记或压缩方法来表示标记或压缩方法来表示 PostScript 对象,常应对象,常应用在控制环境中用于改善程序表示或执行的效用在控制环境中用于改善程序表示或执行的效率。率。 在任何一个在任何一个 PostScript 程序中,这三种编程序中,这三种编码方式可混合使用。码方式可混合使用。2021/8/1482.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码: ASCII是是American Standard C

7、ode for Information Interchange的简称。这是一种广的简称。这是一种广泛采用的用于表示二进制数据的编码方式,它泛采用的用于表示二进制数据的编码方式,它由一套标准的字符集组成。由一套标准的字符集组成。 用于用于PostScript程序程序ASCII编码表示的标准编码表示的标准字符集包括字符集包括大写和小写的大写和小写的26个英文字母、个英文字母、10个个数字数字和和特殊符号特殊符号等所有可打印字符,以及等所有可打印字符,以及空格空格、 制表符制表符、回车回车和和换行符换行符等等“空白空白”字符字符 。2021/8/1492.12.1 ASCII ASCII编码与注释表

8、示编码与注释表示ASCII 编码:编码: PostScript程序使用的程序使用的ASCII字符。字符。 依据作用分成三类:依据作用分成三类:空白字符空白字符特殊字符特殊字符注释注释2021/8/14102.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码: 空白字符空白字符空白字符的作用是用于分隔其他语法实体空白字符的作用是用于分隔其他语法实体2021/8/14112.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码: 特殊字符特殊字符 特殊字符是指特殊字符是指“(”、“)”、“”、“”、“”、“”、“”、“”、“/”和和“

9、%”。 它们用来分隔语法实体,如串、数组、过它们用来分隔语法实体,如串、数组、过程、词典、具字面属性的名字、注释。程、词典、具字面属性的名字、注释。 任何一个特殊字符都表示位于它们之前的任何一个特殊字符都表示位于它们之前的实体已经结束。实体已经结束。2021/8/14122.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码: 注释注释 在任何一个计算机语言程序中,为了增加在任何一个计算机语言程序中,为了增加程序的可读性,通常在程序中添加注释。程序的可读性,通常在程序中添加注释。PostScript程序中的注释由特殊字符程序中的注释由特殊字符“%”引导,引导,并

10、以新行符结束。并以新行符结束。注释不对程序的结果起任何作用注释不对程序的结果起任何作用%example1.ps /nx l def %定义定义 nx 的值为的值为 1 nx 4 add %nx+4=5 = %把刚才的计算结果输出到标准输出文件中把刚才的计算结果输出到标准输出文件中2021/8/14132.22.2 数据类型与对象数据类型与对象概述:概述: 当一个扫描程序扫描当一个扫描程序扫描PostScript语言程序语言程序正文的时候能产生各种不同类型的正文的时候能产生各种不同类型的PostScript对象,如数值、串和过程。对象,如数值、串和过程。2021/8/14142.22.2 数据类

11、型与对象数据类型与对象概述:概述:对象的概念与特点对象的概念与特点 在在PostScript程序中,所有可被程序中,所有可被PostScript解释器访问的数据均称为解释器访问的数据均称为PostScript对象对象。 对象的产生对象的产生: 通过扫描程序产生通过扫描程序产生 PostScript 对象并由解对象并由解释器执行;释器执行; 由由PostScript操作符产生、管理和撤消。操作符产生、管理和撤消。 对象的构成三要素对象的构成三要素:一个类型、某些属性、一个值。一个类型、某些属性、一个值。 对象的类型是对象对象的类型是对象本身所固有的特性本身所固有的特性,与,与该对象的存放地点和如

12、何描述无关。该对象的存放地点和如何描述无关。2021/8/14152.22.2 数据类型与对象数据类型与对象概述:概述:对象的概念与特点对象的概念与特点 PostScript所支持的所有对象类型包所支持的所有对象类型包括名字、布尔型、整数和实数、串、数组、括名字、布尔型、整数和实数、串、数组、词典、过程、操作符、标记、空、词典、过程、操作符、标记、空、Save对对象,象,FontID 文件、图形状态文件、图形状态(gstate)、压、压缩数组等。缩数组等。2021/8/14162.22.2 数据类型与对象数据类型与对象概述:概述:对象分类对象分类 PostScript 对象的类型多种多样,根据

13、各对象的类型多种多样,根据各对象三要素是否结合在一起的特点不同,把对象三要素是否结合在一起的特点不同,把PostScript对象分成两大类:对象分成两大类:简单对象简单对象和和复合复合对象对象。 简单对象简单对象是指本身不能再分解成更多对象是指本身不能再分解成更多对象的的 PostScript 对象。对象。 无子结构、三要素结合在一起,保存在无子结构、三要素结合在一起,保存在“操作数栈操作数栈”存储区域。存储区域。第三周2021/8/14172.22.2 数据类型与对象数据类型与对象概述:概述:对象分类对象分类 复合对象复合对象是指一些内部结构还可再细分为是指一些内部结构还可再细分为一个或多个

14、一个或多个PostScript对象的对象。对象的对象。 有可见的内部子结构、可有选择地对它们有可见的内部子结构、可有选择地对它们进行修改;其值与类型、属性分开存储在内存进行修改;其值与类型、属性分开存储在内存的不同地方,其中的不同地方,其中值存放在存储器的一个称为值存放在存储器的一个称为“虚存虚存”的特殊区域的特殊区域中,而中,而对象本身则存放在对象本身则存放在操作数栈操作数栈中。中。2021/8/14182.22.2 数据类型与对象数据类型与对象概述:概述:对象分类对象分类简单对象和复合对象最重要的区别简单对象和复合对象最重要的区别就在于复制对象时所产生的就在于复制对象时所产生的结果不一样:

15、结果不一样:(abc) (abc) 1 (d) put(abc) dup 1 (d) put(abc) (abc) 两个不同的串两个不同的串(abc) dup 一个串的两个拷贝一个串的两个拷贝2021/8/14192.22.2 数据类型与对象数据类型与对象概述:概述:对象分类对象分类2021/8/14202.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性: 每一个每一个PostScript对象都有对象都有一个或多个一个或多个属属性。性。 在执行对象或对对象进行某个特定操作时在执行对象或对对象进行某个特定操作时 这些属性将影响操作所产生的结果。这些属性将影响操作所产生的结果。 在把

16、对象严格地作为数据处理时,对象的在把对象严格地作为数据处理时,对象的属性又不影响对其进行操作所产生的结果(如,属性又不影响对其进行操作所产生的结果(如,变量的变量的名字名字与与值值)。)。2021/8/14212.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:字面属性和可执行属性字面属性和可执行属性 每一个对象每一个对象至少有至少有一个属性。一个属性。 字面属性字面属性或或可执行属性可执行属性。(1)整型、实型、字符串、数组、词典均只)整型、实型、字符串、数组、词典均只具有字面属性,均被当作数据压入操作数栈;具有字面属性,均被当作数据压入操作数栈;(2)如果名字对象以)如果名字

17、对象以“/”开始,则该名字具有开始,则该名字具有字面属性,否则具有可执行属性;字面属性,否则具有可执行属性;(3)过程和操作符都只具有可执行属性。)过程和操作符都只具有可执行属性。2021/8/14222.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:字面属性和可执行属性字面属性和可执行属性(1)执行一个可执行的名字,将导致在当前)执行一个可执行的名字,将导致在当前词典(缺省为用户词典)的上下文中查找该名词典(缺省为用户词典)的上下文中查找该名字,并执行其相应的值;字,并执行其相应的值;(2)执行一个可执行的操作符就完成一次内)执行一个可执行的操作符就完成一次内部动作;部动作;

18、(3)执行一个可执行的过程对象,就使得过)执行一个可执行的过程对象,就使得过程中的元素依次被执行。程中的元素依次被执行。执行一个对象的含义依赖于对象的类型和属性执行一个对象的含义依赖于对象的类型和属性2021/8/14232.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:存取属性存取属性 对象的另外一个属性是存取属性,只有复对象的另外一个属性是存取属性,只有复合对象才具有存取属性。合对象才具有存取属性。 该属性用于限制对对象值的操作,共有以该属性用于限制对对象值的操作,共有以下四种:下四种:1、无限制属性、无限制属性2、只读属性、只读属性3、只执行属性、只执行属性4、空、空 -

19、 无直接用处无直接用处2021/8/14242.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:存取属性存取属性 属性是对象自身的特性而不是其值的特性:属性是对象自身的特性而不是其值的特性: 两个复合对象能够共享同一个值但可以具两个复合对象能够共享同一个值但可以具有不同的字面属性与可执行属性或存取属性;有不同的字面属性与可执行属性或存取属性; 词典对象的存取属性是其值的特性,所以词典对象的存取属性是其值的特性,所以共享一个值的多个词典对象有同样的存取属性。共享一个值的多个词典对象有同样的存取属性。2021/8/14252.22.2 数据类型与对象数据类型与对象PostScript

20、对象详述:对象详述:简单对象简单对象数值数值:整数和实数:整数和实数整数整数60、-80、0、+12、8998实数实数0.3、-90、1.0、0.0进制表示:进制表示:base#number(其中,(其中,base为为236,number是是base进制中的基础数值,它必须是由进制中的基础数值,它必须是由值在值在0base-1之间的数字组成,大于之间的数字组成,大于9的数字用的数字用字母字母“AZ”(或(或“az”)来表示)。)来表示)。八进制数八进制数 8#1675十六进制数十六进制数 16#ADFF二进制数二进制数 2#10102021/8/14262.22.2 数据类型与对象数据类型与对

21、象PostScript对象详述:对象详述:简单对象简单对象名字名字:变量,用于表示名字对象的标识符可由:变量,用于表示名字对象的标识符可由任何常规字符组成。任何常规字符组成。如,如,9A4、B7、2-9B、4.A、$、a.b、$MyDict、pattern对于名字对象来说,它本身并没有值,但却可对于名字对象来说,它本身并没有值,但却可以与词典中的值相对应,构成一个关键字与值以与词典中的值相对应,构成一个关键字与值对。与名字对象相对应的值可以是任意的对。与名字对象相对应的值可以是任意的 PostScript 对象。对象。例如,例如,/nx1 1 def 表示字面属性的名字表示字面属性的名字nx1

22、,它与用户词典中的数值它与用户词典中的数值 1 对应对应2021/8/14272.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象操作符操作符:操作符对象代表着:操作符对象代表着PostScript语言的语言的内部操作,执行一个操作符对象便是激活一个内部操作,执行一个操作符对象便是激活一个内部操作,操作符对象相当于一个特殊的名字内部操作,操作符对象相当于一个特殊的名字对象对象 它与系统词典中的某一个值相对应,其值它与系统词典中的某一个值相对应,其值对应于一种内部操作对应于一种内部操作。比如,比如,add操作符:两个数值相加操作符:两个数值相加202

23、1/8/14282.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象布尔型(布尔型(boolean):与其他计算机语言一样与其他计算机语言一样 PostScript语言也提供了布尔对象语言也提供了布尔对象,其值分别为其值分别为 true和和false系统词典中的名字对象系统词典中的名字对象true和和false所对应的值便是这两个布尔对象。所对应的值便是这两个布尔对象。布尔对象通常也是关系操作符或逻辑操作符的布尔对象通常也是关系操作符或逻辑操作符的运行结果,同时也可能是执行其他操作符后所运行结果,同时也可能是执行其他操作符后所返回的值。返回的值。布

24、尔对象一般用于条件表达式和布尔对象一般用于条件表达式和逻辑表达式中,逻辑表达式中,主要用作控制操作符主要用作控制操作符 if 或或 ifelse 的操作数的操作数2021/8/14292.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象空对象空对象(Null):PostScript 语言提供了一个称为语言提供了一个称为空的对象,该对象不含任何具体内容。空的对象,该对象不含任何具体内容。空对象只有一个值为空对象只有一个值为null名字对象,名字对象,null与系与系统词典中的空对象相对应。统词典中的空对象相对应。应用在:复合对象中的空位置或未初始化的

25、位应用在:复合对象中的空位置或未初始化的位置。置。大多数操作符不能以空对象作为其操作数。大多数操作符不能以空对象作为其操作数。2021/8/14302.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象标记标记(mark):标记是一个特殊对象,用于标记标记是一个特殊对象,用于标记操作数栈中的位置,它只有一个值,且总是通操作数栈中的位置,它只有一个值,且总是通过调用过调用mark、“”、“”这三个操作符来创建。这三个操作符来创建。2021/8/14312.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串

26、:PostScript语言中的串是一个复合对象,语言中的串是一个复合对象,它具有三种表示形式:由(和)括起来的字符它具有三种表示形式:由(和)括起来的字符正文串,通常用于正文串,通常用于保存正文保存正文;由;由括起来的括起来的用十六进制编码的数据描述的串;由用十六进制编码的数据描述的串;由括括起来的起来的 ASCII based85 编码数据构成的串。编码数据构成的串。2021/8/14322.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串:字符串字符串 除了特殊字符除了特殊字符“”、“(”、“)”以外以外的任何字符均可以作为的任何字符均可以

27、作为串元素串元素出现在串中,而出现在串中,而这三个特殊字符将用作其他的特殊目的。这三个特殊字符将用作其他的特殊目的。(This is a string with special char % # |) ( ) (It contains a string (hello) (This is a string n)2021/8/14332.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串:字符串字符串 “”用作用作“转义符转义符”,以满足一些特殊目,以满足一些特殊目的。例如一些的。例如一些不可打印的字符不可打印的字符,不配对的括号,不配对的括号或或“

28、” 字符本身字符本身如果紧跟如果紧跟“”字符后面的字符字符后面的字符不是表不是表 2-3 中所示情形中的某一种,中所示情形中的某一种,那么就忽略。那么就忽略。2021/8/14342.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串:十六进制编码串十六进制编码串 十六进制编码串是由十六进制编码串是由括起来的用十六括起来的用十六进制编码的数据描述的串,串中的内容是一组进制编码的数据描述的串,串中的内容是一组十六进制字符,即数字十六进制字符,即数字09和字母和字母AF(或(或af),其中的每两个十六进制数表示串中的),其中的每两个十六进制数表示串中

29、的一个字符。一个字符。字符的组合字符的组合从左到右从左到右进行,如果最后只剩下一进行,如果最后只剩下一个字符,则右边个字符,则右边补补 0 ;另外,存在于串中的空;另外,存在于串中的空格忽略不计。格忽略不计。 90、1f、30 ASCII值值:144、31、1632021/8/14352.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串:ASCII based85 编码串编码串 ASCII based85编码串由编码串由括起来的括起来的一串可打印的一串可打印的ASCII字符组成,这一编码方式字符组成,这一编码方式仅由仅由Level 2和和Lev

30、el 3支持,且通常用在过滤器支持,且通常用在过滤器中。中。2021/8/14362.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象数组数组: PostScript语言中的数组是可以语言中的数组是可以通过数值索通过数值索引引进行访问的对象的进行访问的对象的一维集合一维集合,由特殊字符,由特殊字符“” 和和“ ” 括起来表示。括起来表示。 数组对象不同于其他计算机语言中的数组,数组对象不同于其他计算机语言中的数组,其中的其中的数组元素可以具有不同的数据类型。数组元素可以具有不同的数据类型。即即数 组 对 象 中 所 包 含 的 元 素 可 以 是

31、任 何 的数 组 对 象 中 所 包 含 的 元 素 可 以 是 任 何 的PostScript对象对象 。120 abc (xyz) 150 4.0索引值从索引值从0开始开始如何表达多维数组?如何表达多维数组?2021/8/14372.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象过程过程: PostScript语言中的过程相当于其他计算机语言中的过程相当于其他计算机语言中的语言中的函数函数,它由特殊字符,它由特殊字符“”和和“”括起括起来表示,所有包含在来表示,所有包含在“”和和“”中的内容构成中的内容构成一个过程对象,如一个过程对象,如su

32、b 2 add。过程过程 与与 数组?数组?执行属性执行属性 与与 字面属性字面属性过程对象的过程对象的 推迟执行推迟执行?/result sub 2 add def /x 5 4 result def /x 3 1 result def2021/8/14382.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象词典词典: 由特殊字符由特殊字符“”和和“”括起来表示的一括起来表示的一种数据类型称为词典,包含在特殊字符中的内种数据类型称为词典,包含在特殊字符中的内容是成对的容是成对的PostScript对象,每一对对象,每一对PostScript对象又

33、分为对象又分为关键字关键字与与值值,其第一个,其第一个PostScript对象作为关键字,第二个对象作为关键字,第二个PostScript对象作为对象作为对应的值。对应的值。 关键字通常是有字面属性的名字对象,但关键字通常是有字面属性的名字对象,但也可以是除也可以是除 null 以外的所有以外的所有 PostScript 对象;对象;2021/8/14392.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象词典词典: 值则可以是任意值则可以是任意PostScript 对象。对象。1)系统词典()系统词典( Systemdict)2)全局词典)全局词

34、典 (Globaldict)3)用户词典)用户词典 (Userdict)2021/8/14402.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象词典词典: 访问字典的三种方法:访问字典的三种方法:(1)使用访问指定词典的操作符,词典名作)使用访问指定词典的操作符,词典名作为其操作数为其操作数 (2) 通过一些隐式地访问当前词典的操作符通过一些隐式地访问当前词典的操作符(3)解释器在执行程序过程中遇到可执行名)解释器在执行程序过程中遇到可执行名字对象时自动地去查找词典字对象时自动地去查找词典2021/8/14412.22.2 数据类型与对象数据类型

35、与对象PostScript对象详述:对象详述:复合对象复合对象文件文件: 文件是一个可读或可写的字符流,用于在文件是一个可读或可写的字符流,用于在PostScript解释器和它的环境之间进行数据的解释器和它的环境之间进行数据的递与交换,文件中的字符内容可以作为磁盘文递与交换,文件中的字符内容可以作为磁盘文件永久地存贮起来,也可以在件永久地存贮起来,也可以在 PostScript 程执程执行过程中动态生成并经由通信通道进行传递。行过程中动态生成并经由通信通道进行传递。2021/8/14422.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象其他对象其

36、他对象:压缩数组压缩数组一个普通数组的压缩表示一个普通数组的压缩表示标记标记save内存状态的快照,由内存状态的快照,由save和和restore创建管理。创建管理。FontID 用于构造字库的特殊对象用于构造字库的特殊对象gstate表示一个完整的图形状态表示一个完整的图形状态2021/8/14432.32.3 PostScript PostScript 程序的执行环境程序的执行环境 执行环境执行环境指的是指的是PostScript语言程序在执语言程序在执行过程中,其数据或对象的行过程中,其数据或对象的存取环境存取环境。 从从PostScript语言的角度把内存划分为四语言的角度把内存划分为

37、四大块:大块:堆栈堆栈、虚存虚存、标准输入输出文件标准输入输出文件及及图形图形状态状态。1、堆栈堆栈用于存放各种用于存放各种 PostScript 对象,同时,对象,同时,根据栈中存放对象的不同,把堆栈又细分为根据栈中存放对象的不同,把堆栈又细分为操操作数栈作数栈、词典栈词典栈、执行栈执行栈、图形状态栈图形状态栈与与裁剪裁剪路径栈路径栈;2、虚存虚存则是用于存放复合对象的值的一块存则是用于存放复合对象的值的一块存储区;储区;2021/8/14442.32.3 PostScript PostScript 程序的执行环境程序的执行环境3、标准输入输出文件标准输入输出文件是是PostScript程序

38、与用户程序与用户终端或另一台计算机进行实时数据与信息交换终端或另一台计算机进行实时数据与信息交换时的通讯信道;时的通讯信道;4、图形状态图形状态则是用于存放图形状态参数的一则是用于存放图形状态参数的一块内存空间,而图形状态参数是一组在光栅输块内存空间,而图形状态参数是一组在光栅输出设备上生成正文和图形时的控制参数(图形出设备上生成正文和图形时的控制参数(图形状态在页面图形描述部分进行介绍)。状态在页面图形描述部分进行介绍)。2021/8/14452.32.3 PostScript PostScript 程序的执行环境程序的执行环境 PostScript程序在执行之前拥有一个缺省程序在执行之前拥

39、有一个缺省的初始执行环境,在程序执行期间,其执行环的初始执行环境,在程序执行期间,其执行环境会随着程序执行的进程而发生变化。当一个境会随着程序执行的进程而发生变化。当一个 PostScript程序执行结束后,程序执行结束后,PostScript的执行的执行环境就恢复到默认状态,为下一个程序的执行环境就恢复到默认状态,为下一个程序的执行作准备。作准备。2021/8/14462.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈:堆栈: 堆栈堆栈是是PostScript语言程序执行时用于存语言程序执行时用于存放各类放各类PostScript对象的一块内存区域。对

40、象的一块内存区域。 PostScript解释器管理着五种不同的表示解释器管理着五种不同的表示PostScript程序执行状态的堆栈,即程序执行状态的堆栈,即操作数栈操作数栈、词典栈词典栈、执行栈执行栈、图形状态栈图形状态栈与与裁剪路径栈裁剪路径栈,这五种堆栈是相互独立的,而且对其中所存放这五种堆栈是相互独立的,而且对其中所存放的数据内容的使用方式也各不相同。的数据内容的使用方式也各不相同。“先进后出,后进先出先进后出,后进先出”2021/8/14472.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈:堆栈:操作数栈操作数栈 操作数栈用来保存各种用作操作数

41、的操作数栈用来保存各种用作操作数的PostScript对象以及某些操作符的对象以及某些操作符的执行结果执行结果。 操作数栈直接受当前所执行的操作数栈直接受当前所执行的PostScript程序的控制,栈中存放的各类程序的控制,栈中存放的各类PostScript对象对象可由多个操作符任意地可由多个操作符任意地压入压入和和弹出弹出。2021/8/14482.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈:堆栈:操作数栈操作数栈 执行程序过程:执行程序过程: 如果遇到的是具字面属性的如果遇到的是具字面属性的PostScript对对象,解释器就把该对象压入操作数栈

42、;当操作象,解释器就把该对象压入操作数栈;当操作符需要一个或多个操作数时,解释器就从操作符需要一个或多个操作数时,解释器就从操作数栈顶弹出一个或多个数栈顶弹出一个或多个PostScript对象以获取对象以获取这些操作数;当操作符返回一个或多个结果时这些操作数;当操作符返回一个或多个结果时 解释器就把它们依次压入到操作数栈顶。解释器就把它们依次压入到操作数栈顶。 在一个在一个PostScript程序执行的初始状态下程序执行的初始状态下 操作数栈中没有任何操作数栈中没有任何PostScript对象。对象。2021/8/14492.32.3 PostScript PostScript 程序的执行环境

43、程序的执行环境堆栈:堆栈:词典栈词典栈 词典栈只用于保存词典对象。词典栈中的词典栈只用于保存词典对象。词典栈中的当前词典为所有名字的定义与搜索提供了环境。当前词典为所有名字的定义与搜索提供了环境。 在程序执行的初始环境中,词典栈中从下在程序执行的初始环境中,词典栈中从下至上依次存放着三个标准词典,即至上依次存放着三个标准词典,即系统词典系统词典、全局词典全局词典和和用户词典用户词典,位于栈顶的用户词典是,位于栈顶的用户词典是缺省的当前词典。缺省的当前词典。 /a def2021/8/14502.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈:堆栈:执行栈

44、执行栈 执行栈用于保存可执行对象,主要是过程执行栈用于保存可执行对象,主要是过程对象和文件对象。对象和文件对象。 执行栈完全在解释器的控制之下,其中的执行栈完全在解释器的控制之下,其中的内容由解释器在执行程序的过程中压入或弹出,内容由解释器在执行程序的过程中压入或弹出,它能被它能被 PostScript 程序所阅读,但不能被修改。程序所阅读,但不能被修改。2021/8/14512.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈:堆栈: 对一个对一个PostScript对象的压入操作,简单对象的压入操作,简单对象和复合对象的具体作用结果不同:对象和复合对象

45、的具体作用结果不同:1、当一个简单对象被压入堆栈时,解释器便、当一个简单对象被压入堆栈时,解释器便从获得该对象的地方复制得到一个新对象,并从获得该对象的地方复制得到一个新对象,并把复制的对象压入相应的堆栈;把复制的对象压入相应的堆栈;2、当一个复合对象被压入堆栈时,则解释器、当一个复合对象被压入堆栈时,则解释器只复制该对象的类型和属性得到一个新对象,只复制该对象的类型和属性得到一个新对象,并将它压入到堆栈中,但新对象的值并不压入并将它压入到堆栈中,但新对象的值并不压入到堆栈中,而是与原对象共享相同在虚存中的到堆栈中,而是与原对象共享相同在虚存中的值。值。对于所有堆栈来说,对于所有堆栈来说,它们

46、各自所能容纳的对象数目它们各自所能容纳的对象数目是有限制的是有限制的2021/8/14522.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存: 我们所谓的我们所谓的“虚存虚存”一词,其含义不同于把一词,其含义不同于把硬盘空间当作内存使用而得到的硬盘空间当作内存使用而得到的“虚拟内存虚拟内存”,它是一块真正的内存它是一块真正的内存,只是从,只是从PostScript语言语言对该块内存区域使用角度的不同而命名为虚存。对该块内存区域使用角度的不同而命名为虚存。2021/8/14532.32.3 PostScript PostScript 程序的执行环境程

47、序的执行环境虚存:虚存:虚存的概念虚存的概念 复合对象存放在堆栈中,其值则存放在称复合对象存放在堆栈中,其值则存放在称为为“虚存虚存”的另一块内存区域中,由此可见虚的另一块内存区域中,由此可见虚存就是存放复合对象的值的一块内存区,通常存就是存放复合对象的值的一块内存区,通常可简写为可简写为 VM (Virtual Memory)。)。 (here is a string) 50 40 add 3 div2021/8/14542.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:VM 的申请方式的申请方式 由于虚存是复合对象值的存储区,所以创由于虚存是

48、复合对象值的存储区,所以创建一个复合对象就需要申请一块虚存空间用于建一个复合对象就需要申请一块虚存空间用于存放它的值。存放它的值。 通 常 , 虚 存 空 间 的 分 配 与 管 理 是 由通 常 , 虚 存 空 间 的 分 配 与 管 理 是 由PostScript语言程序控制的,每一复合对象的语言程序控制的,每一复合对象的值所需的空间可通过以下两种方式进行申请:值所需的空间可通过以下两种方式进行申请:1、直接在创建复合对象时由扫描程序隐式申、直接在创建复合对象时由扫描程序隐式申请;请;2、用操作符显式申请。、用操作符显式申请。操作符:操作符:array、Packedarray、dict、s

49、tring和和gstate和和、如,如,4 array 6 string 60 dict2021/8/14552.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:虚存分类虚存分类 根据存放在虚存中的值的存在期限的不同根据存放在虚存中的值的存在期限的不同 用于存放复合对象的虚存可分为用于存放复合对象的虚存可分为局部局部VM和和全全局局VM两种。两种。1、局部、局部VM:局部:局部VM用来存放那些只在程序用来存放那些只在程序执行过程的某一段时间内才使用的复合对象的执行过程的某一段时间内才使用的复合对象的值;值;对局部对局部VM的使用和修改操作的使用和修

50、改操作可由操作符可由操作符 save 和和 restore 封装起来封装起来2021/8/14562.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:虚存分类虚存分类2、全局、全局VM:全局:全局VM用于存放在程序的整个用于存放在程序的整个执行期间或一个结构化分区中(如一个页面)执行期间或一个结构化分区中(如一个页面)一直存在和使用的复合对象的值。一直存在和使用的复合对象的值。true setglobal /mydict 5 dict def /str1 (text) def false setglobal /str2 (text2) defmyd

51、ict /a str1 put mydict /b str2 put mydict /c 4 put2021/8/14572.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧 save操作符为局部操作符为局部VM中的内容拍一张快中的内容拍一张快照,它返回一个代表这张快照的照,它返回一个代表这张快照的save对象;对象;restore操作符使局部操作符使局部VM中的内容恢复到由它中的内容恢复到由它所对应的前一个所对应的前一个save所保存的快照内容,这两所保存的快照内容,这两

52、个操作符必须成对使用。个操作符必须成对使用。 restore操作符的具体作用表现为以下四个操作符的具体作用表现为以下四个方面:方面:1、restore删除自对应的删除自对应的save以来在局部以来在局部VM中中所建立的所有对象,并回收它们所占用的所有所建立的所有对象,并回收它们所占用的所有内存空间;内存空间;2021/8/14582.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧 restore操作符的具体作用表现为以下四个操作符的具体作用表现为以下四个方面:方面:2、r

53、estore将局部将局部VM中所有复合对象的值恢复中所有复合对象的值恢复到对应到对应save前状态,但字符串除外;前状态,但字符串除外;3、restore隐含地执行隐含地执行grestoreall它将图形状态它将图形状态恢复到恢复到save前的状态;前的状态;4、restore关闭对应关闭对应save以来在局部以来在局部VM分配模分配模式下打开的文件。式下打开的文件。 除了上述几方面的影响以外,除了上述几方面的影响以外,restore不对不对其他任何对象或存储空间产生影响。其他任何对象或存储空间产生影响。save save save restore restore restore2021/8/

54、14592.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧什么时候使用什么时候使用save和和restore操作符操作符?2021/8/14602.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧 保持页与页之间的描述独立性;保持页与页之间的描述独立性; 封装插入的外部图;封装插入的外部图;(1) 显式地回收虚存空间。显式地回收虚存空间。2021/8/

55、14612.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存:虚存:利用废料收集回收虚存利用废料收集回收虚存 用用save和和restore可以显式地回收被占用的可以显式地回收被占用的局部虚存空间。局部虚存空间。 在在Level 2中还有一种自动回收虚存的方法,中还有一种自动回收虚存的方法,这种自动回收虚存空间的机制称为这种自动回收虚存空间的机制称为“废料收废料收集集”。 废料收集的主要功能就是隐式地回收那些废料收集的主要功能就是隐式地回收那些不能再被不能再被PostScript语言程序所利用的复合对语言程序所利用的复合对象所占用的内存空间。象所占用的内存

56、空间。/a (abc) def /a (edf ) def (it is a test) show2021/8/14622.32.3 PostScript PostScript 程序的执行环境程序的执行环境标准输入输出文件:标准输入输出文件: PostScript解释器总是通过文件来获得可解释器总是通过文件来获得可执行的执行的PostScript程序,同时也是通过文件与程序,同时也是通过文件与外部环境进行数据交换。外部环境进行数据交换。 这样的文件也是作为这样的文件也是作为PostScript对象使用对象使用的,它是一个由结束符(的,它是一个由结束符(EOF)作为终止内容)作为终止内容的有限字

57、符序列。的有限字符序列。 文件中的字符可能永久地存放在一个磁盘文件中的字符可能永久地存放在一个磁盘文件中也可能在程序执行过程中动态地生成并文件中也可能在程序执行过程中动态地生成并经由通信通道实时地进行传输。经由通信通道实时地进行传输。2021/8/14632.32.3 PostScript PostScript 程序的执行环境程序的执行环境标准输入输出文件:标准输入输出文件:输入文件输入文件:PostScript程序能够从中读取字符程序能够从中读取字符序列的源文件。序列的源文件。输出文件输出文件:PostScript程序可以往其中写字符程序可以往其中写字符的目标文件。的目标文件。标准输入输出文

58、件标准输入输出文件是两个特殊的文件,它们作是两个特殊的文件,它们作为为PostScript程序的执行环境而始终存在,不程序的执行环境而始终存在,不需要在程序中人为地创建或关闭它们。需要在程序中人为地创建或关闭它们。2021/8/14642.32.3 PostScript PostScript 程序的执行环境程序的执行环境标准输入输出文件:标准输入输出文件:标准输入文件标准输入文件: 是一个由是一个由PostScript解释器所执行的程序解释器所执行的程序正文,即当前需要解释执行的正文,即当前需要解释执行的PostScript源程源程序文件。序文件。标准输出文件标准输出文件: 是用于存放是用于存

59、放print操作符或操作符或=操作符的输出操作符的输出信息及错误信息和执行状态信息的一块内存区信息及错误信息和执行状态信息的一块内存区域。域。2021/8/14652.32.3 PostScript PostScript 程序的执行环境程序的执行环境标准输入输出文件:标准输入输出文件:例子例子%!ps EPSF-3.0 /str 20 string def 123 456 add str cvs print (text) =2021/8/14662.32.3 PostScript PostScript 程序的执行环境程序的执行环境标准输入输出文件:标准输入输出文件: 在在PostScript语

60、言程序中,每个所访问的语言程序中,每个所访问的文件均需采用一定的标识符来表示,标准输入文件均需采用一定的标识符来表示,标准输入文件用文件用%stdin表示,标准输出文件用表示,标准输出文件用%stdout表 示 , 其 他 普 通 文 件 均 采 用表 示 , 其 他 普 通 文 件 均 采 用%device%filename或或%filename 来表示。来表示。2021/8/14672.32.3 PostScript PostScript 程序的执行环境程序的执行环境PostScript程序的初始执行环境特点:程序的初始执行环境特点: PostScript解释器的传统模式是一个解释器的传统模式是一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论