




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,2,学习本章的目的 掌握源语言语法的形式描述。 构造编译程序的算法是从研究源程序及目标程序产生的,首先找到源语言的形式描述,根据这种描述,构造出相应的分析加工程序。 语言分语法,语义和语用。程序语言语法的形式描述是很好用的,语义的形式描述不那么好用,但它推动语言理论的发展。,3,2.1.1 字母表 2.1 .2 符号串 一、符号串的定义 二、术语 三、符号串的运算 四、符号串集合的运算,2.1 符号串,4,2.1.1 字母表 字母表是符号的非空有穷集合。任何程序语 言都有自己的字母表,例如: 1.计算机语言:由符号“0”和“1”组成的字 母表,=0,1。 2. ASCII字符集; 3. Pascal字母表为: = AZ, az, 09, +, -, *, /, , :, , , ; ,., , (, ), , , , ,5,一、符号串的定义 已知字母表, (1) 是上的一个符号串; (2) 若x是上的符号串,而a是的元素, 则xa是上的符号串。 (3) y是上的符号串,当且仅当它由(1)和 (2)导出。 由字母表中的符号所组成的的任何有穷 序列被称之为该字母表上的符号串,也称作 “字“。,2.1.2 符号串,6,二、术语 设s是符号串 前缀:移走s的尾部的零个或多于零个符号。 后缀:移走s的头部的零个或多于零个符号。 子串: 从s中删去一个前缀和一个后缀。 子序列: 从s中删去零个或多于零个符号(这些符号不要求是连续的)。 逆转(用SR表示):将S中的符号按相反次序写出而得到的符号串。 长度:该符号串中的符号的数目。 例如,|aab|=3,|=0。,7,例:符号串s=banana 前缀:,b,ba,ban,bana,banan,banana 后缀:banana,anana,nana,ana,na,a, 子串: banana,anana,banan,anan, 真前缀,真后缀,真子串: xs x 子序列: baa(这些符号不要求是连续的) 逆转(用SR表示):ananab 长度:banana=6,8,三、符号串的运算 1.连接:设x和y是符号串,它们的连接 xy是把 y的符号写在x的符号之后得到的符号 串。例如,x=ba,y=nana,xy=banana. 2.方幂:x0= ; x1=x; x2=xx; ;;xn=xn-1x 例如, x=ba, x1= ba, x2=baba, x3=bababa,.,四、符号串集合(语言)的运算 设L和M是两个符号串集合,则: 1.合并:LMs|sL or sM 2.连接:LM st|sL and tM 3.方幂: L0=, L1L, L2LL, ., LnLn-1L 4. 语言L的Kleene闭包,记作L*, L*Li(i0) =L0L1L2L3 5语言L的正闭包,记作L+(L+L L*) L+Li(i 1) =L1L2L3L4,10,例:L=AZ,az D=09 1LD=AZ,az ,09 2LD是由所有用一个字母后跟一个数字组成 的符号串所构成的集合。 3L4是由所有的四个字母的符号串构的集合。 4L(LD)* 是由所有的字母打头的字母和 数字组成的符号串所构成的集合。 5D+是由所有的长度大于等于1的数字串所构 成的集合。,11,2.2 文法和语言的定义,2 . 2 . 1 引子 2 . 2 . 2 文法和语言的定义 一、文法和语言的定义 二、 推导 三、语言 四、 最左推导和最右推导 五、短语,直接短语,句柄,12,2 . 2 . 1 引子,分析:The grey wolf will eat the goat,谓语,主语,冠词,形容词,名词,动词,直接宾语,助动词,句子,动原,冠词,名词,The grey wolf will eat the goat,13,为了进行机械分析, “句子由主语后跟随谓语组成”表示为:,句子 主语 谓语 (1) 主语 冠词 形容词 名词 (2) 冠词the 形容词 grey 谓语 动词 直接宾语 (5) 动词 助动词 动词原形 (6) 助动词will 动词原形 eat 直接宾语 冠词 名词 (9) 名词wolf 名词 goat,14,句子的语法有四部分: 终结符号集,非终结符号集, 开始符号,语法规则。 终结符号集VT=the,grey, wolf,will, eat, goat 非终结符号集VN=句子,主语, 谓语, 冠词, 形容词, 名词 , 动词 , 直接宾语 , 助动词 ,动词原形 开始符号S= 句子 语法规则集P=句子 主语谓语,15,句子主语 谓语 冠词 形容词 名词 谓语 the 形容词 名词 谓语 the grey名词 谓语 the grey wolf 谓语 the grey wolf 动词 直接宾语 . the grey wolf will eat the goat,句子根据规则推导出来,16,句子 the grey wolf will eat the goat the grey wolf will eat the wolf the grey goat will eat the wolf the grey goat will eat the grey 符合语法规则且符合语义规定的句子仅是: the grey wolf will eat the goat,+ ,句子既要符合语法规则又要符合语义规定,17,一 文法的定义 G = (VT,VN , S, P ),其中: VT 是一个非空有穷终结符号集合; VN 是一个非空有穷的非终结符号集合, 且VTVN; S VN ,称为开始符号。 P=A |AVN, (VTVN)* S必须在某个产生式的左部至少出现一次 。产生式或写成 A : 。 缩写形式: A 1| 2,2 . 2 . 2 文法和语言的定义,18,G=(a,+,*,(,),, , ,P ) P: * ( ) a E E+T T T T*F F F ( E ) a (2.1),例2.2 算术表达式的文法G:,19,定义2.3 直接推导和推导的定义: 令G=(VT,VN, S, P), 若AP, 且 , (VTVN)*,则称 A直接推出 , 表示成 A A直接推出 A 直接归约到 A ,二、推导,20,如果存在一个直接推导序列: 0 1 2 n(n0) 表示成 0 n 0 n 或者 0 = n 或者 0 n,+ ,+ ,* ,21,例:E E+T T+T F+T a+T a+F a+a,22,定义2.4:语言的定义 设文法 G(VT,VN,S, P)。如果S ,则称是一个句型。仅含终结符号的句型是一个句子。语言 L(G)是由文法G产生的所有句子所组成的集合: L(G)|S 且VT* 例2.3 考虑一个文法 G(a,b,S,S,P) 其中,P:SaSb ab SaSb aaSbb a3Sb3 an-1Sbn-1 anbn,* ,+ ,三、 语言,23,例2.4 设G=(VT=a,b,VN=S,A,B,S,P,其中 P:SaB|bA Aa|aS|bAA Bb|bS|aBB L(G)=w|wa,b+,且w中有相同个数的a和b。 用归纳法证明下面结论(对w的长度) : (1)S w,当且仅当w中含有相同个数的a和b。 (2)A w,当且仅当w中a的个数比b的个数多一个。 (3)B w,当且仅当w中b的个数比a的个数多一个。 归纳基础 当|w|=1,Aa, B b, 不能从S导出长 度为1的终极行,则上述结论显然成立。,*,*,*,24,设(1),(2)和(3)对于长度不超过k-1的所有w都成立。那么,证明对|w|=k也成立。 对于(1),推导的第一步必是SaB或SbA, 对于SaB ,必有w=aw1且B w1, |w1|=k-1,它含的b个数比a多一个,因此,w中a,b的个数相等。推导的第一步是SbA,证明完全类似。反之,|w|=k, w中a,b的个数相等,要证S w。考虑S的推导,推导出的第一个终结符号,或为a或为b。若SaB, B w1, |w1|=k-1, w1中b的个数比a多一个,w= aw1。若S bA,证明和SaB类似。 (2)和(3)的证明留给同学们。,*,*,*,归纳步骤:,25,对于w和G, wL(G)? 是否存在S w,如何构造这个推导? 例如,GE(例2.2)和w=a+a * a EE+T T+T F+T a+T a+T*F a+F *F a+a *F a+a*a( 最左) 特点:A (A) , VT* EE+T E+T *F E+ T *a E+F*a E+a*a T+a*a F+a*a a+a*a 特点:A (A), VT*(最右),+ ,四、最左推导和最右推导,26,定义2.5 令GS是一个文法,如果有 S A 且 A 则称是一个关于非终结符号A的,句型的短语。其次如果有 S A 且 A 则称是直接短语。 一个句型的最左直接短语称为该句型的句柄。,+ ,* ,* ,五、短语,27,例: 文法(2.1)的一个句型 a1*a2+a3 ,尽管 有E a2a3 ,但是 a2a3 并不是该句型 的一个短语,因为不存在 E a1*E。 短语:a1, a2, a3, a1 *a2, a1*a2+a3 直接短语: a1,a2, a3 句柄:a1,+ ,+ ,28,2.3 分析树和二义性,一、分析树的定义 二、如何画出分析树 三、子树 四、二义性文法的定义 五、在构造编译程序中如何处理 二义性文法,29,设G=(VT,VN,S,P),G的一棵分析树满足如下条件: 1. 每个结点用VTVN中的一个符号作标记。 2根的标记是S。 3如果一个结点是内部结点,且有标记A,那么A 必在VN中。 4如果编号为n的结点有标记A,结点n1,n2,nk 是点n的从左到右的儿子,并分别有标记 X1,X2,Xk,则AX1X2XkP。 5. 如果结点n有标记,那么结点n是叶子,且 是它父亲唯一的儿子。,一、分析树的定义,30,例2.5 G=(VT,VN,S,P), 其中 P: SaASa A SbA SS ba,3,1,2,4,6,5,7,8,9,10,11,S,a,A,S,b,a,a,S,A,a,b,31,根据推导序列,对每步推导画相应分枝,A,S,a,S,b,S,A,a,a,b,a,aSbAS,aabAS,aabbaS,aabbaa,aAS,S,二、如何画出分析树 (1.自顶向下),32,根据归约序列,对每步归约画相应分枝,A,S,a,S,b,S,A,a,a,b,a,aAa,aSbAa,aSbbaa,aabbaa,aAS,S,二、如何画出分析树 (2.自底向上),33,一个句型推导或分析用一棵树结构图示出来,它反应了一个句子语法结构的层次。 2. 对于一个句子的多种推导(若文法是无二义 性的),采用各种推导过程,画出的分析树 是一样的。分析树并未描述推导过程。 在书中,用画分析树的过程解释语法分析过 程,用分析树图解语法结构。 分析树是推导的图形表示。,关于分析树的几点说明,34,一棵分析树中一个特有的结点连同它的全部后裔,连接这些后裔的边以及这些结点的标记。,S,A,b,S,a,S,b,a,A,a,a,三、 子树,梯形中为 一棵子树。,35,短语:一棵子树的所有叶子自左至右排列起来形成 一个相对于子树根的短语。 直接短语:仅有父子两代的一棵子树,它的所有叶 子自左至右排列起来所形成的符号串。 句柄:一个句型的分析树中最左最下那棵只有父子 两代的子树的所有叶子的自左至右排列。 例如,对表达式文法GE和句子a1+a2*a3,挑选 出推导过程中产生的句型中的短语,直接短语,句柄。,用子树解释短语,直接短语,句柄:,36,E,E+T,T+T,F+T, a1+T, a1+T*F, a1+F * F, a1+a2 *F,E+T,T,T+T,F,F+T,a1, a1+T,a1, T*F, a1+T*F,a1, F,F*F, a1+F*F,a1, a2,a1+ a2 *F, a2 *F,a1, a2, a3, a2 * a3 a1+ a2 *a3,E,E,+,T,T,F,a1,T,*,F,F,a2,a3,a1+a2 *a3,短语,37,E,E+T,E+T*F,E+T*a3,E+F* a3,E+a2 * a3,T+a2 * a3,F+a2 * a3,E,E,+,T,T,F,a1,T,*,F,F,a2,a3,a1+a2 *a3,38,1. 描述一个句子的文法不是唯一的; 2. 对于一个句子的分析应是唯一的。 考虑表达式下面的文法 GE,其产生式如下: EE+EE*E (E) a 对于句子a+a*a, 有如下两个最左推导: EE+E a+E a+E*E a+a*E a+a*a E E*E E+E*E a+E*E a+a*E a+a*a,四、文法的二义性的定义,39,EE+E a+E a+E*E a+a*E a+a*a,E E*EE+E*E a+E*Ea+a*E a+a*a,E,E,+,E,E,*,E,a,a,a,E,E,*,E,+,E,E,a,a,a,最左推导,40,EE+E E+E*E E+E*a E+a*a a+a*a,E E*EE*a E+E*aE+a*a a+a*a,E,E,+,E,E,*,E,a,a,a,E,E,*,E,+,E,E,a,a,a,最右推导,41,如果一个文法的句子存在两棵分析树,那么,该 句子是二义性的。如果一个文法产生二义性的句 子,则称这个文法是二义性的; 否则,该文法是无二 义性的。 几点说明: 1 . 一般来说,程序语言存在无二义性文法, 对于表达式来说,文法(2 .1)是无二义性 的。,二义性(或歧义性,ambiquity)的定义:,42,2. 在能驾驭的情况下,经常使用二义性文 法。 对于条件语句,经常使用二义性文法描述它: S if expr then S if expr then S else S other 二义性的句子: if e1 then if e2 then s1 else s2,43,描述if语句的无二义性文法的产生式: Smathed_s unmathed_s mathed_s if expr then mathed_s else mathed_s other unmathed_s if expr then S if expr then mathed_s else unmathed_s 它显然比较复杂。,44,对于任意一个上下文无关文法,不存在 一个算法,判定它是无二义性的;但能给出一组充分条件,满足这组充分条件的文法是无二义性的。 4. 存在先天二义性语言。例如, aibicji,j1 aibjcji,j1 存在一个二义性的句子akbkck。,45,压缩过的文法(化简了的文法): 1形式的产生式: AA P ; 2. 每个非终结符号A必须都有用处。即, S A 且 A , VT*,*,+,46,2.4 形式语言概观,2.4. 1 文法分类 2.4. 2 非上下文无关文法的语言结构 2.4. 3 上下文无关语言和正规语言的区别,47,逐渐对产生式施加限制 0型:G=(VT,VN,S,P) 规则形式 : , (VTVN)*, 推导: 1型(上下文有关) : 规则形式 : A A VN, ,. (VTVN)*, 2型(上下文无关):规则形式 : A A VN, (VTVN)* 3型(右线性): A aB A a (左线性) A Ba A a a VT,2.4.1 文法分类 : 0型,1型,2型,3型,48,在我们使用的程序语言中,有些语言结构并不是总能用上下文无关文法描述的。 例2.9 L1=wcw|wa,b+。例如,aabcaab就是 L1的一个句子。这个语言是检查程序 中标 识符的声明应先于引用的抽象 。 例2.10 L2=anbmcndm|n,m0,它是检查过程声 明的形参个数和过程调用的实数个数一致 问题的抽象。,2.4.2 非上下文无关的语言结构,49,语言中过程定义和引用的语法并不涉及 到参数个数,例如,Pascal的过程语句可描述为 s-callid(r-list) r-listr-list,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会计技能考试题库及答案
- 眼镜学考试题库及答案
- 海南安检证考试题库及答案
- 瑞声科技培训笔试题目及答案
- 人事专员笔试试题及答案
- 国际碳交易视角下森林碳汇市场价格的多维剖析与策略构建
- 2025免疫培训试题及答案
- 地球公转与四季地理基础知识试题及答案
- 涂料清工合同(标准版)
- 音乐旋律创作音乐基础知识试题及答案
- 2025河南新乡长垣市公证处招聘合同制人员5人考试参考题库及答案解析
- 颈椎骨折课件导图
- 2025至2030中国工业云平台行业发展研究与产业战略规划分析评估报告
- 2025餐饮合伙经营合同协议书
- 2025年山东西学中题库及答案
- 14.2物质的比热容同步练习(含答案) 沪科版物理九年级全一册
- 《国家机构有哪些》课件
- 肉制品安全培训会课件
- 五年级数学口算训练题库及解题技巧
- 江苏省泰州市兴化市昭阳湖初级中学2023-2024学年七年级上学期语文第一次质量抽测试卷(含答案)
- 2024夏季中国东方航空股份有限公司社会招聘笔试模拟试题含答案详解(能力提升)
评论
0/150
提交评论