编译原理 5章.ppt_第1页
编译原理 5章.ppt_第2页
编译原理 5章.ppt_第3页
编译原理 5章.ppt_第4页
编译原理 5章.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论