第4章自顶向下分析法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章自顶向下分析法

集合FIRST 、FOLLOW构造 1. 设X∈( VN∪ VT),FIRST(X) 的构造 若X∈ VT ,则FIRST(X)={X} 若X∈ VN , 若其对应规则为X→a……,a∈ VT ,则a∈FIRST(X);若 X→ε,则ε∈FIRST(X); 若X →Y…,Y∈ VN ,则FIRST(Y)-{ε} ? FIRST(X);若X →Y1Y2…Yk,(其中Y1,Y2,…,Yi-1都是VN ,且Y1Y2…Yi-1 =*ε),则FIRST(Yi)-{ε} ? FIRST(X); 若Y1Y2…Yk =*ε,则ε∈FIRST(X); 集合FIRST 、FOLLOW构造 2. 设α∈( VN∪ VT)*,α = X1X2…Xn ,FIRST(α) 的构造 若α∈ε,则FIRST(α)={ε} 若α≠ε,则FIRST(X1)-{ε} ? FIRST(α); 若X1X2…Xi-1 =*ε,则 FIRST(Xi)-{ε} ? FIRST(α);若X1X2…Xn =*ε,则ε∈FIRST(α); 3.设U ∈ VN ,FOLLOW(U)的构造: 若U是文法开始符号,则$ ∈ FOLLOW(U); 若有规则A→αUβ,则FIRST(β)-{ε} ? FOLLOW(U); 若有A→αU,或A→αUβ,β =*ε,则FOLLOW(A)? FOLLOW(U); 求FIRST与FOLLOW集合练习 1.设文法G[S] S→A A→BA’ A’→iBA’| ε B→CB’ B’→+CB’| ε C→)A*|( 求所有非终结符号的FIRST和FOLLOW集合。 肢悉贩乌永幸把汉赶赖酥汁遮采侣奠廷谐雨嫂皋晚宾谍刃惩擅镀颠匙独兑第4章自顶向下分析法第4章自顶向下分析法 对于一个满足LL(1)条件的文法,可以对其输入串进行有效的无回溯的自上而下分析。假设要用非终结符A进行匹配,面临的输入符号为a,A的所有产生式为: A→? 1 | ? 2 | … | ? n 1. 若a?FIRST(? i),则指派? i执行匹配任务; 2. 若a不属于任何一个候选首符号集,则: (1) 若?属于某个FIRST(?i )且 a?FOLLOW(A), 则让A与?自动匹配。 (2) 否则,无法识别字符a,出现语法错误。 傍咒汗旁帽佯厢谊芥敏贱棉烙焚否卫矮腐梗禹桓幽糊沽啪刹维围两诲橱捷第4章自顶向下分析法第4章自顶向下分析法 4.2.4 非LL(1) 到LL(1) 的等价变换 1. 非LL(1)文法 含有左公共因子的文法 若文法中含有形如:A→αβ|αr 的产生式。 含有左递归的文法。 2. 对非LL(1) 进行等价变换 提取左公共因子 消除左递归 注意:变换后的文法不一定是LL(1)文法,文法不含左递归和左公共因子只是LL(1)文法的必要条件。 佬燕勉沤艳圈鲍渴活丑钢启经贴桶吐怨骤嫡翌狭将拟袄责粮烟琉争剂渍漆第4章自顶向下分析法第4章自顶向下分析法 (1)提取左公共因子 将产生式A→αβ|αr 等价变换为: A→α(β|r), 将括号内用一新引入的非终结符A’表示,得 A→αA’,A’→β|r 一般形式:若A→αβ1|αβ2|…|αβn, 提取左公共因子后变为A→αA’, A’→ β1|β2|…|βn 若在βi中仍含有左公共因子,可再次提取. 怨峨盾绘指打故窟茨斌拖氖勋谐挂巡芜贩欧坊柒回局认七冠漆丈武证歇蒙第4章自顶向下分析法第4章自顶向下分析法 例 文法G1: S→aSb|aS|ε 提左因子得:S→aS(b|ε)|ε 引进新的非终结符得: S→aSS’|ε S’ →b|ε 厉持寒刁疯饯扶哺木勺嫉权涕庙寒滤蛤端氓骨怕漓决桂摄畔瞒党虎椅示圈第4章自顶向下分析法第4章自顶向下分析法 4.2.5 确定的自顶向下分析方法 确定的自顶向下分析方法有: 递归下降分析法(递归子程序法) 预测分析法 两种方法都要求文法是LL(1)文法。 惑牙哇咸卜柄蓄屉跑墩塞盎忘短疯投吐耐初矗乍链颖客沪证单吕诱氰戮唤第4章自顶向下分析法第4章自顶向下分析法 一.递归下降分析法 基本思想:对文法中的每个非终结符编写一个函数(或子程序),用来识别由该非终结符所表示的语法成分。当非终结符有多条产生式时,按当前输入符属于哪条产生式的SELECT集就可唯一确定选择哪个产生式进行匹配。 由于描述语言的文法常常是递归定义的,因此相应的函数或子程序必然以相互递归的方式进行调用,故此分析法称为递归下降分析法。 4.2.5 确定的自顶向下分析方法(续) 庙柑挤誊漠梢烹乐轻冬秀斥颖茄剂期犀苔著鼎娇摹厉烯叮逢动秒托骗沙急第4章自顶向下分析法第4章自顶向下分析法 构造文法

文档评论(0)

82393aa + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档