版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 自上而下语法分析,编译原理 陈炬桦 ,51 消除左递归方法,为了避免无限循环,自上而下分析法的文法不应含有左递归。有则消除。 文法的左递归性 直接左递归:UUx | y 间接左递归:U Ux 例:G22A: A B B X | BA X Xa | Xb | a | b,用扩展的BNF表示法消除左递归, 零次或多次, mn次 零次或一次,可选项。 ( ) 描述提取公因子。 例:G标识符: | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 a|b|c|e|f|g|h|i|j|k|m|n|o|p|q|r|s|t|u|v|w|x|y|z 显然标识符产生式有左递
2、归,可改写为 | ,直接改写法,UUx | y = UyU, U xU | UUx1 | Ux2 | Uxm | y1 | y2 yn = UU(x1 | x2 | xm) | (y1 | y2 yn) = U (y1 | y2 yn)U U (x1 | x2 | xm)U | ,直接改写法举例,例:G22A: A B B X | BA X Xa | Xb | a | b 改写为: G22A: A B B XB B AB| X aX | bX X aX | bX | ,消除左递归算法, 将VN符号整理成序 Uk,k=1,n for i:=1 to n do begin j:=i+1 to n
3、do 替换 UiUj中的Uj 消除Ui产生式中的直接左递归 end 化简,删除多余产生式,消除左递归算法举例,例5.4 设文法 ABcd B Ce | f C Ab | c 变换: B Ce | f = B Abe | ce | f ABcd = A Abecd | cecd | fcd 消除左递归 A cecdA | fcdA Abecd A| B Abe | ce | f C Ab | c 删除多余产生式,LL(k)文法,最左推导 从左到右扫描输入串 向前查看K(1)个符号,选择产生式 本课程只讨论LL(1),LL(1)文法的判断条件,(VNVT)* FIRST()=a | a,aVT,(
4、VNVT)* UVN FOLLOW(U)= b | S xUby,bVT,x,y (VNVT)* 定义5.1 文法G是LL(1): U x1 | x2 | xn 如果 FIRST(xi)FIRST(xj)= 当FIRST(xi)时,FIRST(xi)FOLLOW(U)=,集合FIRST、FOLLOW的构造,FIRST()的构造 VT,FIRST()= VN,a,a FIRST(); ,FIRST() VN,XY, FIRST(X)- FIRST(), 若X ,则FIRST(Y)- FIRST(),集合FIRST、FOLLOW的构造,FOLLOW(U)的构造 U是开始符号,则# FOLLOW(U
5、) AxUy, 则FIRST(y)- FOLLOW(U) AxUy,y , (包括AxU) 则FOLLOW(A) FOLLOW(U),构造FIRST、FOLLOW举例,例G27S SA ABA AiBA| BCB B+CB| C)A*|(,构造分析表的算法, MU,a=U,aFIRST(); MU,b=U,bFOLLOW(U); MU,b=Error ,空白处;,例G27S SA ABA AiBA| BCB B+CB| C)A*|(,符号串(i(分析过程,5.4 递归下降分析程序及其设计,给每个非终结符设计一个相应的子程序。 int fS()return fA(); int fA()if fB
6、() return fA(); else return Error; int fA() read(ch); if (ch= =i) if fB() return fA(); else return Error; else return OK; int fC()read(ch); if(ch= =) if fA() read(ch); return (ch= =*); else return Error; else return (ch= =() ,例G27S SA ABA AiBA| BCB B+CB| C)A*|(,例:已知文法GS: SeT | RT TDR | RdR | Da | bd 计算每个非终结符的FIRST、FOLLOW集。 构造GS的LL(1)分析表。,例: 已知文法GS: SeT | RT TDR | RdR | Da | bd LL(1)分析表,已知文法GA: AAB | B BBC | C CD | D D(A)| i 消除左递归,计算每个非终结符的FIRST、FOLLOW集。 构造GS的LL(1)分析表。,解: ABA ABA | BCB BC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年小微企业安全生产管理题库及答案
- 妇科失血性休克护理查房
- 护理工作中的创新理念
- 快速康复外科理念在手术室的应用
- 2025年冀教版英语小升初名校冲刺试卷(含答案解析)
- 特种设备安全专项普查工作报告
- 2026年铝加工企业粉尘防爆专项治理工作方案
- 生产装置检修作业风险及安全措施
- 2026年农业防灾减灾救灾实务考试试题及答案
- 高考数学一轮复习(培优版) 第三章 必刷大题6 导数的综合问题
- 幼儿园职工岗前培训方案
- 商住综合体物业管理投标方案技术标
- 2020年个人信用报告新版含水印
- 广西版桂美版七年级美术上册全册课件汇总
- 消防设施操作员(基础知识初级技能)PPT完整全套教学课件
- 全国优质课大赛一等奖大单元教学设计道德与法治人教版八年级上册《我与社会》精美课件
- 浅谈叙事护理-课件
- 气道廓清技术(ACT)
- 格鲁夫给经理人的第一课-学习分享
- 塑料件卡扣等设计标准模块
- GB/T 7584.3-2011声学护听器第3部分:使用专用声学测试装置测量耳罩式护听器的插入损失
评论
0/150
提交评论