课件编译原理_第1页
课件编译原理_第2页
课件编译原理_第3页
课件编译原理_第4页
课件编译原理_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、 ing/上载区/其他/编译原理(天平与成教)92/编译原理(天平与成教)第四章 自上而下语法分析4.1 语法分析程序的功能一、语法分析的地位 是编译程序的核心部分。二、语法分析的功能以单词符号为输入识别语法成份对单词序列进行语法检查报错或输出某种形式的语法树核心:识别由词法分析得出的单词序列是否是给定文法的句子。三、语法分析的理论基础上下文无关文法和下推自动机第四章 自上而下语法分析 4.1 语法分析程序的功能四、语法分析的方式1、自上而下语法分析 反复使用不同产生式进行推导以谋求与输入符号串相匹配。2、自下而上语法分析 对输入符号串寻找不同产生式进行归约直到文法开始符号。注:这里所说的输入

2、符号指词法分析所识别的单词。第四章 自上而下语法分析4.2 自上而下语法分析法一、下推自动机模型有限状态控制器下推栈输入带输出带注:1)PDA和FA的模型相比,多了一个下推栈。 2)PDA的动作由三个因素来决定:当前状态、读头所指向符号、下推栈栈顶符号。 3)一个输入串能被PDA所接受,仅当输入串读完,下推栈变空;或输入串读完,控制器到达某些终态。第四章 自上而下语法分析 4.2 自上而下语法分析法一、下推自动机模型注:4)输出带用以记录推导或规约构成所用的产生式编号。5)正规文法和有限自动机仅适合于描述和识别高级语言的各类单词,语句可用上下文无关文法来描述,而下推自动机又恰好能识别上下文无关

3、文法所能描述的语言,因此上下文无关文法及其对应的下推自动机就成为编译技术中语法分析的理论基础。第四章 自上而下语法分析 4.2 自上而下语法分析法二、下推自动机的形式定义PDA是一个七元组:M=(Q ,H,q0,z0,F)H:下推栈内字母表z0 :下推栈的栈初始符,是H中的元素。 :Q( )H到QH*的有限子集映射。例如: (q,a,z)(q1,r1),(q2,r2)(qn,rn),其意义是:设控制器当前状态为q,下推栈顶符号为z,输入符号为a(可为空),则状态转换到序偶集(q1,r1),(q2 ,r2)(qn,rn)(qi为下一状态, ri为代替z的栈顶符号串)FQ是控制器的终态集第四章 自

4、上而下语法分析 4.2 自上而下语法分析法二、下推自动机的形式定义注:1)由此定义的PDA肯定是不确定的PDA。这给语法分析会带来不确定性。我们在构造PDA M的算法的时候,要对PDA做一些限制。 2) PDA采用“”来表示PDA做了一步动作。 3)输入串能为PDA所接受,仅当输入串读完,下推栈为空;或者输入串读完,控制器到达某些终态。 4)有时,下推自动机还配置输出带,以记录推导或归约过程所用的产生式编号。 5)对于形如A的产生式,有(q, ,A)=(q, ),这称为推导 6) (q, a,a)=(q, )称为匹配,其中a第四章 自上而下语法分析 4.2 自上而下语法分析法二、下推自动机的形

5、式定义由CFG G= (VN ,P,S) 构造PDA M的算法:G= (VN ,P,S) M=(Q,H,q0,z0,F)令:Q=F=q0 即控制器只有一个状态 H= VN ; z0 =S; 映射关系如下: (1)对于形如A的产生式,有(q, ,A)=(q, ),这称为推导 (2)(q, a,a)=(q, )称为匹配,其中a。此PDA 停止于栈空。第四章 自上而下语法分析 4.2 自上而下语法分析法二、下推自动机的形式定义例 试给出接受语言Lancbn|n=0 的下推自动机。解: 1、生成L语言相应文法的产生式为S aSb|c 2、生成相应的PDA M=(Q ,H,q0,z0,F) PDA M=

6、(q,a,b,c,S,a,b,c, ,q,S,q) 其中 为:1) (q,a,a)= (q, ) 2) (q,b,b)= (q, ) 3) (q,c,c)= (q, ) 4) (q, S)=(q,aSb),(q,c)有限状态控制器 aaacbb#输出带S#其分析过程:(q,aacbb,S) a(q,aacbb,aSb) (q,acbb,Sb) a(q,acbb,aSbb) (q,cbb,Sbb) b(q,cbb,cbb) (q,bb,bb) (q,b,b) (q, , )第四章 自上而下语法分析 4.2 自上而下语法分析法三、自上而下语法分析的思想从文法的开始符号开始,反复使用不同产生式进行推

7、导以谋求与输入符号串相匹配。对任何输入串W试图用一切可能的方法,从文法的开始符号出发,自上而下地为它建立一颗语法树。若建立成功,则W为相应文法的一个句子。注:此处的输入符号串是指词法分析结果的一串二元式。 试探法1、基本构成 约定:下推栈的初始状态包含两个符号:#S,其中#为栈底,S为文法开始符号。有限状态控制其中状态只有一个,可以省缺。整个分析过程在语法分析程序控制下进行。在语法分析中用到的文法产生式的表,称为语法表。语法分析程序语法表 a+b#输出带S#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法2、算法(

8、语法分析程序所要执行动作):(1)若栈顶符号x是非终结符,查询语法表,找出一个以x作为左部的产生式,x出栈,并将其右部以自右向左顺序入栈,且输出带记下产生式编号推导。(2)若栈顶符号x是终结符,且读头下的符号也是x,则x出栈,读头指向下一个符号匹配。(3)若栈顶符号x是终结符,但读头下的符号不是x,则匹配失败。这说明可能前面推导时选错了候选式,退回到上次推导现场(包括栈顶符号、读头的指针和输出带上信息)回溯。第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法2、算法 (4)回溯后选取另一候选式进行推导,若没有候选式可选,则进一步回溯。若回溯到开始符号又已无候选式可选,则识别失败。

