《编译原理课后习题题目.pdf》由会员分享,可在线阅读,更多相关《编译原理课后习题题目.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章3.什么是解释程序?它与编译程序的主要不同是什么?1.对下列错谡信息.请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、代码生成)报告的.(1)e l se 没有匹配的i f:(2)数组下标越界;(3)使用的函数没有定义:(4)在数中出现非数字字符.第三章2 .文法G N 为;N D N DD 0|l|2|3|4|5|6|7|8|9|G N 的语言是什么?3 .为只包含数字、加号和减号的表达式,例 如 92 +5.3-1,7 等构造一个文法。4,已知文法G Z(1)Z:=a Z b *(2)Z:=a b写 出 L(G Z)的全部元素.5.写一文法,使其语言是偶正整数的集合.要求:
2、(1)允许0打头:(2)不允许0打头。7.为 句 子 i+i*i构 造 两 棵 语 法 树 从 而 证 明 下 述 文 法 G)表达式是二义的 表 达 式 :=(表 达 式 )|表 达 式 运 算 符)(表 达 式)运 算 符 :=+|-|*|/9.考虑下面上下文无关文法:S f S S*|S S+|a(1)表明通过此文法如何生成串a a+a*,并为该串构造推导树。(2)该文法生成的语言是什么?1 0 .文法 S f S(5)S k(1)生成的语言是什么?(2)该文法是二义的吗?说明理由。H.令文法G E 为:Ef T I E+T I E-7T-F 7*F I T/FF f (E)|i证 明E
3、+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。1 O -r v j x V-1.八 L.-1 4,给出生成下述语言的上下文无关文法:(1)(aW”a*m 1,6 2 0(2);1 0上0 1:禽 器 索 黑 曹 黑 吗?能 看 出 它 们 反 映 程 序 的什工特性吗?1 6.给出生成下述语言的三型文法:(1)5 4 0(2);*(3)anbmck 1,,/2 0)7.习题7和习题1 1中的文法等价吗?第四章L构造下列正规式相应的D F A:1)1(0 1 1)-1 0 1(2)1(1 0 1 0,1 1(0 1 0),1),0(3)a(a16),ab a),bJ)6(a6)
4、bb),ab 4.把 图4.-21的(a)和(b)分别确定化和最小化:、给文法G S:S-*a.A|A QA-aA I bB|bB-bDaQQ-aQbD|hD-bB t aAE aB bFF-bDaEb构造相应的最小的DFA。9,将 图4.2 2 的 DFA最小化,并用正规式描述它所识别的语言。第五章1.对 文法GSS-a|A KDT-T.S IS 给 出(a,(a,a)和(a.a),A.(a).a)的最左推导。(2)对文法G进行改写,然后对每个非终结符写出不带回溯的递归子程序。(3)经改写后的文法是否是LL(l)的?给出它的预测分析表.(4)给出输入串(a.“)#的分析过程,并说明该串是否为
5、G的句子。2.对下面的文法G:E T E E f 十 E|eT-FTT f TieFPFF f *FeP(E)|a|6|A(1)计算这个文法的每个全终结符的FIRST集 和FOLLOW集。(2)证明这个文法是LL(1)的。(3)构造它的预测分析表。(4)构造它的递归下降分析程序。7.对于一个文法若消除了左递归,提取了左公共因子后是否一定为LLU)文法?试对下面文法进行改写,并对改写后的文法进行判断。(1)A6a 3|fB-Abba(2)A-aABeaB-Bhd(3)SAabA-SBBab(4)S-ASbASA|a(5)S-AbBaA-aA|aB-a(6)SaSbSbSaSe第六章1-已知文法G
6、S:|为:S-*a|A|(T)T-T.SIS 计 算 GS的 FIRSTVT 和 LASTVT。(2)构 造GS的算符优先关系表并说明GS:|是否为算符优先文法。#给出分析过程。3.考虑文法J A S出A-*SA|a(1)列出这个文法的所有L R(O)项目。2)按(D列出的项目构造识别这个文法活前缀的N F A,把这个NFA确定化为D F A.说明这个DFA的所有状态全体构成这个文法的L R(O)规范族。(3)这个文法是S L R的吗?若是,构造出它的S L R分析表。(4)这个文法是L A L R或L R(1)的吗?15.已知文法为:S一|A|(T)T-T.S IS(1)构造它的 LR(O)
7、,LALR(1),LR(1)分析表。(2)给出对输入符号串(a#和(a.a#的分析过程。(3)说明(1)中三种分析表发现错误的时刻和输入串的出错位置有何区别。第八章1.给出下面表达式的逆波兰表示(后缀式);(D a*(-b+c)-AV X C V -D)(3)a+b (c4-c/r)(1)(A AB)V(一 CVD)(5)ahb (c I/)(6)(A V/n(CV-、DAE)(7)if then$*(a+b)c else s=6(2-请 将 表 达 式Ya+6)*G+d)_(a-6+r)分别表示成三元式、间接三元式和四元式序列.3.采用语法制导翻译思想,表达式E的1 值”的描述如下:产生式语
8、义动作O)S f E(1)E-E +E:(2)E-E1 F(3)E-(E)(4)E-nprint E.VAIE.VAL E l VAL 十 VAL;=E.VAI.E.VAL LEXVAL)如采用I.R分 析方 法绐出表达式(5 4+8)*2的 语法例并在各结点注明语义值 VAL.4假如习题3中表达式E的-值”有两种类型:整型和实型.语义处理增加一类型匹配检行”请给出相应的语义描述.5.令S.V ai为下列文法由S生成的二进制数的值.例如对于输入101.101则S.Vai=5.625S-L.1.11.L 7.B BB0 1按照语法制导翻译的方法,对每个产生式给出相应的语义规则.第十一章4.图 1
9、1.23是 图 11.22的 C 代码的部分三地址代码序列。图 11.23(1)(2)i点t=1*=n(16)(17)I:h 4*i=4*y(3)hi=4 n(18)h,=ar(4)V,=心(19)山:二=h(5)i*=i+1(20)tin=4*y(6)tt=4 /(21)=X(7)h(22)goto(5)(8)if/.,v goto(9)(27)hi*=。口 二(13)ifi=j goto(23)(28)hi(14)=4 r(29)小1 =4 N n(15)jr:=必(30)心门=JT 1)请将图1 1.2 3的三地址代码序列划分为基本块并做出其流图.(2)将每个基本块的公共子表达式删除。(3)找出流图中的循环.将循环不变后计算移出循环外。(4)找出每个循环中的归纳变成并在可能的地方删除它们。