页面描述语言与格式第二章.ppt

上传人:wuy****n92 文档编号:66727066 上传时间:2022-12-19 格式:PPT 页数:140 大小:1,013KB
返回 下载 相关 举报
页面描述语言与格式第二章.ppt_第1页
第1页 / 共140页
页面描述语言与格式第二章.ppt_第2页
第2页 / 共140页
点击查看更多>>
资源描述

《页面描述语言与格式第二章.ppt》由会员分享,可在线阅读,更多相关《页面描述语言与格式第二章.ppt(140页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、但操操作作符符的的名名字字在在语语言言中中并并不不是是固固定定的的,在在PostScript程程序序中中可可通通过过重重定定义义的的方方法法来来改改变变操作符的含义。操作符的含义。数数据据类类型型包包括括一一些些在在许许多多现现代代程程序序设设计计语语言言中中都都有有的的元元素素,如如数数值值、串串和和数数组组,同同时时还还能能够够把把程程序序作作为为数数据据进进行行处处理理,以以及及控控制制语语言言执执行行状状态态许许多多方方面面,这这些些方方法法来来源源于于 LISP等等其他程序设计语言。其他程序设计语言。PostScript语语言言语语法法比比较较简简单单,而而功功能能非非常强大常强大。

4、它它的的强强大大功功能能来来自自于于它它能能够够不不受受任任何何限限制制地地以以任任意意方方式式组组合合它它的的各各项项特特征征。利利用用 PostScript 语语言言的的这这些些功功能能人人们们可可以以设设计计出出复复杂杂的的图图形形应应用用程程序序,否否则则这这些些程程序序很很难难甚甚至至不不可能用于创造复杂图形。可能用于创造复杂图形。本本章章将将系系统统地地介介绍绍 PostScript 语语言言作作为为通通用用程程序设计语言的每个方面序设计语言的每个方面:语法语法 数据类型数据类型执行语义执行语义内存组织内存组织简要介绍文件输入和输出简要介绍文件输入和输出命名资源命名资源过滤器文件过

5、滤器文件 2.12.1 ASCII ASCII编码与注释表示编码与注释表示 PostScript语语言言有有三三种种编编码码方方式式:ASCII、二进制标记和二进制对象序列。二进制标记和二进制对象序列。ASCII编编码码容容易易读读且且不不依依赖赖于于通通信信应应用用中中所所保保留留的的特特殊殊字字符符,它它适适用用于于阐阐述述目目的的、存存储储文件及各种通信设备间的信息传递。文件及各种通信设备间的信息传递。两两种种二二进进制制编编码码则则采采用用较较少少字字符符的的二二进进制制标标记记或或压压缩缩方方法法来来表表示示 PostScript 对对象象,常常应应用用在在控控制制环环境境中中用用于

6、于改改善善程程序序表表示示或或执执行行的的效效率。率。在在任任何何一一个个 PostScript 程程序序中中,这这三三种种编编码方式可混合使用。码方式可混合使用。2.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码:ASCII是是 American Standard Code for Information Interchange的的简简称称。这这是是一一种种广广泛泛采采用用的的用用于于表表示示二二进进制制数数据据的的编编码码方方式式,它它由一套标准的字符集组成。由一套标准的字符集组成。用用于于PostScript程程序序ASCII编编码码表表示示的的标标准

7、准字字符符集集包包括括大大写写和和小小写写的的26个个英英文文字字母母、10个个数数字字和和特特殊殊符符号号等等所所有有可可打打印印字字符符,以以及及空空格格、制表符制表符、回车回车和和换行符换行符等等“空白空白”字符字符。2.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码:PostScript程序程序使用使用的的ASCII字符。字符。依据作用分成三类:依据作用分成三类:空白字符空白字符特殊字符特殊字符注释注释2.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码:空白字符空白字符空白字符的作用是用于分隔其他语法实体空白字符的

8、作用是用于分隔其他语法实体2.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码:特殊特殊字符字符 特特殊殊字字符符是是指指“(”、“)”、“”、“”、“”、“”、“”、“”、“/”和和“%”。它它们们用用来来分分隔隔语语法法实实体体,如如串串、数数组组、过过程、词典、具字面属性的名字、注释。程、词典、具字面属性的名字、注释。任任何何一一个个特特殊殊字字符符都都表表示示位位于于它它们们之之前前的的实体已经结束。实体已经结束。2.12.1 ASCII ASCII编码与注释表示编码与注释表示ASCII 编码:编码:注释注释 在在任任何何一一个个计计算算机机语语言言程

9、程序序中中,为为了了增增加加程程序序的的可可读读性性,通通常常在在程程序序中中添添加加注注释释。PostScript程程序序中中的的注注释释由由特特殊殊字字符符“%”引引导导,并以新行符结束。并以新行符结束。注释不对程序的结果起任何作用注释不对程序的结果起任何作用%example1.ps/nx l def%定义定义 nx 的值为的值为 1 nx 4 add%nx+4=5=%把刚才的计算结果输出到标准输出文件中把刚才的计算结果输出到标准输出文件中2.22.2 数据类型与对象数据类型与对象概述:概述:当当一一个个扫扫描描程程序序扫扫描描PostScript语语言言程程序序正正文文的的时时候候能能产

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

11、性、一个值。对对象象的的类类型型是是对对象象本本身身所所固固有有的的特特性性,与与该对象的存放地点和如何描述无关。该对象的存放地点和如何描述无关。2.22.2 数据类型与对象数据类型与对象概述:概述:对象的概念与特点对象的概念与特点 PostScript所所支支持持的的所所有有对对象象类类型型包包括括名名字字、布布尔尔型型、整整数数和和实实数数、串串、数数组组、词词典典、过过程程、操操作作符符、标标记记、空空、Save对对象象,FontID 文文件件、图图形形状状态态(gstate)、压缩数组等。压缩数组等。2.22.2 数据类型与对象数据类型与对象概述:概述:对象分类对象分类 PostScr

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

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

14、)put(abc)dup 1(d)put(abc)(abc)两个不同的串两个不同的串(abc)dup 一个串的两个拷贝一个串的两个拷贝2.22.2 数据类型与对象数据类型与对象概述:概述:对象分类对象分类2.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:每每一一个个PostScript对对象象都都有有一一个个或或多多个个属属性。性。在在执执行行对对象象或或对对对对象象进进行行某某个个特特定定操操作作时时 这些属性将影响操作所产生的结果这些属性将影响操作所产生的结果。在在把把对对象象严严格格地地作作为为数数据据处处理理时时,对对象象的的属属性性又又不不影影响响对对其其进进行行操操