9、(5)若栈内仅剩下“”,且读头也指向“”,则识别成功。第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法分析程序语法表 x * y #输出带S#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法分析程序语法表 x * y #1 xAy#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)

10、A *语法分析程序语法表 x * y #1Ay#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法分析程序语法表 x * y #1,2*y#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法分析程序语法表 x * y #1,2*y#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A

11、*语法分析程序语法表 x * y #1Ay#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法分析程序语法表 x * y #1,3*y#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法分析程序语法表 x * y #1,3y#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法例 文法产生式如下,请分析符号串x*y#的过程 1) S xAy 2) A * 3)A *语法

12、分析程序语法表 x * y #1,3#第四章 自上而下语法分析 4.2 自上而下语法分析法四、一般方法3、带回溯的自上而下分析法的缺陷1)如果文法存在左递归,语法分析会无限循环下去。2)若产生式存在多个候选式,选择哪个进行推导完全是盲目的。3)回溯会引起时间和空间的大量消耗。4)如果被识别的语句是错的,算法无法指出错误的确切位置。第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法1 、消除左递归1)什么是左递归左递归:文法存在产生式P Pa直接左递归: P Pa间接左递归: P Aa , APb2)消除左递归消除直接左递归消除间接左

13、递归第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法2 、消除直接左递归设有文法G=(VN, VT ,P,S),其中产生式P为 P P| , V+ , V+ 且不以P开头将它转换为等价式: P P P P| 一般地:将P P 1| P 2|. |P m|1| 2|.| n 转换为: P 1P| 2 p| n P P 1P| 2P| mP| 例:文法G: (1)E E+T|T (2)T T*F|F (3)F (E)| i转化为G: (1) E TE E +TE| (2) T FT T *FT| (3) F (E)| I例:文法G:P

14、 PaPb|BaP转化为:P BaPP P aPbP| 注:只有最左边的P参加变换。第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法3 、消除间接左递归1)把文法G的所有非终结符按任意顺序排列成P1,P2,Pn,然后按此顺序执行步骤2。2) For (I=1,I=n,I+) for (k=1,k=I-1,k+) 把形如Pi Pk的规则改写为 Pi 1 | 2 | ,n , 其中Pk 1| 2| ,n 消除Pi规则的直接左递归;3)删去从文法开始符号不可达的非终结符产生式。3 、消除间接左递归注:1)此算法适用于消除不含形如P P的

15、产生式,也不含以为右部的产生式的文法 2)这里第二步所做的工作是: a)若产生式出现直接左递归则用消除直接左递归的方法消除掉。 b)若产生式右部最左符号是非终结符且其序号大于左部的非终结符,则不处理。 c)若序号小于左部的非终结符,则将这序号小的非终结符用其右部串来取代,然后消除新的直接左递归。第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法例:对下面文法消除左递归: (1) S Qc|c (2)Q Rb|b (3) R Sa|a解:1)对非终结符重新排序:R、Q、S 2)对R:S的序号大于R的序号,不处理。 对Q: R的序号1小

16、于Q的序号2,所以改写Q Rb|b ,将R Sa|a的右部取代R,得到: Q Sab|ab|b,记为:(2)式; 此时, S的序号大于Q的序号,不再处理。 对S: Q的序号2小于S的序号3,所以改写S Qc|c,将Q Sab|ab|b的右部取代Q,得到S Sabc|abc|bc|c;出现直接左递归,变换为: S (abc|bc|c)S S abcS| 3)由于 R Sa|a和 Q Sab|ab|b中的R,Q对开始符号S来说都是不可达非终结符,所以删除它们。故最后消除左递归后文法为: S (abc|bc|c)S S abcS| 注:1)若非终结符排列顺序不同,改写后的文法也不同,但它们是等价的。

17、 2)开始符号不能改变。附:采用扩充BNF表示法改写含直接左递规的规则使用扩充的BNF表示() 表提因子例: Uax|ay|az 改写为Ua(x|y|z) 重复次数的指定例:|50.a表a* 任选符号,表可有可无例:+|-第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法4、消除回溯1)产生回溯的原因 进行推导时,若产生式存在多个候选式,选择哪个候选式进行推导存在不确定性。2)消除回溯的基本原则 对文法的任何非终结符,若能根据当前读头下的符号,准确的选择一个候选式进行推导,那么回溯就可以消除。 注:之所以会产生回溯是因为在推导匹配的

18、过程中存在虚假匹配。第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法4、消除回溯 3)消除回溯的方法 预测与提左因子 4)预测 根据读头下符号选择候选式,使其第一个符号与读头下符号相同,或该候选式可推导出的第一个符号与读头下符号相同。这相当于向前看了一个符号,所以称为预测。 注:使用了预测之后,选择候选式不再是盲目的了,所以也就无需回溯。第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法4、消除回溯 5)求候选式的终结首符集 令G是一个不含左递归的文法,对G的所有非终结符的各候选式可求出它的终结首符First(). First()a| a,a VT 特例:若 ,那么 First()。 即, First()集合包括了的所有可能推导的开头终结符或可能的。*第四章 自上而下语法分析 4.2 自上而下语法分析法五、自上而下分析法的一般问题-回溯不带回溯的自上而下分析算法4、消除回溯 5)求候选式的终结首符集 设A是非终结符,且A|(

温馨提示

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

评论

0/150

提交评论