北大编译原理chapter4.pptVIP

  • 19
  • 0
  • 约2.74万字
  • 约 153页
  • 2017-09-22 发布于广东
  • 举报
语法分析器是根据源语言的文法构造出来的。 用于程序语言的编译程序构造中的一些典型的语法分析方法及分析器的生成器Yacc。 语法分析方法:自顶向下分析:递归预测分析和LL(1)分析;自底向上分析:算符优先分析和LR分析。 2. 若action[sm.ai]=r (A?xm-r+1xm-r+2…xm) ,则 格局:(s0x1s1x2s2…xm-rsm-r As , ai ai+1…an$) 其中,s=goto[sm-r ,A] 3.若action[sm.$]=accep,则分析结束。 4 .若action[sm,ai]=error,则转出错处理程序。 下面,显示id+id*id的LR分析过程: 栈 输入 动作 0 id+id*id$ s5 0id 5 +id*id$ r6 F?id 0F3 +id*id$ r4 T?F 0T2 + id*id$ r2 E?T 0 E1 +id *id$ s6 0E1+6 id *id$ s5 0E1+6 id5 *id$ r6 F?id 0 E1+6 F3 *id $ r4 T?F 0E1+6T9 *id $ s7 0E1+6T9*7 id $ s5 0E1 +6T9*7 id5 $ r6 F?id 栈 输入 动作 0E 1+6T9*7 F10 $ r3 T?T*F 0E1+6T9 $ r1 E?E+T 0E1 $ accep 0 5 3 2 1 6 9 7 10 id F T E + T * F id id F 分析表4.11是识别文法G[E]活前缀的有限自动机。 4.7.2 SLR分析表的构造 根椐文法G,构造识别文法G的所有活前缀的DFA m,根椐DFA m构造分析表。分析表是DFA m的一种描述形式。 一. 项目 识别活前缀的DFA m每个状态是一个项目集。 S ?A? ? ?? , ??VT 活前缀: ? ?的前缀是右句型? ?? 的活前缀。 *? rm ? rm 活前缀和句柄的关系: 1. 活前缀不含有句柄的任何符号, ?; 2. 活前缀含有句柄的部分符号, ??1 ; 3. 活前缀已含有句柄的全部符号, ??。 识别活前缀的自动机处于的格局: 0 q 0 q1 q 0 q q2 ? ? ? ?1 ? 用圆点“?”表示识别一个产生式右部符号到达的位子,若有规则 A?XYZ,则有下面四个项目: A? ? XYZ A? ?

文档评论(0)

1亿VIP精品文档

相关文档