15、作作所所产产生生的的结结果果(如如,变量的变量的名字名字与与值值)。)。2.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:字面属性和可执行属性字面属性和可执行属性 每一个对象每一个对象至少有至少有一个属性。一个属性。字面属性字面属性或或可执行属性可执行属性。(1)整整型型、实实型型、字字符符串串、数数组组、词词典典均均只只具有字面属性,均被当作数据压入操作数栈;具有字面属性,均被当作数据压入操作数栈;(2)如如果果名名字字对对象象以以“/”开开始始,则则该该名名字字具具有字面属性,否则具有可执行属性;有字面属性,否则具有可执行属性;(3)过程和操作符都只具有可执行属性。)过程和

16、操作符都只具有可执行属性。2.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:字面属性和可执行属性字面属性和可执行属性(1)执执行行一一个个可可执执行行的的名名字字,将将导导致致在在当当前前词词典典(缺缺省省为为用用户户词词典典)的的上上下下文文中中查查找找该该名名字,并执行其相应的值;字,并执行其相应的值;(2)执执行行一一个个可可执执行行的的操操作作符符就就完完成成一一次次内内部动作;部动作;(3)执执行行一一个个可可执执行行的的过过程程对对象象,就就使使得得过过程中的元素依次被执行。程中的元素依次被执行。执行一个对象的含义依赖于对象的类型和属性执行一个对象的含义依赖于对象的

17、类型和属性2.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:存取属性存取属性 对对象象的的另另外外一一个个属属性性是是存存取取属属性性,只只有有复复合对象才具有存取属性。合对象才具有存取属性。该该属属性性用用于于限限制制对对对对象象值值的的操操作作,共共有有以以下四种:下四种:1、无限制属性、无限制属性2、只读属性、只读属性3、只执行属性、只执行属性4、空、空-无直接用处无直接用处2.22.2 数据类型与对象数据类型与对象对象的属性:对象的属性:存取属性存取属性 属性是对象自身的特性而不是其值的特性:属性是对象自身的特性而不是其值的特性:两两个个复复合合对对象象能能够够共共享享

18、同同一一个个值值但但可可以以具具有不同的字面属性与可执行属性或存取属性;有不同的字面属性与可执行属性或存取属性;词词典典对对象象的的存存取取属属性性是是其其值值的的特特性性,所所以以共享一个值的多个词典对象有同样的存取属性。共享一个值的多个词典对象有同样的存取属性。2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象数值数值:整数和实数整数和实数整数整数60、-80、0、+12、8998实数实数0.3、-90、1.0、0.0进进制制表表示示:base#number(其其中中,base为为236,number是是base进进制制中中的的基基础础数数值

