编译原理张晶版第五章自底向上优先分析法.pptVIP

  • 2
  • 0
  • 约1.07万字
  • 约 52页
  • 2017-10-02 发布于广东
  • 举报

编译原理张晶版第五章自底向上优先分析法.ppt

编译原理张晶版第五章自底向上优先分析法

中国科大 第五章 优先分析法 语法分析 推导: —自上而下的语法分析过程 —预测分析程序,递归下降分析法(最左推导) —注:要求文法是LL(1)文法 归约: —自下而上的语法分析过程 —简单优先分析法,算符优先分析法、LR分析法 一、自下而上的语法分析过程 1.自下而上的语法分析过程思想 —自下而上的语法分析过程是一个最左归约的过程,从输入串开始。朝着文法的开始符号进行归约,直到到达文法的开始符号为止的过程 —注意:输入串在这里是指从词法分析器送来的单词符号组成的二元式的有限序列 2.自下而上分析的PDA 一、自下而上的语法分析过程 注:1)初态时栈内仅有栈底符“#”,读头指在最左边的单词符号上 . 2)语法分析程序执行的动作: a)移进:读入一个单词并压入栈内,读头后移; b)归约:检查栈顶若干个符号能否进行归约,若能,就以产生式左部替代该符号串,同时输出产生式编号. c)识别成功:移进—归约的结局是栈内只剩下栈底符号和文法开始符号,读头也指向语句的结束符. d)识别失败. 一、自下而上的语法分析过程 例如:有文法如下: (1) S aAcBe (2) A b (3) A Ab (4) B d 问语句abbcde是不是该文法的合法语句? 二、确定的自下而上语法分析 1.优先分析器(Precedence Parser) 简单优先分析法 算符优先分析法 2.LR分析器 5.1 简单优先分析法 一、基本思想 1.相邻文法符号之间的优先关系 在句型中,句柄内各相邻符号之间具有相同的优先级,相同优先级用“ ” 由于句柄要先归约,所以规定句柄两端符号的优先级要比位于句柄之外的相邻符号的优先级高,优先级低于表示为“﹤”,优先级高于表示为“ >” 某句型中:N1…..Ni-1 Ni …… Nj > Nj+1…..Nn 5.1 简单优先分析法 一、基本思想 2 优先分析法的基本思想 句型中的Ni…..Nj是句柄,语法分析程序可以通过寻找 Ni-1﹤Ni和Nj > Nj+1来确定句柄的头尾,从而确定句柄进行归约。 5.1 简单优先分析法 二、简单优先文法 1. 定义:一个文法G,如果它不含e产生式,也不含任何右部相同的不同产生式,并且它的任何符号对(X,Y)——X,Y是终结符或非终结符——或者没有关系,或者存在优先级相同或低于、高于等关系之一,则这是一个简单优先文法。 5.1 简单优先分析法 二、简单优先文法 5.1 简单优先分析法 PDA读入一个单词后,比较栈顶符号和该单词 的优先级,若栈顶符号优先级低于该单词,继续读入;若栈顶符号优先级高于或等于读入符号,则找句柄进行归约,找不到句柄就继续读入,直到最后栈内只剩下开始符号,输入串读到“#”为止,此时识别正确。 四、简单优先分析法的优缺点 优点:算法理解简单,技术简单 缺点:适用范围小,分析尺寸太大 5.2 算符优先分析法 一、什么是算符优先分析法 1.算符优先分析法: 所谓算符优先分析法是仿效四则运算的计算过程而构造的一种语法分析方法. 2.算符优先分析法的特点: 简单直观,特别方便于表达式分析,易于手工实现,是自下而上的归约过程,但未必按照句柄归约. 3.算符优先分析法的关键: 规定算符(终结符)的优先级及结合性质 例如:8+7-6*5/3的运算 5.2 算符优先分析法 例如:表达式文法: E E+E|E-E|E*E|E/E|(E)|i 对这个二义文法可能会有好几个规范推导和归约,真正运算时也有几种不同结果,但若按算符优先顺序和结合规则的规定进行归约,句子的归约过程就是唯一的,运算结果也唯一. 注:对所有的终结符定义某种优先关系,借助这种关系找出可归约的串,进行归约,达到自下而上分析的目的. 5.2 算符优先分析法 二、算符优先分析技术的改进 1、确定运算符的优先级 算符优先分析法的关键是比较两个相继出现的终结符的优先级而决定应采取的动作 要完成运算符间优先级的比较,可以先定义各种可能相继出现的运算符的优先级,并表示为矩阵的形式,使得能够在分析中通过查询矩阵元素而得到算符之间的优先关系 5.2 算符优先分析法 二、算符优先分析技术的改进 2.对于任何两个可能相继出现的终结符a,b,若具有以下形式:“……..ab…….”, “….aQb….”, 其中Q是某非终结符,则a,b之间的关系为: 1) a b,a的优先级低于b 2) a b,a的优先级等于b 3) a b,a的优先级高于b 4) 若ab在任何情况下都不可能相

文档评论(0)

1亿VIP精品文档

相关文档