编译原理补充练习-精选课件(公开).pptVIP

  • 0
  • 0
  • 约1.78千字
  • 约 9页
  • 2019-12-15 发布于广西
  • 举报
补充练习 乔姆斯基把文法分成4种类型:0型也叫( );1型也叫( );2型也叫( );3型也叫( )。 自上而下分析方法一般需要消除( )和回溯。 一般而言,编译器的分析部分包括( ),( ),( )二综合部分包括( ),( ),( )。以上六个阶段都涉及到( )管理和( )管理。 任何NFA都存在一个与之等价的( )。 短语文法 上下文有关文法 上下文无关文法 正则文法 左递归 词法分析 语法分析 语义分析 中间代码生成 代码优化 代码生成 符号表 出错 DFA 下面的文法是否是左递归的?如果是,该如何消除? E→E+T|T T→T*F|F F→(E)|id 设有文法G[S]:S→S*S|S+S|(S)|a,该文法是否有二义性?为什么? 构造下面文法的LL(1)分析表 S→aBc|bAB A→aAb|b B→b|ε 构造其LL(1)分析表,并分析符号串baabbb是否是该文法的句子 FIRST(S)={a,b} FIRST(A)={a,b} FIRST(B)={b,ε} FOLLOW(S)={#} FOLLOW(A)={b,#} FOLLOW(B)={c,#} a b c # S S→aBc S→bAB A A→aAb A→b B B→b B→ε B→ε LL(1)分析表: 步骤 符号栈 输入串 产生式 1 #S baabbb# S→bAB 2 #BAb baabbb# 3 #BA aabbb# A→aAb 4 #BbAa aabbb# 5 #BbA abbb# A→aAb 6 #BbbAa abbb# 7 #BbbA bbb# A→b 8 #Bbbb bbb# 9 #Bbb bb# 10 #Bb b# 11 #B # B→ε 12 # # ACC 分析符号串baabbb的过程: 设有文法G[S]:S→CC (1) C→cC (2) C→d (3) 求:1)拓广文法 2)文法的LR(1)项目集规范族(识别活前缀的DFA) 3)构造规范LR分析表 4)给出句子cdd的LR(1)分析过程 1)拓广文法 S’→S (0) S→CC (1) C→cC (2) C→d (3) 2)LR(1)项目集规范族 I0={[S’→?S,#],[S→?CC,#],[C→?cC,c/d],[C→?d,c/d]} I1=GO(I0,S)={[S’→S?,#]} I2=GO(I0,C)={[S→C?C,#],[C→?cC,#],[C→?d,#]} I3=GO(I0,c)=GO(I3,c)={[C→c?C,c/d],[C→?cC,c/d],[C→?d,c/d]} I4=GO(I0,d)=GO(I3,d)={[C→d?,c/d]} I5=GO(I2,C)={[S→CC?,#]} I6=GO(I2,c)=GO(I6,c)={[C→c?C,#],[C→?cC,#],[C→?d,#]} I7=GO(I2,d)=GO(I6,d)={[C→d?,#]} I8=GO(I3,C)={[C→cC?,c/d]} I9=GO(I6,C)={[C→cC?,#]} 状态 ACTION GOTO c d # S C 0 s3 s4 1 2 1 acc 2 s6 s7 5 3 s3 s4 8 4 r3 r3 5 r1 6 s6 s7 9 7 r3 8 r2 r2 9 r2 给出句子cdd的LR(1)分析过程 状态 符号 输入串 动作 S’→S S→CC (1) C→cC (2) C→d (3) 0 # cdd# 移进 03 #c dd# 移进 034 #cd d# 归约 038 #cC d# 归约 02 #C d# 移进 027 #Cd # 归约 025 #CC # 归约 01 #S # 接受

文档评论(0)

1亿VIP精品文档

相关文档