19、值,它它必必须须是是由由值值在在0base-1之之间间的的数数字字组组成成,大大于于9的的数数字字用字母用字母“AZ”(或(或“az”)来表示)。)来表示)。八进制数八进制数 8#1675十六进制数十六进制数 16#ADFF二进制数二进制数 2#10102.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象名名字字:变变量量,用用于于表表示示名名字字对对象象的的标标识识符符可可由由任何常规字符组成。任何常规字符组成。如如,9A4、B7、2-9B、4.A、$、a.b、$MyDict、pattern对对于于名名字字对对象象来来说说,它它本本身身并并没没有

20、有值值,但但却却可可以以与与词词典典中中的的值值相相对对应应,构构成成一一个个关关键键字字与与值值对对。与与名名字字对对象象相相对对应应的的值值可可以以是是任任意意的的 PostScript 对象。对象。例如例如,/nx1 1 def 表示字面属性的名字表示字面属性的名字nx1,它与用户词典中的数值它与用户词典中的数值 1 对应对应2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象操操作作符符:操操作作符符对对象象代代表表着着PostScript语语言言的的内内部部操操作作,执执行行一一个个操操作作符符对对象象便便是是激激活活一一个个内内部部操操

21、作作,操操作作符符对对象象相相当当于于一一个个特特殊殊的的名名字字对对象象 它它与与系系统统词词典典中中的的某某一一个个值值相相对对应应,其其值值对应于一种内部操作对应于一种内部操作。比如,比如,add操作符:两个数值相加操作符:两个数值相加2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象布布尔尔型型(boolean):与与其其他他计计算算机机语语言言一一样样 PostScript语语言言也也提提供供了了布布尔尔对对象象,其其值值分分别别为为 true和和false系系统统词词典典中中的的名名字字对对象象true和和false所对应的值便是这两

22、个布尔对象。所对应的值便是这两个布尔对象。布布尔尔对对象象通通常常也也是是关关系系操操作作符符或或逻逻辑辑操操作作符符的的运运行行结结果果,同同时时也也可可能能是是执执行行其其他他操操作作符符后后所所返回的值。返回的值。布尔对象一般用于条件表达式和布尔对象一般用于条件表达式和逻辑表达式中逻辑表达式中,主要用作控制操作符主要用作控制操作符 if 或或 ifelse 的操作数的操作数2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象空空对对象象(Null):PostScript 语语言言提提供供了了一一个个称称为空的对象,该对象不含任何具体内容。为空

23、的对象,该对象不含任何具体内容。空空对对象象只只有有一一个个值值为为null名名字字对对象象,null与与系系统统词典中的空对象相对应。词典中的空对象相对应。应应用用在在:复复合合对对象象中中的的空空位位置置或或未未初初始始化化的的位位置。置。大多数操作符不能以空对象作为其操作数。大多数操作符不能以空对象作为其操作数。2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:简单对象简单对象标标记记(mark):标标记记是是一一个个特特殊殊对对象象,用用于于标标记记操操作作数数栈栈中中的的位位置置,它它只只有有一一个个值值,且且总总是是通通过过调调用用mark、“”、“

24、”这这三三个个操操作作符符来来创创建。建。2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串:PostScript语语言言中中的的串串是是一一个个复复合合对对象象,它它具具有有三三种种表表示示形形式式:由由(和和)括括起起来来的的字字符符正正文文串串,通通常常用用于于保保存存正正文文;由由括括起起来来的的用用十十六六进进制制编编码码的的数数据据描描述述的的串串;由由括括起来的起来的 ASCII based85 编码数据构成的串编码数据构成的串。2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串

