搜档网
当前位置:搜档网 › 编译原理第二章 习题与答案(修改后)

编译原理第二章 习题与答案(修改后)

编译原理第二章 习题与答案(修改后)
编译原理第二章 习题与答案(修改后)

第2章习题

2-1 设有字母表A1 ={a,b,c,…,z},A2 ={0,1,…,9},试回答下列问题:

(1) 字母表A1上长度为2的符号串有多少个?

(2) 集合A1A2含有多少个元素?

(3) 列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。

2-2 试分别构造产生下列语言的文法:

(1){a n b n|n≥0};

(2){a n b m c p|n,m,p≥0};

(3){a n#b n|n≥0}∪{c n#d n|n≥0};

(4){w#w r# | w∈{0,1}*,w r是w的逆序排列 };

(5)任何不是以0打头的所有奇整数所组成的集合;

(6)所有由偶数个0和偶数个1所组成的符号串的集合。

2-3 试描述由下列文法所产生的语言的特点:

(1)S→10S0S→aA A→bA A→a

(2)S→SS S→1A0A→1A0A→ε

(3)S→1A S→B0A→1A A→C

B→B0B→C C→1C0C→ε

(4)S→aSS S→a

2-4 试证明文法

S→AB|DC A→aA|a B→bBc|bc C→cC|c D→aDb|ab

为二义性文法。

2-5 对于下列的文法

S→AB|c A→bA|a B→aSb|c

试给出句子bbaacb的最右推导,并指出各步直接推导所得句型的句柄;指出句子的全部短语。

2-6 化简下列各个文法

(1) S→aABS|bCACd A→bAB|cSA|cCC B→bAB|cSB C→cS|c

(2) S→aAB|E A→dDA|e B→bE|f

C→c AB|dSD|a D→eA E→fA|g

(3) S→ac|bA A→c BC B→SA C→bC|d

2-7 消除下列文法中的ε-产生式

(1) S→aAS|b A→cS|ε

(2) S→aAA A→bAc|dAe|ε

2-8 消除下列文法中的无用产生式和单产生式

(1) S→aB|BC A→aA|c|aDb B→DB|C C→b D→B

(2) S→SA|SB|A A→B|(S)|( ) B→[S]|[ ]

(3) E→E+T|T T→T*F|F F→P↑F|P P→(E)|i

第2章习题答案

2-1 答:

(1) 26*26=676

(2) 26*10=260

(3) {a,b,c,...,z, a0,a1,...,a9, aa,...,az,...,zz, a00,a01,...,zzz},共有26+26*36+26*36*36=34658个

2-2 解:

(1) 对应文法为G(S)=({S},{a,b},{ S→ε| aSb },S)

(2) 对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε },S)

