- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 语法分析—— 自下而上分析 概述 自下而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的开始符号。 从语法树的末端,步步向上“归约”,直到根结。 内容线索 自下而上分析基本问题 规范规约 算符优先分析方法 LR分析方法 归约 移进-归约法 使用一个符号栈,把输入符号逐一移进栈,当栈顶形成某个产生式右部时,则将栈顶的这一部分替换(归约)为该产生式的左部符号。 分析树: 用树表示“移进 - 归约 ”过程 自下而上分析的基本问题 如何找出或确定可规约串? 对找出的可规约串替换为哪一个非终结符号? 内容线索 自下而上分析基本问题 规范规约 算符优先分析方法 LR分析方法 短语 令G是一个文法,S是文法的开始符号,若αβδ是文法G的一个句型,如果有 S ? αAδ且 A ? β 则称β是句型αβδ相对于非终结符A的短语。 特别地,若 A ? β,则称β是句型αβδ关于产生式A→β的直接短语。 一个句型的最左直接短语称为句柄。 句型语法树和句型的短语、直接短语、句柄 短语:句型语法树中每棵子树(某个结点连同它的所有子孙组成的树)的所有叶子结点从左到右排列起来形成一个相对于子树根的短语。 直接短语:只有父子两代的子树形成的短语。 句柄:语法树中最左那棵只有父子两代的子树形成的短语。 例. 给定文法G:E→E+E|E*E|(E)|i 给出句型E+E*E的句柄 解. (1)E ? E+E ? E+E*E E*E是句柄 (2)E ? E*E ? E+E*E E+E是句柄 规范规约的基本问题 如何找出或确定可规约串——句柄? 对找出的可规约串——句柄替换为哪一个非终结符号? 符号栈的使用 实现移进-归约分析的一个方便途径是用一个栈和一个输入缓冲区,用#表示栈底和输入的结束 例. G: E→E+E│E*E│(E)│i 给出 i1*i2+i3 的移进归约过程 步骤 栈 输入串 动作 0 # i1*i2+i3# 预备 1 #i1 *i2+i3# 移进 2 #E *i2+i3# 归约E→i 3 #E* i2+i3# 移进 4 #E*i2 +i3# 移进 5 #E*E +i3# 归约E→i 6 #E +i3# 归约E→E*E 7 #E+ i3# 移进 8 #E+i3 # 移进 9 #E+E # 归约E→i 10 #E # 归约E→E+E 11 #E # 接受 语法分析的操作 移进 下一输入符号移进栈顶,读头后移; 归约 检查栈顶若干个符号能否进行归约,若能,就以产生式左部替代该符号串,同时输出产生式编号; 接收 移进-归约的结局是栈内只剩下栈底符号和文法开始符号,读头也指向语句的结束符; 出错 发现了一个语法错,调用出错处理程序 语法树的表示——穿线表 方法: 在移进-归约过程中自下而上构造句子的语法树 移进符号a时,构造表示端末结a的数据结构,其地址与 a 同时进栈 内容线索 自下而上分析基本问题 规范规约 算符优先分析方法 LR分析方法 算符优先分析方法 算符优先分析法是自下而上进行句型归约的一种分析方法。 定义终结符(算符)的优先关系,按终结符 (算符)的优先关系控制自下而上语法分析过程(寻找“可归约串”和进行归约)。 不是规范归约,但分析速度快,适于表达式的语法分析。 优先关系 任何两个可能相继出现的终结符a和b(它们之间可能插有一个非终结符)的优先关系: a b a的优先级低于b a = b a的优先级等于b a b a的优先级高于b 算符文法 一个文法,如果它的任一产生式右部都不含两个相继(并列)的非终结符,即不含如下形式的产生式右部: … QR … , Q, R ∈ VN 则称该文法为算符文法。 算符优先关系
文档评论(0)