编译原理试题和答案(二).pptVIP

  • 18
  • 0
  • 约7.29千字
  • 约 32页
  • 2019-05-18 发布于安徽
  • 举报
aacbb翻译后的输出结果是打印出下面的字符串: 12020 b B c A A a B A a b ⑤ ④ ③ ② ① A → aB {print “0”} A → c {print “1”} B → Ab {print “2”} * 翻译过程和翻译结果 语法分析: aacbb aaAbb (1) aaBb (2) aAb (3) aB (4) A (5) ? . ? . ? . ? . ? . 翻译过程: (1) print “1” (2) print “2” (3) print “0” (4) print “2” (5) print “0” A → aB {print “0”} A → c {print “1”} B → Ab {print “2”} 翻译结果:打印出字符串 12020 * 补充题 5. 课堂上讲过的以及课件中给出的有代表性的例题都要亲自动手独力做一遍。 6. 参阅“编译原理_(V_jx_Summary_精简=完全)” 谢 谢! 放映结束 感谢各位观看! 让我们共同进步 * * * * * * * * * * * * * * 作业评讲 * 作业评讲 * 作业评讲 作业评讲 程 序 设 计 语 言 Chapter 4. 自上而下语法分析 * CH.4.练习题1(P81.) 1.考虑下面文法G1: S→a|^|(T) T→T,S|S (1) 消去G1的左递归。然后对每个非终结符,写出不带回溯的递归子程序。 解(1) 消左后的文法G1’: S→a|^|(T) T→ST’ T’→ ,ST’|ε CH.4.练习题1(P81.) 解(1) 不带回溯的递归子程序: S→a|^|(T) Procedure S; Begin if sym=‘a’ or sym=‘^’ then advance else if sym=‘(‘ then begin advance; T; if sym=‘)’ then advance else error end else error End; CH.4.练习题1(P81.) 解(1) 不带回溯的递归子程序: T→ST’ Procedure T; Begin S; T’ end; 解(1) 不带回溯的递归子程序: T’→,ST’|ε procedure T’; begin if sym=‘,’ then begin advance; S; T’ end End; CH.4.练习题1(P81.) (2) 经改写后的文法是否是LL(1)的? 给出它的预测分析表。 消左后的文法G1’ : S→a|^|(T) T→ST’ T’→ ,ST’|ε (2) 因为G1’ : ① 文法不含左递归; ② 对 S→a|^|(T) FIRST(a)={a}, FIRST(^)={^}, FIRST( (T) )={ ( }, 集合互不相交且不含ε; ③ 对 T’→,ST’|ε FIRST( ,ST’ )={ , }, FIRST(ε)={ε}, 其交集为空。 但ε∈FIRST(T’)=FIRST( ,ST’ )∩FIRST(ε)={,,ε}, 然而,FOLLOW(T’)={ ) } FIRST(T’)={,,ε} ,两者 不相交。 所以,G1’是LL(1)文法。 * CH.4.练习题1(P81.) (2)构造G1’的预测分析表: ① 对S→a|^|(T) ② 对T→ST’ FIRST(a)={a} FIRST(ST’)={a,^

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档