北京外国语大学《编译原理》课件-第3章 80x86微处理器.pptVIP

  • 0
  • 0
  • 约4.48万字
  • 约 226页
  • 2023-04-26 发布于河北
  • 举报

北京外国语大学《编译原理》课件-第3章 80x86微处理器.ppt

大学,本科,专科,硕士,笔记,课件,期中试卷答案,期末试卷答案,教材答案,知识点,经济法,材料科学基础,材料力学,电路,电子技术基础,高频电子线路,宏观经济学,模拟电路基础,模拟电子技术,数字电路,数字电子技术,数字信号处理,通信原理,信号与系统,化工原理,机械设计基础,机械原理,机械制图,微机原理与接口技术,C++程序设计,JAVA技术与应用,MATLAB基础与应用,计算机网络,计算机组成原理,软件工程数据结构,工程力学,工程热力学,结构力学,力学,流体力学,水力学,工程测量,工程经济学,工程

loop if J := closure(goto(I,x))非空 -- 有下一状态转移 then Dtran[I,x]:= J; -- 记录状态转移 if J不在C中 -- J是一个新状态 then 加入J到C中,且未标记; -- 加入新状态到状态集中 end if; end if; end loop; end loop; 用算法3.9为文法G3.12造识别活前缀的DFA,过程如下: ① 计算DFA的初态,I0=closure({E→.E}),如图3.21(a)所示; ② 计算初态下的每个可能的状态转移,即考察I0中每个项目“.”后边文法符号X,计算经X所能到达的下一状态全体(closure(goto(I0,x))),如图3.21(b)所示; 图3.21 构造识别G3.12活前缀DFA的步骤 ③ 对所有未被标记,且还有下一状态转移的状态Ii,反复计算closure(goto(Ii,X)),直到再没有新状态集加入。最终得到的DFA如图3.22所示。 图3.22 识别G3.12活前缀的DFA 3.识别活前缀 为了清楚了解DFA识别活前缀的工作原理,首先引入一个项目“有效”的概念。 定义3.21 若存在最右推导S‘αAω=αβ1β2ω,则项目[A→β1.β2]被称为对活前缀αβ1有效。 一个项目A→β1.β2对活前缀αβ1有效,具有两层含意: ① 从文法开始符号,经αβ1可到达该项目(项目所在状态); ② 在当前活前缀的情况下,该项目可指导下一步分析动作(αAω=αβ1β2ω)。 为此我们需要了解,在一个项目集中,活前缀与项目集中的项目究竟是什么关系,如何指导下一步动作。 (1) 一个项目可能对若干个活前缀有效。考察图3.22的项目集I5: F →–.F F →. –F F →.id 其中的项目F →–.F对活前缀“T*–”、“E– –”和“–”都有效。因为,存在最右推导: E=E=T=T*F=T*–F (T*–.F,其中α=T*,β1=–,β2=F,ω=ε) E=E=E–T=E–F=E– –F (E– –.F,其中α=E–,ω=ε) E=E=T=F=–F (–.F,其中α=ε,ω=ε) 直观上看,项目集I中项目A→β1.β2有效的所有活前缀,就是从初态出发所有可以到达I的路径上的标记,即一条路径标记,就是一个活前缀。如果从初态到达I的路径上有环,则I项目集中的项目对无穷多的活前缀有效。例如项目集I5有从I5出发到达I5的状态转移,所以,从I0到达I5的路径可以有无穷多,则I5中项目F →–.F对无穷多个活前缀T*,T*– –,T*– – –,...,E– –,E– – –,...,–,– –, …均有效。 (2) 若干个项目可能对同一个活前缀有效。再考察I5,它有三个项目,由于F→–.F对T*–有效,因此,F →. –F和F →.id对T*–也有效。因为存在最右推导: E=E=T=T*F=T*–F (T*–.F) E=E=T=T*F=T*–F=T*– –F??(T*–.?–F,其中α=T*–,?β1=ε,β2=?–F,ω=ε) E=E=T=T*F=T*–F=T*–id (T*–.id,其中α=T*–,?β1=ε,β2=?id,ω=ε) 即若I中一项目对某活前缀有效,则I中其它任何项目对该活前缀也有效。 综合(1)、(2),可以得出这样一个结论,在同一项目集中的所有项目,对此项目集对应的所有活前缀均有效。也就是说,项目集中的每个项目均有同等权力指导下一步动作。 (3) 用有效项目指导分析与可能发生的冲突。对于项目集中的所有项目,它们对从初态可以到达该项目集的所有路径(活前缀)均是有效的,即“有效”是针对一个项目集而言。在分析过程中,如果已经到达此项目集,则说明分析到目前为止是正确的。从当前状态出发,项目集中的任何一个项目均具有同等的权利指导下一步动作。 回顾项目集中的两类项目,可移进项目A→β1.β2指导下一步分析移进β2中第一个文法符号,可归约项目B→β.指导下一步分析按产生式B→β归约。若在指导分析下一步动作时,项目集中最多有一个项目起作用,则很明显分析的每一步都会是确定的,而以此DFA为基础构造的移进—归约分析表中不会有多重定义。根

文档评论(0)

1亿VIP精品文档

相关文档