25、串:字符串字符串 除除了了特特殊殊字字符符“”、“(”、“)”以以外外的的任任何何字字符符均均可可以以作作为为串串元元素素出出现现在在串串中中,而这三个特殊字符将用作其他的特殊目的。而这三个特殊字符将用作其他的特殊目的。(This is a string with special char%#|)()(It contains a string(hello)(This is a string n)2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象串串:字符串字符串 “”用用作作“转转义义符符”,以以满满足足一一些些特特殊殊目目的的。例例如如一一些些

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

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

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

29、abc (xyz)150 4.0索引值从索引值从0开始开始如何表达多维数组?如何表达多维数组?2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象过程过程:PostScript语语言言中中的的过过程程相相当当于于其其他他计计算算机机语语言言中中的的函函数数,它它由由特特殊殊字字符符“”和和“”括括起起来来表表示示,所所有有包包含含在在“”和和“”中中的的内内容容构成一个过程对象构成一个过程对象,如,如sub 2 add。过程过程 与与 数组?数组?执行属性执行属性 与与 字面属性字面属性过程对象的过程对象的 推迟执行推迟执行?/result sub

30、 2 add def/x 5 4 result def/x 3 1 result def2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象词典词典:由由特特殊殊字字符符“”和和“”括括起起来来表表示示的的一一种种数数据据类类型型称称为为词词典典,包包含含在在特特殊殊字字符符中中的的内内 容容 是是 成成 对对 的的 PostScript对对 象象,每每 一一 对对PostScript对对象象又又分分为为关关键键字字与与值值,其其第第一一个个PostScript对对象象作作为为关关键键字字,第第二二个个PostScript对象作为对应的值。对象作为

31、对应的值。关关键键字字通通常常是是有有字字面面属属性性的的名名字字对对象象,但但也可以是除也可以是除 null 以外的所有以外的所有 PostScript 对象;对象;2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象词典词典:值则可以是任意值则可以是任意PostScript 对象。对象。1)系统词典()系统词典(Systemdict)2)全局词典)全局词典(Globaldict)3)用户词典)用户词典(Userdict)2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象词典词典:访问字典的三种方法

32、:访问字典的三种方法:(1)使使用用访访问问指指定定词词典典的的操操作作符符,词词典典名名作作为其操作数为其操作数(2)通过一些隐式地访问当前词典的操作符通过一些隐式地访问当前词典的操作符(3)解解释释器器在在执执行行程程序序过过程程中中遇遇到到可可执执行行名名字对象时自动地去查找词典字对象时自动地去查找词典2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象文件文件:文文件件是是一一个个可可读读或或可可写写的的字字符符流流,用用于于在在PostScript解解释释器器和和它它的的环环境境之之间间进进行行数数据据的的递递与与交交换换,文文件件中中的

33、的字字符符内内容容可可以以作作为为磁磁盘盘文文件件永永久久地地存存贮贮起起来来,也也可可以以在在 PostScript 程程执执行过程中动态生成并经由通信通道进行传递。行过程中动态生成并经由通信通道进行传递。2.22.2 数据类型与对象数据类型与对象PostScript对象详述:对象详述:复合对象复合对象其他对象其他对象:压缩数组压缩数组一个普通数组的压缩表示一个普通数组的压缩表示标记标记save内存状态的快照,由内存状态的快照,由save和和restore创建管理。创建管理。FontID 用于构造字库的特殊对象用于构造字库的特殊对象gstate表示一个完整的图形状态表示一个完整的图形状态2.

34、32.3 PostScript PostScript 程序的执行环境程序的执行环境 执执行行环环境境指指的的是是PostScript语语言言程程序序在在执执行过程中行过程中,其数据或对象的,其数据或对象的存取环境存取环境。从从PostScript语语言言的的角角度度把把内内存存划划分分为为四四大大块块:堆堆栈栈、虚虚存存、标标准准输输入入输输出出文文件件及及图图形形状态状态。1、堆堆栈栈用用于于存存放放各各种种 PostScript 对对象象,同同时时,根根据据栈栈中中存存放放对对象象的的不不同同,把把堆堆栈栈又又细细分分为为操操作作数数栈栈、词词典典栈栈、执执行行栈栈、图图形形状状态态栈栈与

35、与裁裁剪剪路径栈路径栈;2、虚虚存存则则是是用用于于存存放放复复合合对对象象的的值值的的一一块块存存储区;储区;2.32.3 PostScript PostScript 程序的执行环境程序的执行环境3、标标准准输输入入输输出出文文件件是是PostScript程程序序与与用用户户终终端端或或另另一一台台计计算算机机进进行行实实时时数数据据与与信信息息交交换换时的通讯信道;时的通讯信道;4、图图形形状状态态则则是是用用于于存存放放图图形形状状态态参参数数的的一一块块内内存存空空间间,而而图图形形状状态态参参数数是是一一组组在在光光栅栅输输出出设设备备上上生生成成正正文文和和图图形形时时的的控控制制

36、参参数数(图图形形状态在页面图形描述部分进行介绍)。状态在页面图形描述部分进行介绍)。2.32.3 PostScript PostScript 程序的执行环境程序的执行环境 PostScript程程序序在在执执行行之之前前拥拥有有一一个个缺缺省省的的初初始始执执行行环环境境,在在程程序序执执行行期期间间,其其执执行行环环境境会会随随着着程程序序执执行行的的进进程程而而发发生生变变化化。当当一一个个 PostScript程程序序执执行行结结束束后后,PostScript的的执执行行环环境境就就恢恢复复到到默默认认状状态态,为为下下一一个个程程序序的的执执行行作准备。作准备。2.32.3 Post

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

