北航编译原理课件 04.语法分析.ppt

  1. 1、本文档共170页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4 状态s 输入符号a i * ( ) # 0 1 2 3 ACTION表 5 6 7 8 9 10 11 S5 S6 S7 r2 r2 r2 accpet S4 + 两点说明: 由DFA构造出的SLR分析表,在造表时, 只需 向前看一个符号就能确定分析的动作是移进还 是归约,所以称为SLR(1)分析表,简称SLR分 析表,使用SLR分析表的分析器叫SLR分析器。 对文法G,若应用上述算法所造出的分析表 具有多重定义入口,分析动作不唯一, 则文法 G就不是SLR的,需要用别的方法来构造分析表。 复 习 语法分析方法: 自顶向下分析法 Z? S + 自底向上分析法 S?Z + S∈L[Z] (一) 自顶向下分析 1 概述自顶向下分析的一般过程 存在问题 左递归问题 回溯问题 消除左递归的方法 无回溯的条件 改写文法 超前扫描 2 两种常用方法: (1) 递归子程序法 a) 改写文法,消除左递归,回溯 b) 写递归子程序 (2) LL(1)分析法 LL(1)分析器的逻辑结构及工作过程 LL(1)分析表的构造方法 LL(1)文法的定义以及充分必要条件 1.构造FIRST集合的算法 2.构造FOLLOW集合的算法 3.构造分析表的算法 (二) 自底向上分析 归约过程: (1)一般过程: 移进-归约过程 (2)算法: 问题:如何寻找句柄 i)算符优先分析法: 1.分析器的构造,分析过程 根据算符优先关系矩阵来决定 是移进还是归约。 2.算符优先法的进一步讨论 1) 适用的文法类--------------引出的算符优先法的定义 2) 优先关系矩阵的构造 3) 什么是“句柄”,如何找 由句柄引出的最左素短语的概念。 最左素短语的定理,如何找。 ii)LR分析法 1.概述----概念、术语 (活前缀、项目) 2.LR分析 1)逻辑结构 2)分析过程 状态栈 分析表 控制程序 GOTO表 分析动作表 3.如何构造SLR分析表 1)构造DFA 2)由DFA构造分析表 除了递归子程序法,其他几种方法逻辑结构很象: 输入串 符号栈(状态栈) 控制程序 分析表 (1) 对于LL(1)分析法 符号栈 αi (自顶向下,保证最左推导) LL(1)分析表 αi A A::=αi error 终结符 非终结符 首字符 (3)LR分析: 符号栈 S0,S1…Sm # X1…Xm 分析表 状态转移GOTO表 分析动作表 (2)对于算法优先分析: 符号栈 栈内终结符 = error 栈外终结符 . . . GOTO表 下一状态 状态 符号 根据栈顶状态和栈 顶符号推导出下一 状态 分析动作表 移进S 归约(rj) 状态 终结符号 根据栈顶状态和输入 符号推导出下一动作 将GOTO表和分析动作表压缩后得: 状态 终结符号 非终结符号GOTO表 Si rj i(下一状态数) 用U去匹配输入串时,首先有x去匹配,若成功,就 派y去匹配,若成功,则U匹配输入串成功,若y匹配不 成功,则U也匹配输入串成功,因为xε已匹配输入串 成功,∴从意义上来将,ε可以与任何输入串匹配 递归入口:将返回地址压栈兵保护现场. 递归出口:从栈中弹出返回地址返回,并恢复现场. 2.读符号子程序:即词法分析程序取来的符号在aym中. 3.对于高级语言,递归入口和递归出口子程序可省略(因为 这些语言写的子程序均可以递归调用). 4.error为错误处理程序. 5.要注意子程序之间的接口,在程序编制时进入某个非终结 符的分析程序时其所要分析的语法成分的第一个符号已 读入sym中. 用算符优先分析是根据相邻运算符的优先关系来 确定“句柄”进行归约的,这种归约过程的每一步都是唯 一的避免了二义性,我们所规定的相邻终结符之间的优 先关系就是避免二义性的充分条件. 11(S11) 10(S10) 7 9(S9) 11 6 8(S8) 4 5 10 7(S7) 4 5 3 9 6(S6) 5(S5) 4 5 3 2 8 4(S4) 3(S3) 7 2(S2) 6 1(S1) 4 5 3 2 1 0(S0) ) ( * + i F T E GOTO表 文法符号 状态 ACTION 表 GOTO 表 输入符号 状态

文档评论(0)

哆啦 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档