编译原理-第5章--语法分析——自底向上分析方法.pptVIP

  • 17
  • 0
  • 约5.56千字
  • 约 32页
  • 2024-03-10 发布于四川
  • 举报

编译原理-第5章--语法分析——自底向上分析方法.ppt

第5章语法分析——自底向上分析方法5.1自底向上语法分析方法介绍5.2简单优先分析5.3LR(k)分析法5.1自底向上语法分析方法介绍

该方法基本思想:

从待分析的符号串开始,自左向右进行扫描,自下而上进行分析,通过反复查找当前句型的句柄,并使用产生式规则将找到的句柄归约为相应产生式的左部非终结符。这样,一步一步进行归约,试图逐步将输入串归约为文法的开始符号。如果可归约到文法的开始符号,则表示给定的符号串是正确的句子。否则表明符号串不是文法的句子。关键是每一步寻找当前句型的句柄。

例:有文法G[S]:SaAcBeAbAAbBd输入符号串为:abbcde,则自底向上归约过程为:表5-1所示。思想是依据一定原则预先确定文法的各个符号(包括终极符和非终极符)之间的优先关系,以此确定归约中的句柄并进行归约。5.2.1简单优先文法及其优先关系矩阵的构造简单优先分析技术是由Wirth和Weber于1966年提出的,曾用于开发AlogolW的分析器。该技术简单,规定任意的两个相继出现的文法符号A、B之间,可能有三种优先关系之一。分别是:???。定义5.1假定G是一个文法,A、B是G中任意两个符号(终极符或非终极符),则:若G中存在形如P?AB?的规则,A和B可以同时被归约,这样就说A和B有相同的优先关系,记作:A?B。若G中存在形如P?AX?的规则,且X?+B?使B先于A被归约,这样就说A的优先级低于B,记作:A?B。若G中存在形如P?XY?的规则,且X?+?A,Y?*B?,使A先于B被归约,这样就说A的优先级高于B,记作:A?B。以例5.2中文法,分析句子i*i,依据上述算法的语法分析过程如下:动作有四种可能:移入、归约、成功、报错。移入:把(s,a)的下一状态s’=goto[S,a]和输入符号压入栈内,下一输入符号变成当前输入符号;归约:指用产生式A??进行归约。若?的长度为r,则弹出栈顶r项,使栈顶状态变为sm-r,然后将(sm-r,A)的下一状态s’=goto[sm-r,A]和文法符号A压入栈内,栈顶变为(s’,A)。不改变当前输入符号。成功:语法分析成功,退出总控程序。报错:发现输入串含有错误,调用相应出错处理程序第5章语法分析——自底向上分析方法本章重点:自底向上分析原理;简单优先文法的判别与优先关系矩阵的构造;LR(k)分析法的工作过程;LR(0)分析方法;SLR(1)分析方法;几种LR分析法之间的关系。本章难点:简单优先文法的判别;LR(0)分析法;SLR(1)分析法。本章内容:5.2简单优先分析定理5.1设X1?XiXi+1?Xj?Xn是一个句型,若有Xi?Xi+1?Xi+2???Xj-1?Xj?Xj+1则Xi+1Xi+2?Xj-1Xj一定是该句型的简单短语。定义5.2若一个文法G满足下列条件,则称G为简单优先文法:文法符号集中的任意两个符号之间至多存在一种优先关系。文法中任意两个产生式均无相同右部。一个文法的全部优先关系可用矩阵来表示,称作优先关系矩阵。如何判断一个文法是否为简单优先文法,首先要确定文法中各符号之间的优先关系。例5.2已知文法G[E],判断该文法是否是简单优先文法。EE1E1E1+T|T1T1TTT*F|FF(E)|i文法符号的全部优先关系,可写成优先关系矩阵的形式,如下图:5.2.2简单优先分析算法1)根据已知文法构造相应的优先关系矩阵。2)设立符号栈S,将输入符号串“#X1X2?Xn#”从左到右依次压入符号栈S中,同时检查相邻符号Xi与Xi+1的优先关系,一旦出现关系Xi?Xi+1时停止压栈,进入下一步。3)栈顶当前符号为Xi,再从Xi开始,从右至左逐个检查栈中符号,直到某两个相

文档评论(0)

1亿VIP精品文档

相关文档