38、进先出先进后出,后进先出”2.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈堆栈:操作数栈操作数栈 操操作作数数栈栈用用来来保保存存各各种种用用作作操操作作数数的的PostScript对象以及某些操作符的对象以及某些操作符的执行结果执行结果。操操作作数数栈栈直直接接受受当当前前所所执执行行的的PostScript程程序序的的控控制制,栈栈中中存存放放的的各各类类PostScript对对象象可由多个操作符任意地可由多个操作符任意地压入压入和和弹出弹出。2.32.3 PostScript PostScript 程序的执行环境程序的执行环境堆栈堆栈:操作数栈操

39、作数栈 执行程序过程:执行程序过程:如如果果遇遇到到的的是是具具字字面面属属性性的的PostScript对对象象,解解释释器器就就把把该该对对象象压压入入操操作作数数栈栈;当当操操作作符符需需要要一一个个或或多多个个操操作作数数时时,解解释释器器就就从从操操作作数数栈栈顶顶弹弹出出一一个个或或多多个个PostScript对对象象以以获获取取这这些些操操作作数数;当当操操作作符符返返回回一一个个或或多多个个结结果果时时 解释器就把它们依次压入到操作数栈顶。解释器就把它们依次压入到操作数栈顶。在在一一个个PostScript程程序序执执行行的的初初始始状状态态下下 操作数栈中没有任何操作数栈中没有

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

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

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

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

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

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

46、 PostScript PostScript 程序的执行环境程序的执行环境虚存虚存:虚存分类虚存分类 根根据据存存放放在在虚虚存存中中的的值值的的存存在在期期限限的的不不同同 用用于于存存放放复复合合对对象象的的虚虚存存可可分分为为局局部部VM和和全全局局VM两种。两种。1、局局部部VM:局局部部VM用用来来存存放放那那些些只只在在程程序序执执行行过过程程的的某某一一段段时时间间内内才才使使用用的的复复合合对对象象的的值;值;对局部对局部VM的使用和修改操作的使用和修改操作可由操作符可由操作符 save 和和 restore 封装起来封装起来2.32.3 PostScript PostScri

47、pt 程序的执行环境程序的执行环境虚存虚存:虚存分类虚存分类2、全全局局VM:全全局局VM用用于于存存放放在在程程序序的的整整个个执执行行期期间间或或一一个个结结构构化化分分区区中中(如如一一个个页页面面)一直存在和使用的复合对象的值。一直存在和使用的复合对象的值。true setglobal/mydict 5 dict def/str1 (text)def false setglobal /str2 (text2)defmydict /a str1 put mydict /b str2 put mydict /c 4 put2.32.3 PostScript PostScript 程序的执行

48、环境程序的执行环境虚存虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧 save操操作作符符为为局局部部VM中中的的内内容容拍拍一一张张快快照照,它它返返回回一一个个代代表表这这张张快快照照的的save对对象象;restore操操作作符符使使局局部部VM中中的的内内容容恢恢复复到到由由它它所所对对应应的的前前一一个个save所所保保存存的的快快照照内内容容,这这两两个操作符必须成对使用。个操作符必须成对使用。restore操操作作符符的的具具体体作作用用表表现现为为以以下下四四个个方面:方面:1、restore删删除除自自对对应应的的save以以来来在在局局部

49、部VM中中所所建建立立的的所所有有对对象象,并并回回收收它它们们所所占占用用的的所所有有内存空间;内存空间;2.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧 restore操操作作符符的的具具体体作作用用表表现现为为以以下下四四个个方面:方面:2、restore将将局局部部VM中中所所有有复复合合对对象象的的值值恢恢复复到对应到对应save前状态前状态,但字符串除外;,但字符串除外;3、restore隐隐含含地地执执行行grestoreall它它将将图图形形状状态态恢复到

50、恢复到save前的状态;前的状态;4、restore关关闭闭对对应应save以以来来在在局局部部VM分分配配模模式下打开的文件。式下打开的文件。除除了了上上述述几几方方面面的的影影响响以以外外,restore不不对对其他任何对象或存储空间产生影响。其他任何对象或存储空间产生影响。save save save restore restore restore2.32.3 PostScript PostScript 程序的执行环境程序的执行环境虚存虚存:save 和和 restore 操作符的作用与使用技巧操作符的作用与使用技巧什么时候使用什么时候使用save和和restore操作符操作符?2.32

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