网站大量收购独家精品文档,联系QQ:2885784924

第五章 语法分析2.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.3 LL(1)分析法 5.3.1 LL(1)分析法基本概念 ※ 设有文法G(Z), # 栈底标记和结束标记; 5.3.2 LL(1)文法及其判定 1. 首符号集合、后继符集合与选择符集合 【例5.4】 求文法产生式的选择集合: ※ LL(1)分析法示例: 【例5.6】 G(Z):Z - Z b ① | a ② 5.3.3 LL(1)分析器设计(实现) ※ LL(1)分析法综合示例: 2.构造 LL(1) 分析表: ※ 符号串 a+b# 的LL(1)分析过程: 练习题: 谢谢收看! * * 1. 什麽是LL(1)分析法? ※ LL(1) 分析法的基本要点有三: ⑴ 利用一个分析表,登记如何选择产生式的知识; ⑵ 利用一个分析栈,记录分析过程; ⑶ 此分析法要求文法必须是 LL(1)文法。 LL(1)分析法是指从左到右扫描、最左推导(LL)和只查看一个当前符号(括号中的 1)之意; LL(1)分析法又称预测分析法,与递归子程序法同属于自顶向下确定性语法分析方法; 2. LL(1)分析过程示例 G(Z):Z-dAZ① | bAc② A-aA③ |ε④ 栈 当前符号 剩余序列 栈操作 ⑴ 选择推导产生式后,为什麽要逆序压栈? ⑵ 当栈顶为A,当前单词为c时,为什么选择 A?? ? 讨论 逆序压栈 # # # c A # c # c A # c # c A b A a b a c # 选择 Z?bAc② b a c # 匹配 b a c # 选择A?aA③ a c # 匹配 a c # 选择A?? ④ c # 匹配 c # 正确结束 Z 查分析表 ※ 对符号串:? = bac # 的分析过程: ④ ① d ④ ④ ③ A ② Z # c b a 分析表: # 栈 结束: ② 若 栈顶符=a 且 当前符为a; 则 pop,NEXT(w); # Z ⑴ 开始: 栈 ; NEXT(w) ;当前符 w= # ⑶ ⑵ 重复执行 ①、②、③ ,直到栈中只剩 # 为止: 即:栈调整: # … a # … 即:栈调整: # … A # … ?a 3. LL(1)分析法算法概要 ① 若 栈顶符=A 且 当前符 w=a 且 有产生式: A?a?, 则 POP,PUSH(a?)R ; 逆序压栈! ③ 否则,错误处理! 设 G(Z)=(VN, VT, Z, P),A-? ∈P,则 first(?) , ? ? first(?)∪follow(A), ? ? select(A-?)= = * ≠ * 【注】⑴ ? ?(?可空), ? ?(?不可空); ⑵ 若 ?= ? 则 first(?)={ }; ⑶ 设 #为输入串的结束符,则 #∈follow(Z); = * ≠ * first(?)={ t| ? t…,t∈VT } = * follow(A)={ t| Z …At…,t∈VT } = * 【注】 求 follow(A) 要点: ※ 查所有右部含有A的产生式: B - …A? ① 若 ? 不空时 , 则 first(?)∈follow(A) ; ② 若 ? 取空时 , 则 follow(B)∈follow(A) ; ③ 若 ? = ? 时 , 则 follow(B)∈follow(A)。 select(①)= first(dAZ)={d} select(②)= first(bcA)={b} select(③)= first(aA)={a} select(④)= first(?)∪follow(A)= {b,d,# } 即: B - …A G(Z): Z - dAZ ① | bcA ② A - aA ③ | ? ④ 则有: 产生式序号 【定义】 LL(1)文法是指文法中,具有相同左部的各产生式,其选择集合不相交。 ∵ select(①)= {d} ; 2. LL(1)文法及其判定 LL(1)文法可确保 递归子程序法 和 LL(1)分析法 的正确运用。 【例5.5】 G(Z): Z - dAZ ① | bcA ② A - aA ③ | ? ④ s

文档评论(0)

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

文档来源于网络

1亿VIP精品文档

相关文档