语法分析-自上而下分析.ppt
《语法分析-自上而下分析.ppt》由会员分享,可在线阅读,更多相关《语法分析-自上而下分析.ppt(113页珍藏版)》请在三一办公上搜索。
1、程序设计语言编 译 原 理主讲:张永梅,课程安排,实验时间:实验一词法分析:第6、7、8、9周实验二语法分析:第13、14、15、16周实验地点:计算机系实验中心(5教910、911)指导教师:杨健、张谦,实验安排,杨健:张谦:邮箱:地点:五教8层802图像处理研究室,数字媒体制作实验室910 计11-12软件开发实验室911 计11-34第6、7、8、9周,都是周二1,2节,实验一 词法分析器(第6、7、8、9周),第四章 语法分析-自上而下分析,4.1 语法分析器的功能4.2 自上而下分析面临的问题4.3 LL(1)分析法4.4 递归下降分析程序构造4.5 预测分析程序,第四章 语法分析-
2、自上而下分析,了解:语法分析器的功能。熟悉:预测分析程序、递归下降分析程序的设计方法。掌握:LL(1)分析法的条件,消除左递归的算法,预测分析表的构造。,第四章 语法分析-自上而下分析,作业:4.1,4.2,4.1 考虑下面文法G1:,Sa(T)TT,SS(1)消去G1的左递归。然后对每个非终结符,写出不带回溯的递归子程序。(2)经改写后的文法是否是LL(1)的?给出它的预测分析表。,第四章 语法分析-自上而下分析,4.2 对下面的文法G:ETEE+ETFTTTFPFF*FP(E)ab(1)计算这个文法的每个非终结符的FIRST和FOLLOW。(2)证明这个文法是LL(1)的。(3)构造它的预
3、测分析表。(4)构造它的递归下降分析程序。,第三章 词法分析,实验一 词法分析器,每次实验结束都必须写出实验报告,报告内容包括:实验题目、实验目的和要求,实验的实现(包括主要设计思想、实现算法、主要技术问题的处理方法,及实验结果),结论分析。,实验二 语法分析器,实验二 语法分析器构造,一、目的和要求 借助于词法分析程序提供的分析结果,编写一个算符优先语法分析程序,程序能进行语法结构分析和错误检查并产生相应的归约信息。同时给出出错信息和错误类型,从而加深对语法分析的理解。二、实验内容 给定文法G和算符优先分析法,构造其算符优先分析程序。文法G:语句赋值语句条件语句转移语句带标号的赋 值语句带标
4、号的赋值语句赋值语句变量=算术表达式条件语句 IF THEN 语句 IF THEN 语句 ELSE 语句,实验二 语法分析器构造,转移语句GOTO标号变量标识符标识符字母字母ABZabz数字019算术表达式项算术表达式+项算术表达式-项项因子项*因子项/因子因子项因子变量常数(表达式)布尔表达式关系符=标号常数常数数字,实验二 语法分析器构造,三、说明和提示1.本实验的优先表可以手工先设计好。2.本实验要求中提出的“产生相应的归约信息”意指在语法分析的过程中,一旦产生归约,在程序上产生并最终输出归约产生式序号。3.出错类型的产生可预先对应优先表中出错栏列表说明其出错类型,并分别编序,当分析中产
5、生错误时以字符串输出相应表中错误信息。4.算法采用一个符号栈的数据结构,既用它存放终结符,也用它存放非终结符。,第四章 语法分析-自上而下分析,4.1 语法分析器的功能4.2 自上而下分析面临的问题4.3 LL(1)分析法4.4 递归下降分析程序构造4.5 预测分析程序,词法分析器,语法分析器,语义分析与中间代码产生器,优化器,表格管理,出错处理,目标代码生成器,编译程序总框,本章主要介绍语法分析的处理要进行语法分析,必须对语言的语法结构进行描述。采用正规式和有限自动机可以描述和识别语言的单词符号;用上下文无关文法来描述语法规则。,第四章 语法分析-自上而下分析,形式化定义:一个上下文无关文法
6、是一个四元式(VT,VN,S,)VT是一个非空有限集,它的每个元素称为终结符号;VN是一个非空有限集,它的每个元素称为非终结符号,VTVN=;S是一个非终结符号,称为开始符号;SVN。是一个产生式集合(有限),每个产生式的形式是P。其中,PVN,(VTVN)。开始符号S必须至少在某个产生式的左部出现一次。P1|2|n。其中,i称为是P的一个候选式。读作“定义”,直竖读为“或”,它是元语言符号。,2.3.1 上下文无关文法,2.3.1 上下文无关文法,定义:称A直接推出,即A 仅当A 是一个产生式,且,(VT VN)*。如果1 2 n,则我们称这个序列是从1到n的一个推导。若存在一个从1到n的推
7、导,则称1可以推导出n。对文法G(E):E i|E+E|E*E|(E)E(E)(E+E)(i+E)(i+i),用 表示:从1出发,经过0步或若干步,可以推出n。,所以:即 或,定义:假定G是一个文法,S 是开始符号。如果,则称是一个句型。仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为 L(G)。,通常,用 表示:从1出发,经过一步或若干步,可以推出n。,例:(i*i+i)是文法G(E):E i|E+E|E*E|(E)的一个句子。证明:E(E)(E+E)(E*E+E)(i*E+E)(i*i+E)(i*i+i)E,(E),(E+E),(E*E+E),(i*i+i)是句型
8、。,2.3.1 上下文无关文法,第四章 语法分析-自上而下分析,4.1 语法分析器的功能4.2 自上而下分析面临的问题4.3 LL(1)分析法4.4 递归下降分析程序构造4.5 预测分析程序,4.1 语法分析器的功能,语法分析的任务是分析一个文法的句子结构。语法分析器的功能:按照文法的产生式,识别输入符号串是否为一个句子。,策略:自上而下分析法,自下而上分析法。,两种方法反映了两种语法树的构造过程。,.,图4.1 语法分析器在编译程序中的地位,4.1 语法分析器的功能,语法分析的方法-自上而下分析法(Top-down),基本思想:它从文法的开始符号出发,反复使用各种产生式,寻找“匹配”的推导。
9、从树根到叶子来建立语法树。递归下降分析法:对每个非终结符号构造一个相应的子程序,每个子程序识别一定的语法单位,通过子程序间的信息反馈和联合作用实现对输入串的识别。预测分析程序优点:直观、简单和宜于手工实现。,语法分析的方法-自下而上分析法(Bottom-up)基本思想:从输入串开始,逐步进行“归约”,直到文法的开始符号。即从树末端开始,构造语法树。从树叶到树根来建立语法树。所谓归约,是指根据文法的产生式规则,把产生式的右部替换成左部符号。算符优先分析法:按照算符的优先关系和结合性质进行语法分析。适合分析表达式。LR分析法:规范归约,G(E):E i|E+E|E-E|E*E|E/E|(E)给出i
10、*i+i的语法树。i*i+i E*i+i E*E+i E+i E+E E,i,+,*,i,i,第四章 语法分析-自上而下分析,4.1 语法分析器的功能4.2 自上而下分析面临的问题4.3 LL(1)分析法4.4 递归下降分析程序构造4.5 预测分析程序,4.2 自上而下分析面临的问题,自上而下就是从文法的开始符号出发,向下推导,推出句子。自上而下分析的主旨:对任何输入串,试图用一切可能的办法,从文法开始符号(根结点)出发,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。,例 文法G(E):E iE E+EE E*EE(E)对句子(i+i)最左推导E(E)(E+E)(i+E)
11、(i+i),4.2 自上而下分析面临的问题,例 假定有文法G(S):(1)SxAy(2)A*|*分析输入串x*y,存在回溯的原因,文法中非终结符A的产生式右部称为A的候选式,如果有多个候选式左端第一个符号相同,则语法分析程序无法根据当前输入符号选择产生式,只能试探。,例 假定有文法G(S):(1)SxAy(2)A*|*分析输入串x*y,自上而下分析方法的步骤:(带回溯的试探过程)遇非终结符,就试图用某个候选式展开,期望此候选能匹配输入串,若不能匹配,则要回溯。遇终结符,就进行匹配,然后移动输入串指针IP指向下一个符号。回溯是一项复杂而费时的工作,须废弃已做的许多工作,恢复到前面的某一情况,效率
12、很低。,4.2 自上而下分析面临的问题,当某个非终结符有多个产生式候选时,可能带来如下问题:1.分析过程中,当一个非终结符用某一个候选匹配成功时,这种匹配可能是暂时的。出错时,不得不“回溯”。2.文法左递归问题。一个文法是含有左递归的,如果存在非终结符P,含有左递归的文法将使自上而下的分析陷入无限循环。,4.2 自上而下分析面临的问题,第四章 语法分析-自上而下分析,4.1 语法分析器的功能4.2 自上而下分析面临的问题4.3 LL(1)分析法4.4 递归下降分析程序构造4.5 预测分析程序,4.3 LL(1)分析法,构造不带回溯的自上而下分析算法要消除文法的左递归性克服回溯,4.3 LL(1
13、)分析法,4.3.1 左递归的消除 4.3.2 消除回溯、提左因子 4.3.3 LL(1)分析条件,4.3.1 左递归的消除,直接消除见诸于产生式中的左递归:假定关于非终结符P的产生式为 PP|其中不以P开头,不等于。可以把P的产生式等价地改写为如下的非直接左递归形式:PP PP|,左递归变右递归,例 文法G(E):EET|TTT*F|FF(E)|i经消去直接左递归后变成:ETE E+TE|TFT T*FT|F(E)|i,一般而言,假定P的产生式是PP1|P2|Pm|1|2|n其中,每个都不等于,每个都不以P开头。那么,消除P的直接左递归性就是将产生式改写成:P1P|2P|nPP1P|2P|m
14、P|,左递归变右递归,4.3.1 左递归的消除,例如文法G(S):SQc|cQRb|bRSa|a 虽没有直接左递归,但S、Q、R都是左递归的SQcRbcSabc,一个文法消除左递归的条件:不含以为右部的产生式不含回路。,4.3.1 左递归的消除,消除左递归的算法:(1)把文法G的所有非终结符按任一种顺序排列成P1,P2,Pn;按此顺序执行;(2)FOR i:=1 TO n DO BEGIN FOR j:=1 TO i-1 DO 把形如PiPj的产生式改写成 Pi1|2|k;(其中Pj1|2|k是Pj的产生式)消除Pi产生式的直接左递归性 END(3)化简由(2)所得的文法。去除那些从开始符号出
15、发永远无法到达的非终结符的产生式。,为非终结符编号,再采用代入法将间接左递归变为直接左递归,消除直接左递归。,例 考虑文法G(S)SQc|cQRb|bRSa|a令它的非终结符的排序为R、Q、S。对于R,不存在直接左递归。把R代入到Q的有关候选后,把Q的产生式变为 QSab|ab|b,现在的Q不含直接左递归,把它代入到S的有关候选后,S变成SSabc|abc|bc|c,消除S的直接左递归后:SabcS|bcS|cS SabcS|QSab|ab|b RSa|a,Q和R的规则已是多余的,化简为:SabcS|bcS|cSSabcS|文法(4.4),注意,由于对非终结符排序的不同,最后所得的文法在形式上
16、可能不一样。但不难证明,它们都是等价的。例如,若对文法非终结符排序选为S、Q、R,那么,最后所得的无左递归文法是:SQc|cQRb|b 文法(4.5)RbcaR|caR|aR R bcaR|文法(4.4)和(4.5)的等价性是显然的。,消除左递归前后,文法的开始符号不变。,4.3.1 左递归的消除,例 考虑文法G(S)SQc|cQRb|bRSa|a令它的非终结符的排序为S、Q、R。对于S 和Q都不存在直接左递归。把S代入到R的有关候选后,把R的产生式变为 R Qca|ca|a,把Q代入到R的有关候选后,R变成R Rbca|bca|ca|a,消除R 的直接左递归后:R bcaR|caR|aR R
17、bca R|,最后所得的无左递归文法是:SQc|c QRb|b 文法(4.5)RbcaR|caR|aR R bcaR|,4.3 LL(1)分析法,4.3.1 左递归的消除 4.3.2 消除回溯、提左因子 4.3.3 LL(1)分析条件,回溯问题,什么是回溯?,分析工作要部分地或全部地退回去重做叫回溯。,造成回溯的条件:,文法中,对于某个非终结符号的产生式右部有多个选择,并根据所面临的输入符号不能准确地确定所要的选择时,就可能出现回溯。,回溯带来的问题:,严重的低效率,只有在理论上的意义而无实际意义。,例 假定有文法G(S):(1)SxAy(2)A*|*分析输入串x*y,4.3.2 消除回溯、提
18、左因子,为了消除回溯就必须保证:对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面临的输入符号准确地指派它的一个候选去执行任务,并且此候选的工作结果应是确信无疑的。A 1|2|n,令G是一个不含左递归的文法,对G的所有非终结符的每个候选定义它的终结首符集FIRST()为:,特别是,若,则规定FIRST()。,若非终结符A的所有候选终结首符集两两不相交,即A的任何两个不同候选 i和 jFIRST(i)FIRST(j)当要求A匹配输入串时,A就能根据它所面临的第一个输入符号a,准确地指派某一个候选前去执行任务。这个候选就是那个终结首符集含a的。,FIRST()是的所有可能推导的开头终结符或
19、可能的。,提取公共左因子:假定关于A的产生式是 A 1|2|n|1|2|m(其中,每个 不以开头)那么,可以把产生式改写成AA|1|2|mA 1|2|n经过反复提取左因子,就能够把每个非终结符(包括新引进者)的所有候选首符集变成为两两不相交。,52,文法 S iBtSeS|iBtS|a B b 提取公共左因子改写文法。,提取公共左因子,将文法改写为 S iBtSS|a S eS|B b,4.3.2 消除回溯、提左因子,一个文法不含左递归,且所有候选式首符集两两不相交,但带产生式,在自上而下分析又带来新问题:这就引出自动匹配问题。,当非终结符A面临输入符号a,且a不属于A的任意候选首符集,但A的
20、某个候选首符集包含时,就一定可以使A自动匹配。这是一种错误。,4.3.2 消除回溯、提左因子,4.3 LL(1)分析法,4.3.1 左递归的消除 4.3.2 消除回溯、提左因子 4.3.3 LL(1)分析条件,文法是LL(1)的 第一个L 从左到右扫描输入串 第二个L 生成的是最左推导 1 向前看一个输入符号(lookahead),ETE E+TE|TFT T*FT|F(E)|i i+i,4.3.3 LL(1)分析条件,例 文法G(E):EET|TTT*F|FF(E)|i经消去直接左递归后变成:ETE E+TE|TFT T*FT|F(E)|i,i+i,IP,E,G(E):ETE E+TE|TF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法分析 自上而下 分析
链接地址:https://www.31ppt.com/p-6026177.html