最新【考研计算机专业课】天津大学 编译原理PPT课件 Part4语法分析(共42张PPT课件).pptx
《最新【考研计算机专业课】天津大学 编译原理PPT课件 Part4语法分析(共42张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新【考研计算机专业课】天津大学 编译原理PPT课件 Part4语法分析(共42张PPT课件).pptx(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Part4Part4语法分析语法分析第一页,共四十二页。语法分析器的作用语法分析器的作用(zuyng)(zuyng)第二页,共四十二页。以语法分析器为核心以语法分析器为核心(hxn)(hxn)的编译器模型的编译器模型语法分语法分析器析器词法分词法分析器析器中间代码中间代码生成器生成器语义分析器语义分析器一部分中一部分中间代码间代码输入字输入字符串符串程序入口程序入口初始化工作初始化工作第三页,共四十二页。语法分析器的作用语法分析器的作用(zuyng)(zuyng)接收词法分析器提供的记号串接收词法分析器提供的记号串检查记号串是否检查记号串是否(sh fu)能由源程序语言的文法产生能由源程序语言
2、的文法产生用易于理解的方式提示语法错误信息,并能从常见的用易于理解的方式提示语法错误信息,并能从常见的错误中恢复过来错误中恢复过来语法分语法分析器析器词法词法分析器分析器符号表符号表前端的其前端的其余部分余部分源程序源程序记号记号取下一取下一个记号个记号语法树语法树中间表示中间表示第四页,共四十二页。语法分析器工作语法分析器工作(gngzu)(gngzu)原理原理语言的结构是用上下文无关文法描述的,因此,语法分析器的工语言的结构是用上下文无关文法描述的,因此,语法分析器的工作本质上就是按照文法的产生式,识别输入符号串是否为一个句作本质上就是按照文法的产生式,识别输入符号串是否为一个句子。子。语
3、法分析器是从左向右的扫描输入字符串,每次读入一个符号,语法分析器是从左向右的扫描输入字符串,每次读入一个符号,并判断,看是否能从文法的开始符号出发并判断,看是否能从文法的开始符号出发(chf)推导出这个输入串。推导出这个输入串。或者,从概念上讲,就是要建立一棵与输入串匹配的语法分析树。或者,从概念上讲,就是要建立一棵与输入串匹配的语法分析树。语法分析器分类语法分析器分类 通用的语法分析方法,用来分析任何文法,生成编译器时效率太低通用的语法分析方法,用来分析任何文法,生成编译器时效率太低编译器使用的语法分析方法编译器使用的语法分析方法处理文法的一些子类处理文法的一些子类自顶向下(建立分析树)自顶
4、向下(建立分析树)LL文法,其分析器常用手工实现文法,其分析器常用手工实现自底向上(建立分析树)自底向上(建立分析树)LR文法,其分析器常利用自动生成工具构造文法,其分析器常利用自动生成工具构造第五页,共四十二页。自顶向下分析面临自顶向下分析面临(minlng)(minlng)的困的困难难第六页,共四十二页。自顶向下分析自顶向下分析(fnx)(fnx)面临的困难面临的困难 自顶向下分析的主旨是,对任何输入自顶向下分析的主旨是,对任何输入(shr)串,试图用串,试图用一切可能的办法,从文法的开始符号(根结)出发,一切可能的办法,从文法的开始符号(根结)出发,自顶向下的为输入自顶向下的为输入(sh
5、r)串建立一棵语法树。串建立一棵语法树。或者说,为输入串寻找一个最左推导。或者说,为输入串寻找一个最左推导。这种分析过程本质上是一种试探过程,是反复使用不这种分析过程本质上是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。同产生式谋求匹配输入串的过程。 自顶向下分析的一般方法是带自顶向下分析的一般方法是带“回溯回溯”的。的。第七页,共四十二页。自顶向下分析自顶向下分析(fnx)(fnx)的简单例子的简单例子假定文法假定文法(wnf)GS,以及输入串,以及输入串x*y(记为(记为)。)。SxAyA*|*初始化:初始化:第一步扩展第一步扩展Sx*yIPSx*yIPyAx第八页,共四十二页。
6、自顶向下分析的简单自顶向下分析的简单(jindn)(jindn)例子例子假定假定(jidng)文法文法GS,以及输入串,以及输入串x*y(记为(记为)。)。SxAyA*|*第二步扩展:第二步扩展:回溯回溯x*yIPSx*yIPyAx*SyAx*第九页,共四十二页。自顶向下分析面临自顶向下分析面临(minlng)(minlng)的困难的困难 文法的左递归性问题。含有左递归的文法将使上述的自顶向下的文法的左递归性问题。含有左递归的文法将使上述的自顶向下的分析过程陷入无限循环。因此,我们要使用自顶向下分析法必须分析过程陷入无限循环。因此,我们要使用自顶向下分析法必须要消除文法的左递归。要消除文法的左
7、递归。由于回溯,就碰到一大堆的麻烦事情。如果我们走了一大段错路,最后由于回溯,就碰到一大堆的麻烦事情。如果我们走了一大段错路,最后必须回头,那么,就应把已经作的一大堆语义工作(指中间代码生成工必须回头,那么,就应把已经作的一大堆语义工作(指中间代码生成工作和各种表格的簿记工作)推倒重来。这些事情既麻烦又费时间,所以,作和各种表格的簿记工作)推倒重来。这些事情既麻烦又费时间,所以,最好设法最好设法(shf)消除回溯。消除回溯。在上述的自顶向下分析过程中,当一个非终结符用某一候选在上述的自顶向下分析过程中,当一个非终结符用某一候选 匹配成功时,匹配成功时,这种成功可能是暂时的。这种成功可能是暂时的
8、。当最终报告分析不成功时,难于知道输入串出错的确切位置。当最终报告分析不成功时,难于知道输入串出错的确切位置。由于带回溯的自顶向下分析方法实际上采用了一种穷尽一切可能由于带回溯的自顶向下分析方法实际上采用了一种穷尽一切可能的试探法,因此效率很低。的试探法,因此效率很低。第十页,共四十二页。LL(1)LL(1)分析法分析法第十一页,共四十二页。消除消除(xioch)(xioch)左递归左递归直接直接(zhji)左递归的消除左递归的消除PP | PPPP | EE+T | TTT*F | FF(E) | iETEE+TE | TFTT*FT | F(E) | i第十二页,共四十二页。消除消除(xi
9、och)(xioch)左递归的算法左递归的算法如果一个文法不含回路(形如如果一个文法不含回路(形如P=+P的推导),也不含以的推导),也不含以为右部的为右部的产生式,那么执行下述算法将保证消除左递归(但改写后的文法可产生式,那么执行下述算法将保证消除左递归(但改写后的文法可能含有能含有为右部的产生式)。为右部的产生式)。 把文法把文法G的所有非终结符按任一种顺序排列成的所有非终结符按任一种顺序排列成P1,P2,Pn;按此顺;按此顺序执行:序执行:FOR i := 1 TO n DOBEGINFOR j:= 1 TO i-1 DO把所有形如把所有形如PiPj的规则改写为:的规则改写为:Pi1 |
10、 2| | k。其中其中Pj1 | 2 | | k是关于是关于Pj的所有规则;的所有规则;消除关于消除关于Pi的直接的直接(zhji)左递归左递归END化简由第化简由第2步得到的文法。即去除那些从开始符号出发永远无法到达的步得到的文法。即去除那些从开始符号出发永远无法到达的非终结符的产生式规则。非终结符的产生式规则。第十三页,共四十二页。消除消除(xioch)(xioch)左递归的例子左递归的例子SQc | cQRb | bRSa |aRSa |aQSab | ab | bSSabc | abc | bc | cSabcS | bcS | cSSabcS | RSa |aQSab | ab |
11、 bSabcS | bcS | cSSabcS | SQc | cQRb | bRbcaR |caR | aRRbcaR | 第十四页,共四十二页。消除消除(xioch)(xioch)回溯、提取左因子回溯、提取左因子 为了消除回溯就必须保证:为了消除回溯就必须保证:对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面临的输入符号准确地指派它的一个候选去执行任务临的输入符号准确地指派它的一个候选去执行任务(rn wu),并且此,并且此候选的工作结果应该是确信无疑的。候选的工作结果应该是确信无疑的。也就是说,若此候选获得成功匹配,那么
12、这种匹配决不会是虚假的;若此也就是说,若此候选获得成功匹配,那么这种匹配决不会是虚假的;若此候选无法完成匹配任务,则任何其他候选也肯定无法完成。候选无法完成匹配任务,则任何其他候选也肯定无法完成。 假定现在轮到非终结符假定现在轮到非终结符A区执行匹配(或称识别)任务,区执行匹配(或称识别)任务,A共有共有n个候选个候选1, 2, , n,即,即A1 | 2 | | n。A所面临的第一个输入符号为所面临的第一个输入符号为a,如果,如果A能够根据不同的输入符号指派能够根据不同的输入符号指派相应的候选相应的候选i作为全权代表去执行任务,那就肯定无需回溯。作为全权代表去执行任务,那就肯定无需回溯。在这
13、里已不再是让某个候选去试探性的执行任务,而是根据所面临的输入符号在这里已不再是让某个候选去试探性的执行任务,而是根据所面临的输入符号准并的指派唯一的一个候选。准并的指派唯一的一个候选。第十五页,共四十二页。消除回溯、提取消除回溯、提取(tq)(tq)左因子左因子令是一个不含左递归的文法,对令是一个不含左递归的文法,对G的所有非终结符的每个候选的所有非终结符的每个候选定义定义它的终结首符集它的终结首符集FIRST()为:为:FIRST()=a | =*a, aVT 若若=*,则规定,则规定(gudng)FIRST()FIRST()是是的所有可能推导的开头终结符或可能的的所有可能推导的开头终结符或
14、可能的 如果非终结符的所有候选首符集两两不相交,即的任何两个如果非终结符的所有候选首符集两两不相交,即的任何两个不同候选不同候选i和和FIRST(i) FIRST(j)=那么当要求匹配输入串时,就能根据它所面临的第一个输入那么当要求匹配输入串时,就能根据它所面临的第一个输入符号,准确的指派某一个候选前去执行任务。这个候选就是那符号,准确的指派某一个候选前去执行任务。这个候选就是那个终结首符集含的个终结首符集含的。 第十六页,共四十二页。消除回溯、提取消除回溯、提取(tq)(tq)左因子左因子提取左因子的方法提取左因子的方法假定的规则是:假定的规则是:1 |2 | |n |1 |2 | |m(其
15、中,每个(其中,每个不以不以开头)开头)那么这些规则可以那么这些规则可以(ky)改写为:改写为:AA |1 |2 | |mA1 |2 | |n经过反复提取左因子,就能够把每个非终结符(包括新引进者)经过反复提取左因子,就能够把每个非终结符(包括新引进者)的所有候选首符集便成为两两不相交。我们为此要付出的代价是的所有候选首符集便成为两两不相交。我们为此要付出的代价是大量引进新的非终结符和大量引进新的非终结符和产生式。产生式。 第十七页,共四十二页。LL(1)LL(1)分析分析(fnx)(fnx)条件条件ETEE+TE | TFTT*FT | F(E) | i对输入对输入(shr)串串i+i进行自
16、顶向下进行自顶向下分析分析Ei + iIPTEiFIRST(TE)Ei + iIPTEiFIRST(FT)FTEi + iIPTEiFIRST(i)FTi第十八页,共四十二页。LL(1)LL(1)分析分析(fnx)(fnx)条件条件ETEE+TE | TFTT*FT | F(E) | i对输入串对输入串i+i进行进行(jnxng)自顶向下自顶向下分析分析Ei + iIPTE+不属于不属于(shy)T的任一候选式的的任一候选式的首符集首符集FTiETEFTi+TEFTi第十九页,共四十二页。LL(1)LL(1)分析分析(fnx)(fnx)条件条件只有当只有当a是允许在文法的某个句型中跟在是允许在
17、文法的某个句型中跟在A后面的终结符时,才可能允后面的终结符时,才可能允许许A自动匹配成功,否则,自动匹配成功,否则,a在这里的出现就是一种语法错误。在这里的出现就是一种语法错误。假定假定S是文法是文法G的开始符号,对于的开始符号,对于G的任何非终结符的任何非终结符A,我们定义,我们定义(dngy)FOLLOW(A)=a | S=*Aa,aVT特别是,若特别是,若S=*A,则规定,则规定#FOLLOW(A)。换句话说,。换句话说,FOLLOW(A)是所有句型中出现在紧接是所有句型中出现在紧接A之后的终结符或之后的终结符或“#”。 当非终结符当非终结符A面临输入符号面临输入符号a,且,且a不属于不
18、属于A的任意候选首符集但的任意候选首符集但A的某个候选首符集包含的某个候选首符集包含时,只有当时,只有当aFOLLOW(A)时,才可时,才可能允许能允许A自动匹配。自动匹配。 第二十页,共四十二页。LL(1)LL(1)分析分析(fnx)(fnx)条件条件通过上面的讨论,我们可以找出满足构造不带回溯的自顶向下通过上面的讨论,我们可以找出满足构造不带回溯的自顶向下分析的文法条件。分析的文法条件。 文法不含左递归文法不含左递归对于文法中每一个非终结符对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。的各个产生式的候选首符集两两不相交。即,若即,若A1 |2 | |n,则,则FIRST(i
19、)FIRST(j)=(ij)对文法中的每个非终结符对文法中的每个非终结符A,若它存在某个候选首符集包含,若它存在某个候选首符集包含,则,则,FIRST(A)FOLLOW(A)=如果一个文法如果一个文法G满足以上条件,则称该文法满足以上条件,则称该文法G为为LL(1)文法。文法。这里这里LL(1)中的第一个中的第一个L表示表示(biosh)从左到右扫描输入串,第二个从左到右扫描输入串,第二个L表示表示(biosh)最左推导,最左推导,1表示表示(biosh)分析时每一步只需向前查看一个符号。分析时每一步只需向前查看一个符号。 第二十一页,共四十二页。LL(1)LL(1)分析分析(fnx)(fnx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研计算机专业课 最新【考研计算机专业课】天津大学 编译原理PPT课件 Part4语法分析共42张PPT课件 最新 考研 计算机 专业课 天津大学 编译 原理 PPT 课件 Part4 语法分析 42
链接地址:https://www.taowenge.com/p-24022443.html
限制150内