(3)对应文法为G(S)=({S,X,Y},{a,b,c,d,#}, {S→X,S→Y,X→aXb|#, Y→cYd|# },S)

(4) G(S)=({S,W,R},{0,1,#}, {S→W#, W→0W0|1W1|# },S)

(5) G(S)=({S,A,B,I,J},{0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|ε, I→J|2|4|6|8, J→1|3|5|7|9},S)

(6)对应文法为S→0A|1B|ε,A→0S|1C,B→0C|1S,C→1A|0B

2-3 解:

(1) 本文法构成的语言集为:L(G)={(10)n ab m a0n|n,m≥0}。

(2) L(G)={1n0n|n≥0}+,该语言特点是:产生的句子中,0、1个数相同,并且若干相接的1后必然紧接数量相同的连续的0。

(3) 本文法构成的语言集为:L(G)={1p1n0n|p≥1,n≥0}∪{1n0n0q|q≥1,n≥0},特点是具有1p1n0n或1n0n0q形式,进一步,可知其具有形式{1n0m|n,m≥0,且n+m>0}。

(4)由L(G)={a2n-1|n≥1}可知,该语言特点是:产生的句子是奇数个a。

2-4 证明:

因为存在句子:abc,它对应两个最右推导:

S ? AB ? Abc ? abc

S ? DC ? Dc ? abc

所以,本文法具有二义性。

2-5 解:

句子bbaacb的最右推导为:

S ? AB ? AaSb ? Aacb ? bAacb ? bbAacb ? bbaacb

上面推导中,下划线部分为当前句型的句柄。

与句子bbaacb相应的语法树为:

全部的短语为:

第一个a(a(1))是句子bbaacb相对于非终结符A (A(1)) (产生式A→a)的短语(直接短语);

b(1)a(1)是句子bbaacb相对于非终结符A(2)的短语;

b(2)b(1)a(1)是句子bbaacb相对于非终结符A(3)的短语;

c是句子bbaacb相对于非终结符S(1)(产生式S→c)的短语(直接短语);

a(2)cb(3)是句子bbaacb相对于非终结符B的短语;

b(2)b(1)a(1)a(2)cb(3)是句子bbaacb相对于非终结符S(2)的短语;

注:符号的上标是为了描述方便加上去的。

2-6 解:

(1) 因为由非终结符号B推导不出终结符号串,因此B是无用符号,含有B的产生式B→Bab,B→cSB, S→aABS和A→bAB都是无用产生式,应予以删除。

因此我们最后得到与原文法等价且不含无用符号及无用产生式的文法为

S→bCACd A→cSA|cCC C→cS|c

(2) 因为由文法的开始符号推导不出含有非终结符号C的句型,因此C是无用符号,含有C的产生式C→c AB|dSD|a都是无用产生式,也应予以删除。

因此我们最后得到与原文法等价且不含无用符号及无用产生式的文法为

S→aAB|E A→dDA|e B→f D→eA E→fA|g

(3) 因为由非终结符号A,B推导不出终结符号串,因此A,B是无用符号,删除含有A,B的产生式S→Ba, A→c BC和B→SA后得到文法G′[S]:

S→ac C→bC|d

又因为由文法G′[S]的开始符号S推导不出含有非终结符号C的句型,因此C是无用符号,含有C的产生式C→bC|d都是无用产生式,也应予以删除。

因此我们最后得到与原文法等价且不含无用符号及无用产生式的文法G〞[S]为S→ac

2-7 解:

(1) 对于G,我们可得到W={A};再按如下步骤得到产生式集P′:

对于产生式S→aA S,将产生式S→aA S及S→a S放入P′;

对于产生式S→b,直接将产生式S→b放入P′;

对于产生式A→cS,将产生式A→cS放入P′。

于是得到消除ε-产生式后的文法为:

S→aAS|aS|b A→c S

(2) 对于G,我们可得到W={A};再按如下步骤得到产生式集P′:

对于产生式S→aA A,将产生式S→aA A及S→A a和S→a放入P′;

对于产生式A→bAc,将产生式A→bAc及A→bc放入P′;

对于产生式A→dAe,将产生式A→dAe及A→de放入P′。

于是得到消除ε-产生式后的文法为:

S→aAA|aA|a A→bAc|bc|dAe|de

2-8 解:

(1) 首先求出如下集合

W(S)={S}, W(A)={A}, W(B)={B,C}, W(C)={C}, W(D)={D,B,C}

然后按如下步骤得到产生式集P′:

将P中的所有非单产生式添加到P′中:

S→aB|BC A→aA|c|aDb B→DB C→b

因为C∈W(B),故将C的所有非单产生式的右部作为B-产生式的右部添加到P′中:B→b

因为B∈W(D),故将B的所有非单产生式的右部作为D-产生式的右部添加到P′中:D→DB

因为C∈W(D),故将C的所有非单产生式的右部作为D-产生式的右部添加到P′中:D→b

由此得到消除单产生式后的文法如下:

S→aB|BC

A→aA|c|aDb

B→DB|b

C→b

D→b|DB

因为由文法的开始符号推导不出含有非终结符号A的句型,因此A是无用符号,含有A的产生式A→aA|c|aDb都是无用产生式,应予以删除。

于是得到消除无用产生式和单产生式后的文法如下:

S→aB|BC

B→DB|b

C→b

D→b|DB

(2) 首先求出如下集合

W(S)={S,A,B}, W(A)={A,B}, W(B)={B}

然后按如下步骤得到产生式集P′:

将P中的所有非单产生式添加到P′中:

S→SA|SB A→(S)|( ) B→[S]|[ ]

因为A∈W(S),故将A的所有非单产生式的右部作为S-产生式的右部添加到P′中:S→(S)|( )

因为B∈W(S),故将B的所有非单产生式的右部作为S-产生式的右部添加到P′中:S→[S]|[ ]

因为B∈W(A),故将B的所有非单产生式的右部作为A-产生式的右部添加到P′中:A→[S]|[ ]

由此得到消除单产生式后的文法如下:

S→SA|SB|(S)|( )|[S]|[ ]

A→(S)|( )|[S]|[ ]

B→[S]|[ ]

(3) 首先求出如下集合

W(E)={E,T,F,P}, W(T)={T,F,P}, W(F)={F,P}, W(P)={P}

然后按如下步骤得到产生式集P′:

将P中的所有非单产生式添加到P′中:

E→E+T T→T*F F→P↑F P→(E)|i

因为T,F,P∈W(E),故将T,F,P的所有非单产生式的右部作为E-产生式的右部添加到P′中:

E→T*F E→P↑F E→(E)|i

因为F,P∈W(T),故将F,P的所有非单产生式的右部作为T-产生式的右部添加到P′中:

T→P↑F T→(E)|i

因为P∈W(F),故将P的所有非单产生式的右部作为F-产生式的右部添加到P′中:F→(E)|i

由此得到消除单产生式后的文法如下:

E→E+T|T*F|P↑F|(E)|i

T→T*F|P↑F|(E)|i

F→P↑F|(E)|i

P→(E)|i

《 编译原理》(习题课)(第二章)

朱雪峰第一题(P35 第4题) 4.令+、*和↑代表加、乘和乘幂,按如下的非标准优先级和结合性质的约定,计算1+1*2↑2*1↑2的值: ①优先顺序(从高至低)为+、*和↑,同级优先采用左结合。 ②优先顺序(从高至低)为↑、+和*,同级优先采用右结合。

朱雪峰第一题(P35 第4题) 解: ① 1+1*2↑2*1↑2 =2*2↑2*1↑2 =4 ↑2*1↑2 =4 ↑2↑2 =16 ↑2=256(+、*和↑,左结合)② 1+1*2↑2*1↑2 = 1+1* 4 *1↑2= 1+1* 4 *1= 2* 4*1=2*4=8(↑、+和*,右结合)

朱雪峰第二题(P36 第6题) 6.令文法G 6为 N →D | ND D →0|1|2|3|4|5|6|7|8|9 ①G 6的语言L(G 6)是什么? ②给出句子0127、34和568的最左推导和最右推导。

朱雪峰第二题(P36 第6题) 解: ① 根据产生式N →D | ND 可以看出,N 最终可以推出1个或多个(可以是无穷多个)D ,根据产生式D →0|1|2 |3|4|5|6|7|8|9可以看出,每个D 可以推导出0~9中的某一个数字。因此,N 最终推导出的就是由0~9这10个数字组成的字符串。因此G6的语言L(G6)就是由0~9这10个数字组成的字符串。

朱雪峰第二题(P36 第6题) ②句子0127、34和568的最左推导如下: N ?ND ?NDD ?NDDD ?DDDD ?0DDD ?01DD ?012D ?0127 N ?ND ?DD ?3D ?34 N ?ND ?NDD ?DDD ?5DD ?56D ?568

编译原理期末考试习题及答案

一、填空题|(每题4分,共20分) 1. 乔母斯基定义的3型文法(线性文法)产生式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。 2.语法分析程序的输入是单词符号,其输出是语法单位。 3 型为 B → .aB 的LR(0)项目被称为移进项目,型为 B → a.B 的LR(0) 项目被称为待约项目, 4.在属性文法中文法符号的两种属性分别为继承属性和综合属性。 5、运行时存贮管理方案有静态存储分配、动态存储分配和堆式存储分配和方案。 二.已知文法 G(S) (1) E → T | E+T (2) T → F | F*F (3) F →(E)| i (1)写出句型(T*F+i)的最右推到并画出语法树。(4分) (2)写出上述句型的短语,直接短语和句柄。(4分) 答:(1)最右推到(2分) E ==> T ==> F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i) (2) 语法树(2分) (3)(4分) 短语:(T*F+i),T*F+i ,T*F , i 直接短语:T*F , i 句柄:T*F 三. 证明文法G(S) :S → SaS |ε是二义的。(6分) 答:句子aaa对应的两颗语法树为:

因此,文法是二义文法 四.给定正规文法G(S): (1) S → Sa | Ab |b (2) A → Sa 请构造与之等价的DFA。(6分) 答:对应的NFA为:(6分) 状态转换表: a b {F} Φ{S} {S} {S,A} Φ {S,A} {S,A} {S} 五. 构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。(15分)答:(1)对应的NFA(5分) a b {0} {1,3} {0} {1,3} Φ{2,3} {2,3} {1,3} {2,3} (5分) 六. 已知文法G(S) : (1) S → ^ | a | (T) (2) T → T,S | S 试:(1)消除文法的左递归;(4分) (2)构造相应的first 和 follow 集合。(6分) 答:(1)消除文法的左递归后文法 G’(S)为: (1) S → ^ | a | (T)

蒋立源 编译原理第三版第二章 习题与答案(修改后)

第2章习题 2-1 设有字母表A1 ={a,b,c,…,z},A2 ={0,1,…,9},试回答下列问题: (1) 字母表A1上长度为2的符号串有多少个? (2) 集合A1A2含有多少个元素? (3) 列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。 2-2 试分别构造产生下列语言的文法: (1){a n b n|n≥0}; (2){a n b m c p|n,m,p≥0}; (3){a n#b n|n≥0}∪{c n#d n|n≥0}; (4){w#w r# | w∈{0,1}*,w r是w的逆序排列 }; (5)任何不是以0打头的所有奇整数所组成的集合; (6)所有由偶数个0和偶数个1所组成的符号串的集合。 2-3 试描述由下列文法所产生的语言的特点: (1)S→10S0S→aA A→bA A→a (2)S→SS S→1A0A→1A0A→ε (3)S→1A S→B0A→1A A→C B→B0B→C C→1C0C→ε (4)S→aSS S→a 2-4 试证明文法 S→AB|DC A→aA|a B→bBc|bc C→cC|c D→aDb|ab 为二义性文法。 2-5 对于下列的文法 S→AB|c A→bA|a B→aSb|c 试给出句子bbaacb的最右推导,并指出各步直接推导所得句型的句柄;指出句子的全部短语。

2-6 化简下列各个文法 (1) S→aABS|bCACd A→bAB|cSA|cCC B→bAB|cSB C→cS|c (2) S→aAB|E A→dDA|e B→bE|f C→c AB|dSD|a D→eA E→fA|g (3) S→ac|bA A→c BC B→SA C→bC|d 2-7 消除下列文法中的ε-产生式 (1) S→aAS|b A→cS|ε (2) S→aAA A→bAc|dAe|ε 2-8 消除下列文法中的无用产生式和单产生式 (1) S→aB|BC A→aA|c|aDb B→DB|C C→b D→B (2) S→SA|SB|A A→B|(S)|( ) B→[S]|[ ] (3) E→E+T|T T→T*F|F F→P↑F|P P→(E)|i 第2章习题答案 2-1 答: (1) 26*26=676 (2) 26*10=260 (3) {a,b,c,...,z, a0,a1,...,a9, aa,...,az,...,zz, a00,a01,...,zzz},共有26+26*36+26*36*36=34658个 2-2 解: (1) 对应文法为G(S)=({S},{a,b},{ S→ε| aSb },S) (2) 对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε },S) (3)对应文法为G(S)=({S,X,Y},{a,b,c,d,#}, {S→X,S→Y,X→aXb|#, Y→cYd|# },S)

编译原理 第二章习题答案

第2章习题解答 1.文法G[S]为: S->Ac|aB A->ab B->bc 写出L(G[S])的全部元素。 [答案] S=>Ac=>abc 或S=>aB=>abc 所以L(G[S])={abc} ============================================== 2. 文法G[N]为: N->D|ND D->0|1|2|3|4|5|6|7|8|9 G[N]的语言是什么? [答案] G[N]的语言是V+。V={0,1,2,3,4,5,6,7,8,9} N=>ND=>NDD.... =>NDDDD...D=>D......D =============================================== 3.已知文法G[S]: S→dAB A→aA|a B→ε|bB 问:相应的正规式是什么?G[S]能否改写成为等价的正规文法?[答案] 正规式是daa*b*;

相应的正规文法为(由自动机化简来): G[S]:S→dA A→a|aB B→aB|a|b|bC C→bC|b 也可为(观察得来):G[S]:S→dA A→a|aA|aB B→bB|ε ===================================================================== ========== 4.已知文法G[Z]: Z->aZb|ab 写出L(G[Z])的全部元素。 [答案] Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbb L(G[Z])={a n b n|n>=1} ===================================================================== ========= 5.给出语言{a n b n c m|n>=1,m>=0}的上下文无关文法。 [分析] 本题难度不大,主要是考上下文无关文法的基本概念。上下文无关文法的基本定义是:A->β,A∈Vn,β∈(Vn∪Vt)*,注意关键问题是保证a n b n的成立,即“a与b的个数要相等”,为此,可以用一条形如A->aAb|ab的产生式即可解决。 [答案] 构造上下文无关文法如下: S->AB|A A->aAb|ab B->Bc|c [扩展]

编译原理期末考试题目及答案

一、填空题(每空2分,共20分) 1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。 2.编译器常用的语法分析方法有自底向上和自顶向下两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。 5.对编译程序而言,输入数据是源程序,输出结果是目标程序。 1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。 2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。 3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。 4.一个LL(1)分析程序需要用到一张分析表和符号栈。 5.后缀式abc-/所代表的表达式是a/(b-c)。 二、单项选择题(每小题2分,共20分) 1.词法分析器的输出结果是__C。 A.单词的种别编码B.单词在符号表中的位置 C.单词的种别编码和自身值D.单词自身值 2.正规式M 1 和M 2 等价是指__C_。 A.M1和M2的状态数相等 B.M1和M2的有向边条数相等 C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等 3.文法G:S→xSx|y所识别的语言是_C____。 A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx* 4.如果文法G是无二义的,则它的任何句子α_A____。 A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。 A.源程序B.目标语言C.编译方法D.以上三项都是 6.四元式之间的联系是通过__B___实现的。 A.指示器B.临时变量C.符号表D.程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为__B___。 A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧D.A┐B∨∧CD∨ 8. 优化可生成__D___的目标代码。 A.运行时间较短 B.占用存储空间较小 C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小 9.下列___C___优化方法不是针对循环优化进行的。 A. 强度削弱B.删除归纳变量C.删除多余运算D.代码外提 10.编译程序使用_B_区别标识符的作用域。 A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次 C.说明标识符的过程或函数的动态层次 D. 标识符的行号 三、判断题(对的打√,错的打×,每小题1分,共10分) 2.一个有限状态自动机中,有且仅有一个唯一的终态。x

编译原理第二章-课后题答案

第二章 3.何谓“标志符”,何谓“名字”,两者的区别是什么? 答:标志符是一个没有意义的字符序列,而名字却有明确的意义和属性。 4.令+、*和↑代表加、乘和乘幂,按如下的非标准优先级和结合性质的约定,计算1+1*2↑2*1↑2的值。 (1)优先顺序(从高到低)为+、*和↑,同级优先采用左结合。 (2)优先顺序为↑、+、*,同级优先采用右结合。 答:(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 6.令文法G6为 N-〉D|ND D-〉0|1|2|3|4|5|6|7|8|9 (1)G6的语言L(G6)是什么? (2)给出句子0127、34、568的最左推导和最右推导。 (1)由0到9的数字所组成的长度至少为1的字符串。即:L(G6)={d n|n≧1,d∈{0,1,…,9}} 答: (2)0127的最左推导:N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 0127的最右推导:N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 (其他略) 7.写一个文法,使其语言是奇数集,且每个奇数不以0开头。 答:G(S):S->+N|-N N->ABC|C C->1|3|5|7|9 A->C|2|4|6|8 B->BB|0|A|ε [注]:可以有其他答案。 [常见的错误]:N->2N+1 原因在于没有理解形式语言的表示法,而使用了数学表达式。 8.令文法为 E->T|E+T|E-T T->F|T*F|T/F F->(E)|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+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的语法树:

编译原理试题及答案3

编译原理复习题 一、填空题: 1、编译方式与解释方式的根本区别在于(是否生成目标代码)。 2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。 3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。 4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。 5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。 6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。 7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。 8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。 9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。 10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。 11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。 12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。 13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。 14、在编译程序中安排中间代码生成的目的是(便于代码优化)和(便于目标程序的移植)。 15、表达式-a+b*(-c+d)的逆波兰表示为(a-bc-d+*+ )。 16、表达式a+b*(c+d/e)的逆波兰表示为(abcde/+*+ )。 17、表达式a:=a+b*c↑(d/e)/f的逆波兰表示为(aabcde/↑*f/+:= )。 18、文法符号的属性有(继承属性)和(综合属性)两种。 19、一个文法符号的继承属性是通过语法树中它的(兄弟结点与父)结点的相应文法符号的属性来计算的。 20、一个文法符号的综合属性是通过语法树中它的(子)结点的属性来计算的。

编译原理习题集

第二章 2.构造产生下列语言的文法 (2){a n b m c p|n,m,p≥0} 解: G(S) :S→aS|X,X→bX|Y,Y→cY|ε (3){a n # b n|n≥0}∪{cn # dn|n≥0} 解: G(S):S→X,S→Y,X→aXb|#, Y→cYd|# } (5)任何不是以0 打头的所有奇整数所组成的集合 解:G(S):S→J|IBJ,B→0B|IB|ε,I→J|2|4|6|8, J→1|3|5|7|9} (6)(思考题)所有偶数个0 和偶数个1 所组成的符号串集合 解:对应文法为 S→0A|1B|ε,A→0S|1C B→0C|1S C→1A|0B 3.描述语言特点 (2)S→SS S→1A0 A→1A0 A→ε 解:L(G)={1n10n11n20n2… 1nm0nm |n1,n2,…,nm≥0;且n1,n2,…nm 不全 为零}该语言特点是:产生的句子中,0、1 个数相同,并且若干相接的1 后必然紧接数量相同连续的0。 (5)S→aSS S→a 解:L(G)={a(2n-1)|n≥1}可知:奇数个a 5. (1) 解:由于此文法包含以下规则:AA→ε,所以此文法是0 型文法。 7.解: (1)aacb 是文法G[S]中的句子,相应语法树是: 最右推导:S=>aAcB=>aAcb=>aacb 最左推导:S=>aAcB=>aacB=>aacb (3)aacbccb 不是文法G[S]中的句子

aacbccb 不能从S推导得到时,它仅是文法G[S]的一个句型的一部分,而不是一个句子。 11.解:最右推导: (1) S=>AB=>AaSb=>Aacb=>bAacb=>bbAacb=>bbaacb 上面推导中,下划线部分为当前句型的句柄。对应的语法树为: 第三章 3 假设M:人 W:载狐狸过河,G:载山羊过河,C:载白菜过河

编译原理试题及答案

参考答案 一、单项选择题(共10小题,每小题2分,共20分) 1.语言是 A .句子的集合 B .产生式的集合 C .符号串的集合 D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析 C .词法分析、语法分析、语义分析和中间代码生成 D .词法分析、语法分析和代码优化 3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语 4.下推自动机识别的语言是 A .0型语言 B .1型语言 C .2型语言 D .3型语言 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 A . 字符 B .单词 C .句子 D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0?L 1?L 2?L 3 B .L 3?L 2?L 1?L 0 C .L 3=L 2?L 1?L 0 D .L 0?L 1?L 2=L 3 7.词法分析的任务是 A .识别单词 B .分析句子的含义 C .识别句子 D .生成目标代码 8.常用的中间代码形式不含 A .三元式 B .四元式 C .逆波兰式 D .语法树 9. 代码优化的目的是 A .节省时间 B .节省空间 C .节省时间和空间 D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言 C .把中间代码变换成依赖具体机器的目标代码 装 订 线

D.把汇编语言翻译成机器语言 二、填空题(本大题共5小题,每小题2分,共10分) 1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。 5.对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。 三、名词解释题(共5小题,每小题4分,共20分) 1.词法分析 词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则 从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位, 并转换成统一的内部表示(token),送给语法分析程序。 2.LL(1)文法 若文法的任何两个产生式A →α | β都满足下面两个条件: (1)FIRST(α) ? FIRST(β ) = φ; (2)若β?* ε,那么FIRST(α) ? FOLLOW( A ) = φ。 我们把满足这两个条件的文法叫做LL(1)文法,其中的第一个L代表从左 向右扫描输入,第二个L表示产生最左推导,1代表在决定分析器的每步 动作时向前看一个输入符号。除了没有公共左因子外,LL(1)文法还有一 些明显的性质,它不是二义的,也不含左递归。 3.语法树 句子的树结构表示法称为语法树(语法分析树或语法推导树)。 给定文法G=(V N,V T,P,S),对于G的任何句型都能构造与之关联的 语法树。这棵树具有下列特征: (1)根节点的标记是开始符号S。 (2)每个节点的标记都是V中的一个符号。 (3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列 次序为A1A2…A R,那么A→A1A2…A R一定是P中的一条产生式。

编译原理课后习题答案-清华大学-第二版

第1章引论 第1题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1) 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2) 源程序:源语言编写的程序称为源程序。 (3) 目标程序:目标语言书写的程序称为目标程序。 (4) 编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5) 后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6) 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第2题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。 答案: 一个典型的编译程序通常包含8个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源程序中的错误时,错误处理程序负责报告出错的位置和错误性质等信息,同时对发现的错误进行适当的校正(修复),目的是使编译程序能够继续向下进行分析和处理。 注意:如果问编译程序有哪些主要构成成分,只要回答六部分就可以。如果搞不清楚,就回答八部分。 第3题 何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系? 答案: 翻译程序是指将用某种语言编写的程序转换成另一种语言形式的程序的程序,如编译程序和汇编程序等。 编译程序是把用高级语言编写的源程序转换(加工)成与之等价的另一种用低级语言编写的目标程序的翻译程序。 解释程序是解释、执行高级语言源程序的程序。解释方式一般分为两种:一种方式是,源程序功能的实现完全由解释程序承担和完成,即每读出源程序的一条语句的第一个单词,则依据这个单词把控制转移到实现这条语句功能的程序部分,该部分负责完成这条语句的功

编译原理教程课后习题答案——第二章

第二章 词法分析 2.1 完成下列选择题: (1) 词法分析器的输出结果是 。 a. 单词的种别编码 b. 单词在符号表中的位置 c. 单词的种别编码和自身值 d. 单词自身值 (2) 正规式M1和M2等价是指 。 a. M1和M2的状态数相等 b. M1和M2的有向边条数相等 c. M1和M2所识别的语言集相等 d. M1和M2状态数和有向边条数相等 (3) DFA M(见图2-1)接受的字集为 。 a. 以0开头的二进制数组成的集合 b. 以0结尾的二进制数组成的集合 c. 含奇数个0的二进制数组成的集合 d. 含偶数个0的二进制数组成的集合 【解答】 (1) c (2) c (3) d 图2-1 习题2.1的DFA M 2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。通常是把词法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。 2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的有限自动机,其中f 定义如下: f(x,a)={x,y} f {x,b}={y} f(y,a)=Φ f{y,b}={x,y} 试构造相应的确定有限自动机M ′。 【解答】 对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y,b)均为多值函数,因此M 是一非确定有限自动机。 先画出NFA M 相应的状态图,如图2-2所示。 图2-2 习题2.3的NFA M 用子集法构造状态转换矩阵,如表 表2-1 状态转换矩阵 1b a

编译原理考试试题与答案(汇总)

《编译原理》考试试题及答案(汇总) 一、是非题(请在括号,正确的划√,错误的划×)(每个2分,共20分) 1.编译程序是对高级语言程序的解释执行。(× ) 2.一个有限状态自动机中,有且仅有一个唯一的终态。(×) 3.一个算符优先文法可能不存在算符优先函数与之对应。(√ ) 4.语法分析时必须先消除文法中的左递归。(×) 5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(√) 6.逆波兰表示法表示表达式时无须使用括号。(√ ) 7.静态数组的存储空间可以在编译时确定。(×) 8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。(× ) 10.一个语义子程序描述了一个文法所对应的翻译工作。(×) 二、选择题(请在前括号选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。 A.( ) 单词的种别编码B.( ) 单词在符号表中的位置 C.( ) 单词的种别编码和自身值D.( ) 单词自身值 2.正规式 M 1 和 M 2 等价是指_____。 A.( ) M1和M2的状态数相等 B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等

3.文法G:S→xSx|y所识别的语言是_____。 A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx* 4.如果文法G是无二义的,则它的任何句子α_____。 A.( )最左推导和最右推导对应的语法树必定相同 B.( ) 最左推导和最右推导对应的语法树可能不同 C.( ) 最左推导和最右推导必定相同 D.( )可能存在两个不同的最左推导,但它们对应的语法树相同 5.构造编译程序应掌握______。 A.( )源程序B.( ) 目标语言 C.( ) 编译方法 D.( ) 以上三项都是 6.四元式之间的联系是通过_____实现的。 A.( ) 指示器B.( ) 临时变量 C.( ) 符号表 D.( ) 程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。 A. ( ) ┐AB∨∧CD∨B.( ) A┐B∨CD∨∧ C.( ) AB∨┐CD∨∧ D.( ) A┐B∨∧CD∨ 8. 优化可生成_____的目标代码。 A.( ) 运行时间较短B.( ) 占用存储空间较小C.( ) 运行时间短但占用存空间大D.( ) 运行时间短且占用存储空间小 9.下列______优化方法不是针对循环优化进行的。 A. ( ) 强度削弱 B.( ) 删除归纳变量 C.( ) 删除多余运算 D.( ) 代码外提

编译原理课后习题答案+清华大学出版社第二版

第 1 章引论 第1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2)源程序:源语言编写的程序称为源程序。 (3)目标程序:目标语言书写的程序称为目标程序。 (4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。 答案: 一个典型的编译程序通常包含8个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。

编译原理试题及答案——加强版

编译原理试题及答案 <高级版> 一、对于文法 G[S] : S → 1A | 0B | ε A → 0S | 1AA B → 1S | 0BB ⑴ (3 分 ) 请写出三个关于 G[S] 的句子; ⑵ (4 分 ) 符号串 11A0S 是否为 G [S] 的句型?试证明你的结论。 ⑶ (3 分 ) 试画出 001B 关于 G [S] 的语法树。 二、请构造一个文法,使其产生这样的表达式 E :表达式中只含有双目运算符 + 、 * ,且 + 的优先级高于 * , + 采用右结合, * 采用左结合,运算对象只有标识符 i ,可以用括号改变运算符优先级。要求给出该文法的形式化描述。 三、设有语言 L={ α | α∈ {0,1} + ,且α不以 0 开头,但以 00 结尾 } 。 ⑴试写出描述 L 的正规表达式; ⑵构造识别 L 的 DFA (要求给出详细过程,并画出构造过程中的 NDFA 、 DFA 的状态转换图,以及 DFA 的形式化描述 ) 。 四、给定文法 G[S] : S → AB A → a B | bS | c B → AS | d ⑴ (6 分 ) 请给出每一个产生式右部的 First 集;

⑵ (3 分 ) 请给出每一个非终结符号的 Follow 集; ⑶ (8 分 ) 请构造该文法的 LL(1) 分析表; ⑷ (8 分 ) 什么是 LL(1) 文法?该文法是 LL(1) 文法吗?为什么? 五、给定文法 G[S] : S → SaA|a A → AbS|b ⑴请构造该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 。 ⑵请构造该文法的 LR(0) 分析表。 ⑶什么是 LR(0) 文法?该文法是 LR(0) 文法吗?为什么? ⑷什么是 SLR(1) 文法?该文法是 SLR(1) 文法吗?为什么? 六、给定下列语句: if a+b>c then x := a*(b-c) + (b*c-d)/e ⑴写出其等价的逆波兰表示; ⑵写出其等价的四元式序列。 七、已知下列 C 语言程序: int * f() { int a = 100; return &a; } main()

编译原理(清华大学 第2版)课后习题答案

第三章 N=>D=> {0,1,2,3,4,5,6,7,8,9} N=>ND=>NDD L={a |a(0|1|3..|9)n且 n>=1} (0|1|3..|9)n且 n>=1 {ab,} a n b n n>=1 第6题. (1) <表达式> => <项> => <因子> => i (2) <表达式> => <项> => <因子> => (<表达式>) => (<项>) => (<因子>)=>(i) (3) <表达式> => <项> => <项>*<因子> => <因子>*<因子> =i*i (4) <表达式> => <表达式> + <项> => <项>+<项> => <项>*<因子>+<项> => <因子>*<因子>+<项> => <因子>*<因子>+<因子> = i*i+i (5) <表达式> => <表达式>+<项>=><项>+<项> => <因子>+<项>=i+<项> => i+<因子> => i+(<表达式>) => i+(<表达式>+<项>) => i+(<因子>+<因子>) => i+(i+i) (6) <表达式> => <表达式>+<项> => <项>+<项> => <因子>+<项> => i+<项> => i+<项>*<因子> => i+<因子>*<因子> = i+i*i 第7题

第9题 语法树 s s s* s s+a a a 推导: S=>SS*=>SS+S*=>aa+a* 11. 推导:E=>E+T=>E+T*F 语法树: E +T * 短语: T*F E+T*F 直接短语: T*F 句柄: T*F 12.

短语: 直接短语: 句柄: 13.(1)最左推导:S => ABS => aBS =>aSBBS => aBBS => abBS => abbS => abbAa => abbaa 最右推导:S => ABS => ABAa => ABaa => ASBBaa => ASBbaa => ASbbaa => Abbaa => a1b1b2a2a3 (2) 文法:S → ABS S → Aa S →ε A → a B → b (3) 短语:a1 , b1 , b2, a2 , , bb , aa , abbaa, 直接短语: a1 , b1 , b2, a2 , , 句柄:a1 14 (1) S → AB A → aAb | ε B → aBb | ε (2) S → 1S0 S → A A → 0A1 |ε 第四章 1. 1. 构造下列正规式相应的DFA (1)1(0|1)*101 NFA (2) 1(1010*|1(010)*1)*0 NFA

郑州大学编译原理试卷及答案(往年试题整合)

二填空题 1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(栈式动态存储分配)和(堆式动态存储分配)。 2. 规范规约是最(左)规约。 3. 编译程序的工作过程一般划分为5个阶段:词法分析、(语法分析)、语义分析与中间代码生成,代码优化及(目标代码生成)。另外还有(表格管理)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为(xyz*ab+/+ )。 5.文法符号的属性有综合属性和(继承属性)。 6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i,j]的地址计算公式为(a+(i-1)*20+j-1 )。7.局部优化是局限于一个(基本块)范围内的一种优化。 8词法规则通常可以用____正规式________,正规文法、____自动机________描述;语法规则通常用___2型文法___来描述;语义规则通常用__属性文法_____来描述。 9编译原理的工作过程一般划分为:词法分析、语法分析、语义分析、优化和目标代码生成五个阶段。 1.( 最右推导 )称为规范推导。 2.编译过程可分为(词法分析),(语法分析),(中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的)。 4.从功能上说,程序语言的语句大体可分为(执行性)语句和(说明性)语句两大类。 5.语法分析器的输入是(单词符号),其输出是(语法单位)。 6.扫描器的任务是从(源程序)中识别出一个个(单词符号)。 7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。 8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址)。 9.一个句型的最左直接短语称为句型的(句柄)。 10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。 11.一个名字的属性包括( 类型)和( 作用域 )。 12.常用的参数传递方式有(传地址),(传值)和(传名)。 13.根据优化所涉及的程序范围,可将优化分成为(局部优化),(循环优化)和(全局优化)三个级别。 14.语法分析的方法大致可分为两类,一类是(自上而下)分析法,另一类是(自下而上)分析法。 15.预测分析程序是使用一张(分析表)和一个(符号栈)进行联合控制的。 16.常用的参数传递方式有(传地址),(传值)和(传名)。

编译原理试题A及答案 2

编译原理试题A 一、单项选择题(每题1分,共20分) 1、哪个不是编译系统的组成部分(C ) A.词法分析器 B. 代码生成器 C.设备管理程序 D. 语法分析器 2. 设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是什么 ( B ) A.词法分析 B. 语法分析 C.语义分析 D. 代码生成 3. 下面不能用于对文法进行描述的是(A ) A.源语言 B. EBNF C.BNF D. 语法图 4. 设有文法G[S]: S→S1|S0|Sa|Sc|a|b|c,下列符号串中不是该文法的句子的是 (A ) A.ab0 B. a0c01 C.aaa D. bc10 5. 文法G[S]: S→aA A→bB B→a|aS ,则L(G)为(C )A.{(ab)n a|n≥1} B. {a (ba)n|n≥1} C.{(aba)n|n≥1} D. {(aba)n|n≥0} 6. 哪个不是DFA的构成成分(B ) A.有穷字母表 B. 初始状态集合 C.终止状态集合 D. 有限状态集合 7.词法分析器的输入是(B ) A.单词符号串 B.源程序C.语法单位 D.目标程序 8.在词法分析阶段不能识别的是(C )A.标识符 B. 运算符C.四元式 D. 常数 9.设有一段C语言程序 while(i&&++j) { c=2.19; j+=k;

i++; } ,经过词法分析后可以识别的单词个数是(B )A.19 B.20 C.21 D.23 10.自上而下语法分析的主要动作是(B )A.移进 B. 推导C.规约 D. 匹配 11.下面不属于LL(1)分析器的组成部分是(D )A.LL(1)总控程序 B. LL(1)分析表 C.分析栈 D.源程序串 12.设有文法G[S]为 S→AB|bC,A→ε|b,B→ε|aD,C→AD|b,D→aS|c 则FOLLOW(A)为(A )A.{a,c,#} B.{c,#} C.{a,#} D.{#} 13.设有文法G[S]: S→Ap|Bq,A→a|cA,B→b|dB,则FIRST(Ap)为( C )A.{p,q} B. {b,d} C.{a,c} D. 其他 14.自下而上语法分析的主要分析动作是(D )A.推导 B. 规约C.匹配 D. 移进-规约 15.算法优先分析中,可规约串是(C )A.句柄B.活前缀C.最左素短语D.素短语16. 设有文法G={{S},{a},{S→SaS|ε},S},该文法是(B ) A.LL(1)文法B C.SLR(1)文法D.算法优先文法 17、中间代码生成时所以据的是(C )A.语法规则B.词法规则C.语义规则 D.等价变换规则 18、给定文法G: E→E+T|T,T→T*F|F,F→i|(E) 则L(G)中的一个句子i+i+(i*i)*i的逆波兰表示为(C)A.iii*i++B.ii+iii**+ C.ii+ii*i*+ D.其他 19.在编译程序中与生成中间代码的目的无关的是(B)A.便于目标代码优化B.便于存储空间的组织 C.便于目标代码的移植D.便于编译程序的移植

相关主题