DD15B05-1D9A-42D2-AD47-A6BA8BE30DAC.PS语言基本结构.ppt_第1页
DD15B05-1D9A-42D2-AD47-A6BA8BE30DAC.PS语言基本结构.ppt_第2页
DD15B05-1D9A-42D2-AD47-A6BA8BE30DAC.PS语言基本结构.ppt_第3页
DD15B05-1D9A-42D2-AD47-A6BA8BE30DAC.PS语言基本结构.ppt_第4页
DD15B05-1D9A-42D2-AD47-A6BA8BE30DAC.PS语言基本结构.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

2019/5/30,1,页面描述语言与应用,主讲:樊丽萍 上海理工大学 出版印刷学院,2019/5/30,2,成绩评定方式,2019/5/30,3,第二章 PostScript语言的基本结构,2.1 PS语言的编码方式,一、ASCII编码(level 1,1.空白字符:用于分割语法实体;即PS的对象,用于阐述目的、存储文件以及由通道进行的信息传递;,空格字符(Space)、制表符(Tab)、新行符(Enter),2.特殊字符:表示特定的PS对象,并分割PS对象,字符串( );数组: ;过程: ;词典; 十六进制: ;注释:%;名字对象:/;等,2019/5/30,4,3常规字符:,除了空白字符和特定字符以外的所有可打印字符。,二、二进制编码(level 2以上),二进制标记编码把PS语言的对象表示成单个语法项(Syntactic Entities),它强调压缩效果;可以比ASCII编码用更少的字符来表示PS语言中的大部分对象 。,1.二进制标记编码(Binary Token Encoding),特点:不完全性 混合编码,2019/5/30,5,2二进制对象序列编码 (Binary Object Sequence Encoding),二进制对象序列编码把一个或多个PS对象的序列表示成单个语法项数组,并立即执行这个数组。它能有效地进行解释和生成。,三、注释:,由%和新行符之间的字符序列构成一个注释;,%example 1.ps /n 4 def %定义n的值为4 n 6 add % n+6 = 10 把计算结果输出到标准输出文件中,Abc %comment / % blah 123,2019/5/30,6,2.2 数据类型与对象,一、 对象的概念:,1概念:PS扫描程序可访问的所有的数据;,2表现形式:由PS操作符产生、管理和撤消, 并由解释器执行。,类型(唯一,为本身所有),简单对象,3特征 (三大要素),复合对象,属性(多种),值(唯一),字面属性,可执行属性,存取属性,2019/5/30,7,二、 对象分类,1简单对象(原子型实体):,指对象中再无可见的子结构,当复制该对象时,三要素均复制。,指对象中有可见的内部结构,当复制该对象时,其值不复制。(即新老对象共享一个值),2复合对象:,3区别:复制对象时产生的结果不一样。,2019/5/30,8,三、对象的属性,1字面属性和可执行属性,字面属性,文字性,数据,压入操作数栈,可执行属性,立即执行,推迟执行,整数、实数、字符串、数组、词典等对象具 有字面属性;,过程、操作符等具有可执行属性;,以“/”开头的名字对象具有字面属性,否则具有可执行属性。,2019/5/30,9,2存取属性复合对象具有的属性。,无限制属性,只读属性,只执行属性, 空属性,四、PS对象,1.简单对象,数值对象: integer and real,整型:231 1231;若超过 该值将自动转换为实型,实型:1038 1038;精确 到小数点8位;,属性:字面属性 值:数据本身,2019/5/30,10,名字对象(name),任何由常规字符组成且不能解释为数值的字符序列;,如:Abc、13A等。可作为变量名或过程名,特点: 唯一性:两个字符序列相同的名字为同一对象; 属性:字面属性若名字前面有“/”, 否则具有可执行属性; 值:没有值;但与词典中的一个值或操作相对应,/inch 72 def % inch这个变量与72相对应,/y 5 add def % y与一个过程5 add相对应,字面属性,2019/5/30,11,操作符对象(operator)可执行名字对象,add “是两个数相加”的操作,表示PS语言的内部动作;,名字关键词,值操作符本身,属性:可执行属性; 值:内部操作;(内部函数),40 60 add,可执行属性,100,2019/5/30,12,布尔型对象(Boolean) 逻辑值,布尔对象的值,true:逻辑真或条件成立,false:逻辑假或条件不成立,属性:字面属性,标记对象(mark):用于标记操作数栈中的位置,;等操作符来完成,空对象(null)null对象相对应,用来填充复合对象中的空位置,2019/5/30,13,2.复合对象,串(string):容量为65535 字面属性,字符串:用常用字符由()组成的字符正文,如:(This is a book)show;,由“”反斜杠引导转义字符;,2019/5/30,14,十六进制编码串 (左结合),(This is a square.n376)show,This is a square. ,用newline或“”在显示时,可忽略一个串被分成几行,用0和AF或af,由组成的十六进制编码数据;,90、3f、d0三对十六进制代码,ASCIIbased85 (!u、Z),由组成的基于85的ASCII字符组成的数据,2019/5/30,15,数组对象(array)字面属性,用“ ”构造的可以通过数值索引进行访问对象的一维对象的集合;,索引号从0n;n65536 ; 数组中的元素可以是任意类型的PS对象; 多维数组由一维数组提供;如:1 23 4 PS解释器对遇到的所有数组元素都进行作用,数组是执行的结果。,5 ab 1 2 ,5、ab、1 2 ,1 2 add ,3,2019/5/30,16,过程(process):(视为函数),由标记对象“ ”构成的数组称为可执行数组(过程) ;,数组是执行的结果,而过程则是扫描的结果,过程属性,字面属性,可执行属性推迟执行,1 2 add ,3 ,1 2 add ,1 2 add ,2019/5/30,17,词典对象(dictionary) 字面属性,用 构造,以一对PS对象为元素的数据类型,PS语言中三个缺省的词典: 用户词典(userdict):位于局部虚存中的可写词典 全局词典(globaldict): 位于全局虚存中的可写词典; 系统词典(systemdict):存放所有PS操作符与其值(只读),基本结构为: key1 value1 key2 value2 n65535;,例:/D 4 /pagesize 612 792 /Collate false,/D 4 def %将d=4作为一对存入当前用户词典,2019/5/30,18,文件对象(file): 字面属性,是一个由结束符结束的、可读写、有限的字符流构成,用于PS解释器和它环境之间进行的数据通讯。,其他对象 save:表示内存状态的某一瞬间; gstate:表示保存一个完整的图形状态; FontID:用于构造字库的特殊对象;,2019/5/30,19,2.3 PS的执行环境,一、 栈,栈(stack):是一种运算受限的线性表;仅允 许在表的一端作插入(进栈和删 除(出栈)的运算。,用来存放PS的操作对象和操作符执行的结果,该栈直接受控于当前程序。,1操作数栈:,常用操作数栈管理操作符:,pop:将栈顶元素弹出丢弃;格式:any pop,1 2 3 pop,1 2,1 2 3 pop pop,1,2019/5/30,20,exch:交换栈顶的两个元素;,1 3 3,2 1,copy:复制栈顶的n个元素; 格式:any1anyn n copy,any1anyn any1anyn,例:1 2 3 2 copy,例:1 2 3 2 3,2019/5/30,21,roll:将n个元素循环向上或向下移动j次,格式:,注意: n为栈中元素的个数; 操作数栈中至少有n +2的位置;,其中: 若j0则表示向上移动j次; 若j0则表示向下移动j次;,2019/5/30,22,例:1 3 5 7 4 2 roll,5 7 1 3,1 3 5 7 3 -2 roll,1 7 3 5,2019/5/30,23,index:复制操作数栈中的某个元素;,格式:,其中:j表示(索引号)从栈顶元素数(0)起 的第j个数;,例:1 3 5 7 3 index,1 3 5 7 1,2019/5/30,24,2词典栈,用于保存词典对象,但栈底的三个词典不能被弹出 (该栈直接受控于当前程序 ),常用词典操作符:,begin:将dict压入词典栈,使之成为当前词典 格式:dict begin,end:从词典栈中弹出当前词典; 注意:该操作符没有任何操作数,2019/5/30,25,def:使得key与value在当前词典中相关联,格式:key value def,若key在当前词典中已经出现,那么def就替换它的值。,/name name 1 add def %名字对象name 现在的值被定义为2,例:/name 1 def %在当前词典中名字对象name 被定义为1,2019/5/30,26,get :从数组、词典或串的值中获取单个元素,格式:,31,98 (ASCII值),例:/mykey (myvalue) def,(myvalue),2019/5/30,27,put: 替换数组、词典或串中的单个元素的值,格式:,例:/array 5 7 9 11 def array 2 (abc) put, 5 7 (abc) 11 ,d forall (枚举),例:/d 5 dict def d /abc 123 put,/abc 123,newarray,newdict,newstring,2019/5/30,28,例:/string (abcd) def string 0 65 put,(Abcd),aload:,把数组中所有的元素压入操作数栈 ,最后在把数组压入操作数栈中;,1 3 5 71 3 5 7,例: 1 3 5 7 aload 2 get,1 3 5 7 5,2019/5/30,29,length:得到复合对象中元素的个数,若名字对象,则返回该名字正文串中的字符数,例:1 2 3 length,3,mydict /abc (ABC) put,例:/mydict 5 dict def mydict length,mydict length,例: /too length,3,0,1,2019/5/30,30,3执行栈 (程序的调用栈),保存执行对象(过程和文件);受控于解释器,只能阅读,不能修改。,4图形状态栈,5裁剪路径栈,用于存放图形状态参数,保存当前裁剪路径对象,2019/5/30,31,例2.1写出下列程序结果,%!ps %new201.ps /inch 72 mul def /colors1 0 0 0 1 00 0 1def /xpos 1 inch def /xinc 1 inch def 5 setlinewidth 0 1 2 colors exch get aload pop setrgbcolor xpos 2 inch 1 inch 3 inch 4 copy rectfill 0 0 0 setrgbcolor rectstroke /xpos xpos xinc add def for showpage,2019/5/30,32,2019/5/30,33,二、存储器(虚存)管理,1虚存(Virtual Memory ),用来存储复合对象值的内存区域,123:整数对象;压入操作数栈;,123 (Here is a string ),(Here is a string ):字符串对象; 压入操作数栈;对象中包含了一个指向其值的指针,其值是存放在VM中,123,(Here is a string ),2019/5/30,34,2VM的分类,局部VM(local):存放与程序结构有关的复合 对象的值,特点: 当程序某一结构结束时,与此有关的VM被释放 对VM中内容的修改受到save、restore控制 在缺省状态下,VM为局部VM,全局VM(global):用来存放与程序结构无关的 复合对象的值,特点: 整个程序执行过程中一直存在的复合对象的值 在程序执行期间不受程序结构控制 save和restore的操作不影响对全局VM对象的修改,2019/5/30,35,三、标准输入输出文件,1文件(file ),指存储在外部介质上数据的集合,2标准输入文件(%stdin),PS解释器通过文件来接受可执行的PS程序 通过文件与外部环境交换数据,PS程序能够读取字符序列的源程序(文件),由PS解释器当前执行的程序序列; (PS解释器默认从标准输入文件中读取数据),(%stdin)(r) file,创建文件对象,2019/5/30,36,3.标准输出文件(%stdout),PS程序能够往上写字符的目的程序(文件),如:%file1.ps %文件开头,文件名 /str 20 string def 123 456 add str cvs %( 串(579) ) print (text)=,或print或=把任意数据传送到标准输出文件中,则该程序将在标准输出文件中输出579和串text,(%stdout)(w) file,生成文件对象,2019/5/30,37,4.命名文件,(命名文件)(存取属性)file,存取属性,生成文件对象,2019/5/30,38,5.文件操作符,file read,file string readstring,readhexstring和writehexstring: 读写文件中以十六进制记法表示二进制数据,boolean:ture操作成功,false遇到文件结束符,file int write,将单个字符加入到文件中(0-255),int boolean,从输入文件中读下一个字符,file string writestring,substring boolean,file string readline,substring boolean,2019/5/30,39,例2.2写出下列程序运行结果 %!ps %new202.ps /str 100 string def currentfile str readline here is a line of text pop /textline exch def (e:Fan_LipingPStestnew2020.ps)(w) file textline (str) writestring,here is a line of text,2019/5/30,40,四、PS程序的初始执行环境特点,1.空的操作数栈 2.包含三个标准词典的词典栈 3.空的执行栈、图形状态栈和裁剪路径栈 4.虚存的申请模式为局部虚存 5.包含缺省图形状态参数的图形状态数据结构,2019/5/30,41,2.4 PS对象的执行方式,1立即执行,对扫描到的PS对象立即执行该对象,并做相应的操作,例2.3 写出PS解释器执行下列程序段的过程 40 60 add 2 div,50,add和div 立即执行,40、60、2 推迟执行,2019/5/30,42,40、60、 average等 推迟执行,2.推迟执行,对遇到的PS对象暂缓执行的操作,例2.4 写出PS解释器执行下列程序段的过程 /average add 2 div def 40 60 average,50,def和average 立即执行,2019/5/30,43,3. PS执行规则:,字面属性的对象,被作为数据压入操作数栈 当解释器直接遇到过程时,被作为数据压入 到操作数栈;而间接遇到过程时,则作为其 他对象的值立即执行,依次执行其中的对象 可执行名字对象,在词典栈中查找其对应的 值,立即执行; 操作符对象,立即执行完成PS的内部操作; 把文件对象压入执行栈中,读取其中字符, 并解释为PS对象; 空对象:不做任何操作。,2019/5/30,44,例2.6:写出下列程序运行结果 %!ps /inch 72 mul def 0.5 inch 0.5 inch translate /ins 0.1 def 0 0.1 1.0 0 0 moveto 0.7 inch 0 rlineto 0 4 inch rlineto -0.7 inch 0 rlineto closepath gsave 0 ins 0 0 setcmykcolor fill grestore 0 setgray stroke /ins 0.1 ins add def 0.7 inch 0 translate for showpage,2019/5/30,45,2019/5/30,46,2019/5/30,47,%!ps /inch 72 mul bind def 0.5 inch 0.5 inch translate /ins 0.1 def 0 0.1 1.0 0 0 moveto 0.7 inch 0 rlineto 0 4 inch rlineto -0.7 inch 0 rlineto closepath gsave 0 ins 0 0 setcmykcolor fill grestore 0 setgray stroke /ins 0.1 ins add def 0.7 inch 0 translate for showpage,2019/5/30,48,2.6常用的数学操作符,一、双操作数的数学操作符,1Add (+),2.sub(subtract) (-),3.mul(multiply) (*),若num1和num2为整数,则其和、差、乘积为整数,否则为实数,2019/5/30,49,4div(division) (),5idiv(integral division)整除,2019/5/30,50,6.mod(modulus)取模 (实际意义上的取余运算),remainder的符号与int1的符号相同,且为整数,二、单操作数的数学操作符,1abs(absolute) 求绝对值,2019/5/30,51,2.neg(negative) 求相反数,3.ceiling 求大于或等于num1的最小整数num2,注意:num2的类型与num1的类型相同,2019/5/30,52,4floor求小于或等于num1的最大整数num2,5round求最接近于num1的整数值,注意:num2的类型与num1的类型相同,如果有两个值都接近于num1的值,则取两值中较大的值;num2类型与num1类型相同;,2019/5/30,53,6truncate求某个数的整数部分;,7Sqrt:求某个数的平方根(结果为实数),注意:num2的类型与num1的类型相同; (去除小数部分),三、函数,2019/5/30,54,4.对数: le(自然对数)、log(以10为底对数),5.n次幂函数 exp,例2.7 编写程序,求多项式2x24x+y 当x=2, y = -1时的值,并输出到标准输出文件中。 %!PS %case1.ps /x 2 def /y -1 def /z x x mul def /u 4 x mul def 2 z mul u sub y add =,2019/5/30,55,2.7 PS资源、函数和过滤器,一、资源存放于全局虚存,资源 (资源类),常规资源,是一组命名对象的集合。即由PS内部定义的,并可由PS程序直接调用的PS对象的集合,隐式资源,资源实例对象,资源类和资源实例都对应着相应的名字来标识,字库(类)/Font,资源实例内部功能,/Times-Roman字体(实例),包含字符的描述信息,2019/5/30,56,常规资源类,2019/5/30,57,隐式资源类,2019/5/30,58,二、过滤器(filter)特殊类型的文件对象,1过滤器:,对文件中读出或写入的字符数据根据过滤器的种类进行解码或编码。,2过滤器的分类,编码过滤器(encoding),输出文件,接受写入数据,并将其转换为该过滤器特有的编码数据写入基文件中(目标文件)(所有编码过滤器的名字都嵌有encode),ASCIIHexEncode,将二进制数据编码为十六进制表示,2019/5/30,59,解码过滤器(decoding),输入文件,从基文件中读入编码数据,并将其解码为原来的数据。(所有解码过滤器的名字都嵌有decode),ASCII85Encode与ASCII85Decod

温馨提示

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

评论

0/150

提交评论