资源描述:
《编译原理---习题资料.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、何谓源程序、目标程序、翻译程序、编译程序和解释程序?它们之间可能有何种关系?.解:源程序是指以某种程序设计语言所编写的程序。目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。翻译程序是将某种语言翻译成另一种语言的程序的统称。编译程序与解释程序均为翻译程序,但二者工作方法不同。解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。即边解释边执行,翻译所得的指令序列并不保
2、存。编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。即先翻译、后执行。2、一个典型的编译系统通常由哪些部分组成?各部分的主要功能是什么?.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。3、为什么要分最左推导和最右推导?最左(右)推导:为了对句子结构进行确定性的分析4、文法G6为:N→D
3、NDD→0
4、1
5、2
6、3
7、4
8、5
9、6
10、7
11、8
12、9(1)G6的语言是什么?0~9的数字组成的
13、非空任意串。L(G6)={x+
14、x∈{0,1,2,3,4,5,6,7,8,9}}L(G6)={xx*
15、x∈{0,1,2,3,4,5,6,7,8,9}}{0,1,2,3,4,5,6,7,8,9}+(2)给出句子0127、34和568的最左和最右推导。最左推导:N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127最右推导:N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>01275、例构造一个文法G使L(G)={an
16、n≥0}G(S):S→aS
17、ε例构造一个文法G使L(
18、G)={an
19、n≥1,n为奇数}G(S):S→aaS
20、a例构造一个文法G使L(G)={anbm
21、n≥1,m≥1G(S):S→ABA→aA
22、aB→bB
23、b例构造一个文法G3使L(G3)={anbn
24、n≥1}G3(S):S→aSb
25、ab例构造生成语言L={anbn+1
26、n>=0}的文法G(S):S->aSb
27、b例构造生成语言L={anban
28、n>=1}G(S):S->aAaA->aAa
29、b例构造生成语言L={anbnci
30、n³1,i³0}的文法G(Z):Z®ABA®aAb
31、abB®cB
32、e例构造生成语言L(G)={ambn
33、n>m≥1}
34、G(S):S→ABA→aAb
35、abB→bB
36、b6、写一个文法,使其语言是奇数集,且每一个奇数不以零开头。7、如果文法G是无二义的,则它的任何句子α( A.最左推导和最右推导对应的语法树必定相同8、.何谓“标志符”,何谓“名字”,两者的区别是什么? 答:标志符是一个没有意义的字符序列,而名字却有明确的意义和属性。 9、.令+、*和↑代表加、乘和乘幂,按如下的非标准优先级和结合性质的约定,计算1+1*2↑2*1↑2的值。 (1)优先顺序(从高到低)为+、*和↑,同级优先采用左结合。 (2)优先顺序为↑、+、*,同级优先采用右结合。 答:
37、(1)1+1*2↑2*1↑2=2*2↑2*1↑2=4↑2*1↑2=4↑2↑2=16↑2=256 (2)1+1*2↑2*1↑2=1+1*2↑2*1=1+1*4*1=2*4*1=2*4=8 10、令文法为 E->T
38、E+T
39、E-T T->F
40、T*F
41、T/F F->(E)
42、i (1)给出i+i*i、i*(i+i)的最左推导和最右推导。 (2)给出i+i+i、i+i*i和i-i-i的语法树,并给出短语,简单短语和句柄。 答:(1) i*(i+i)的最左推导: E=>T=>T*F=>F*F=>i*F=>i*(E)=>i*(E+T)=>i*(T
43、+T)=>i*(F+T)=>i*(i+T)=>i*(i+F)=> i*(i+i) i*(i+i)的最右推导: E=>T=>T*F=>T*(E) =>T*(E+T)=>T*(E+F)=>T*(E+i)=>T*(T+i)=>T*(F+i)=> T*(i+i)=> F*(i+i) => i*(i+i)(2) i+i+i的短语:i1, i2, i3, i1+ i2, i1+i2+ i3 简单短语:i1, i2, i3 句柄:i1(3)给出i+i+i、i+i*i和i-i-i的语法树11、证明下面的文法是二义的:S->iSeS
44、iS
45、i 证明
46、:反例法: 对于该文法的句子iiiei有两个最右推导如下,所以该文法是二义的: S=>iS=>iiSeS=>iiSei=>iiiei S=>iSeS=>iSei=>iiSei=>iiiei12、把下面的文法改写成无二义的:S->SS
47、