编译原理题库——简答题

编译原理题库——简答题
编译原理题库——简答题

编译原理A

1.简要说明语义分析的基本功能。

2. 考虑文法 G[S]:

S → (T) | a+S | a

T → T,S | S

消除文法的左递归及提取公共左因子。

3试为表达式 w+(a+b)*(c+d/(e-10)+8) 写

出相应的逆波兰表示。

4. 按照三种基本控制结构文法将下面的语

句翻译成四元式序列:

while (A

{

if (A ≥ 1) C=C+1;

else while (A ≤ D)

A=A+2;

}。

5. 已知文法 G[S] 为S → aSb|Sb|b,试

证明文法 G[S] 为二义文法。

A答案

1答:语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检查。

2解:消除文法G[S]的左递归:

S→(T) | a+S | a

T→ST′

T′→,ST′| ε

提取公共左因子:

S→(T) | aS′

S′→+S | ε

T→ST′

T′→,ST′| ε

3答:w a b + c d e 10 - / + 8 + * +

4答:该语句的四元式序列如下(其中E1、

E2和E3分别对应A<C∧B<D、A≥1和A≤D,并且关系运算符优先级高):

100 (j<,A,C,102)

101 (j,_,_,113)

102 (j<,B,D,104)

103 (j,_,_,113)

104 (j=,A,1,106)

105 (j,_,_,108)

106 (+, C, 1, C)

107 (j,_,_,112)

108 (j≤,A,D,110) 109 (j,_,_,112)

110 (+, A, 2, A)

111 (j,_,_,108)

112 (j,_,_,100)

113

5答:证明:

由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:

因此,文法G[S]为二义文法。

编译原理B

1.什么是句子?什么是语言 ?

2. 写一文法,使其语言是偶正整数的集合,

要求:

(1)允许0打头;

(2) 不允许0打头。

3. 已知文法 G[E] 为:

E→T|E+T|E-T

T→F|T*F|T/F

F→ ( E ) |i

①该文法的开始符号(识别符号)是什么?

②请给出该文法的终结符号集合 VT 和非

终结符号集合 VN 。

③找出句型 T+T*F+i 的所有短语、简单短

语和句柄。

4. 构造正规式相应的 NFA : 1(0|1)*101。

5. 写出表达式(a+b*c)/(a+b)-d的逆波

兰表示和三元式序列。

B 卷答案

1答:(1)设G 是一个给定的文法,S 是文法的开始符号,如果S x(其中x ∈VT*),则称x 是文法的一个句子。

(2)设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为: L(G)={x│S x,x

(2)G[S]=({S,P,R,D,N,Q },{0,1,2,…,9},P,S) P: S->PD|P0|D P->NR|N R->QR|Q D->2|4|6|8 N->1|2|3|4|5|6|7|8|9 Q->0|1|2|3|4|5|6|7|8|9 3解:① 该文法的开始符号(识别符号)是E 。 ②该文法的终结符号集合VT={+、-、*、/、(、)、i}。 非终结符号集合VN={E 、T 、F}。 ③句型T+T*F+I 的短语为i 、T*F 、第一个T 、T+T*F+i; 简单短语为i 、T*F 、第一个T;句柄为第一个T 。 4解:1(0|1)*101对应的NFA 为

5解:逆波兰表示: abc*+ab +/d - 三元式序列: ① (*,b ,c) ② (+,a ,①) ③ (+,a ,b) ④ (/,②,③) ⑤ (-,④,d) 编译原理C 1.(10分) 对下列错误信息,请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、代码生成)报告的。 (1) else 没有匹配的if (2) 数组下标越界

(3) 使用的函数没有定义

(4) 在数中出现非数字字符

(5)函数调用时实参与形参类型不一致。

2.(15分) 构造一个DFA ,它接收Σ={0,1}

上所有满足如下条件的字符串:每个1 都有

0 直接跟在右边。并给出该语言的正规式

3.(10分) 为下面的语言设计文法:

{a m b n

, 其中m ≥ n }

(2) {w | w ∈{a , b }*,w 的长度为奇数}

证明 E + T *(id )是文法的一个句型,指出该句型的所有短语、直接短语和句柄。 5.(15分) 给定文法: E → E + T | E - T |T T → T * F | T / F |F F → (E ) | id C 卷答案 1答案:(每小题2分) (1) 语法分析

(2) 语法分析 (3) 语义分析 (4) 词法分析 (5) 语义分析 2答案:

按题意相应的正规表达式是(0*10)*0*,或

0*(0 | 10)*0* ,构造相应的DFA 。

3答案:(每小题 10分)

(1)考虑在先产生同样数目的a,b ,然后再

生成多余的a 。以下是一种解法: S → aSb | aS | ε (2) A → aB | bB B → aA | bA | ε

5证明 E + T *(id )是文法的一个句型,指出该句型的所有短语、直接短语和句柄。 答:

(

*)(*)(*)(T E F T E T T E E T*E T*F E T E E rm rm rm rm rm rm +?+?+?+?+?+?, 短语:id ,(id ), T *(id ), E + T *(id )。 直接短语:id 。 句柄是id 。 编译原理D 卷 3、何谓“标识符”,何谓“名字”,两者的区别是什么? 4、令 +、* 和↑代表加、乘和乘幂,按如下的非标准优先级和结合性质的约定,计算1+1*2↑*1↑2的值: (1)、优先顺序(从高至低)为+、* 和↑,同级优先采用左结合。 (2)、优先顺序为↑、+、*,同级优先采用右结合。 6、令文法G 6为N →D ∣ND ,D →0∣1∣2∣3∣4∣5∣6∣7∣8∣9 (1)、G 6的语言L(G 6)是什么? (2)、给出句子0127、34和568的最左推导和最右推导。 7、写一个文法,使其语言是奇数集,且每个奇数不以0开头。 8、令文法为E →T ∣E+ T ∣E-T T →F ∣T*F ∣T/F F →(E)∣i (1) 给出i+i*i 、i*(i+i)的最左推导和最右推导; 给出i+i+i 、i+i*i 和i-i-i 的语法树。 9、证明下面的文法是二义的:S →iSeS ∣iS ∣i 11、给出下面语言的相应文法: L 1={a n b n c i

∣n ≥1,i ≥0}, L 2={a i b n c n

∣n ≥1,i ≥0} L 3={a n b n a m b m

∣n ,m ≥0} L 4={1n 0m 1m 0n

∣n ,m ≥0} 3解:标识符是高级语言中定义的字符串,一般是以英文字母(包括大小写字母)或下划线开头的,由数字、字母和下划线组成的一定长度的字符串,它只是一个标志,没有其他含义。名字是用标识符表示的,但名字

不仅仅是一个字符串,它还具有属性和值。 4解: (1)、1+1*2↑*1↑2 = 2*2↑*1↑2 = 4↑*1↑2 = 4↑↑2 = (2)、1+1*2↑*1↑2 = 6解: (1)、L(G 6)是由0到9这10个数字组成的字符串。 (2)、句子0127、34和568的最左推导: N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01D D=>012D=>0127 N=>ND=>DD=>3D=>34 N=>ND=>NDD=>DDD=>5DD=>56D=>568 句子0127、34和568的最右推导: N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 N=>ND=>N4=>D4=>34 N=>ND=>N8=>ND8=>N68=>D68=>568 7解: G(S):A →2∣4∣6∣8∣D B →A ∣0 C →CB ∣A D →1∣3∣5∣7∣9 S →CD ∣D 8解: (1) 最左推导为:

E => E+T => T+T => F+T => i+T => i+T*F

=> i+F*F => i+i*F => 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)

最右推导为:

E =>E+T =>E+T*

F =>E+T*i =>E+F*i

=>E+i*i => T+i*i => F+i*i => i+i*i

E => T => T*

F => F*F => F*(E) => F*(E+T) => F*(E+ F) => F*(E+ i) => F*(T+i) => F*(F+i) => F*(i+i) => i*(i+ i) (2) 语法树:

9解:考虑句子iiiei ,存在如下两个最右

推导:

S=>iSeS=>iSei=>iiSei=>iiiei

S=>iS=>iiSeS=>iiSei=>iiiei 由此该文法是二义的。

11解:

L 1的文法:S →AC ;A →aAb ∣ab ;C →cC

∣ε

L 2的文法:S →AB ;A →aA ∣ε;B →bBc ∣bc L 3的文法:S →AB ;A →aAb ∣ε;B →aBb ∣ε L 4的文法: S →1S0∣A ; A →0A1∣ε; 编译原理E 卷 1、 构造下列正规式相应的DFA 1(0∣1)*101 1(1010*∣1(010)*1)*0 0*10*10*10*

(00∣11)*((01∣10)(00∣11)*(01∣

10)(00∣11)*)*

2、 给出下面正规表达式: (1) 以01结尾的二进制数串; (2) 能被5整除的十进制整数;

包含奇数个1或奇数个0的二进制数串;

3、 对下面情况给出DFA 及正规表达式:

(1){0,1}上不含子串010的所有串。

4、 将图3.18的(a )和(b )分别确定化和

最小化。

5、 构造一个DFA ,它接受∑={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。、

6、 给定右线性文法G : S →0S ∣1S ∣1A ∣0B A →1C ∣1 B →0C ∣0 C →0C ∣1C ∣0∣1

求出一个与G 等价的左线性文法。 文法G 对应的状态转换图如下所示: a

(b) a

T

E

+

E

F i

+ T F

i

i

F i

F i

E 卷答案

2解:

(1)、1(0∣1)*101

第一步:根据正规式构造NFA ,先引入初始状态X 和终止状态Y :

再对该转换图进行分解,得到分解后的NFA 如下图:

第二步:对NFA 进行确定化,获得状态

第三步:化简该DFA ,获得最简的DFA

即为所求。

首先根据是否终止状态将所有状态分为两个集合{0,1,2,3,4}和{5},这里集合{5}已经不可划分,只需考虑集合{0,1,2,3,4}。

{0,1,2,3,4}0={2,4,-},{0,1,2,3,4}1={1,3,5}

因为{1,3,5}和{2,4,-}不在一个集合里面,所以需要对集合{0,1,2,3,4}进行进一步的划分,检查其中的所有状态。状态0不能接受字符0,需要把状态0划分出来;另外,只有状态4读入字符1后进入状态5,因此将状态4划分出来,划分的结果为4个集合:{0},{1,2,3},{4},{5}。 检查集合{1,2,3},{1,2,3}0={2,4},不属于同一个集合,因此要对集合{1,个集1=3,{5}。 所以,最终所求DFA 如下图示:

5︱6︱7︱8︱9) (0︱17︱8︱9)*(0︱5)(0︱或奇数个0的二进制数

*︱0*1(0︱10*1)*。 4解: (1)、直接写出满足条件的正规表达

式。考虑满足条件的字符串中的1:在串的开始部分可以有0个或多个1,串的尾部也可以有0个或多个1,但串的中间只要出现1则至少在两个以上,所以满足条件的正规表达式为1*(0∣111*)*1*。

所求的DFA如下图所示:5解:

(1)、图(a)中为一个NFA,所以需要先对它进行确定化,得到DFA,然后再对DFA 进行最小化。

首先进行确定化,如下两个表所示:

根据状态转换矩阵得到如下图所示的DFA:化简后的DFA为:

(2)、题中所给即为一个DFA,不需要确定化,只对它进行最小化即可。

首先将状态划分为两个集合{{0,1},{2,3,4,5}}。有{0,1}a={1},{0,1}b={2,4}和{2,3,4,5}a={1,3,0,5},{2,3,4,5}b={2,3,4,5},所以可以进一步划分为{{0,1},{2,4},{3,5}},然后有{0,1}a={1},{0,1}b={2,4},{2,4}a={1,0},{2,4}b={3,5},{3,5}a={3,5},{3,5}b={2,4}。因此,最后划分结果是{{0,1},{2,4},{3,5}}。

最小化后的DFA如下图所示:

6解:第一步:写出正规表达式。根据题意,该DFA接受的字符串由0和1组成,并且每个1的后面都有0直接跟在右边,因此,可以将该字符串理解为由0和10构成的串,则相应的正规表达式就是(0︱10)*。

第二步:构造NFA。首先得出下图:

然后对上图进行分解后得到如下图所示的NFA。

第三步:确定化,得到DFA。确定化结果如表14.1所列;给状态编号,得到表14.2所示的状态转换矩阵:

表14.2 新的状态转换矩阵

根据状态转换矩阵得到DFA 如下图所示:

第四步:对该DFA 进行最小化。其分析过程如下:

{0,1},{2}

{0,1}0={1},{0,1}1={2} {0,1},{2}

最小化后的DFA 如图所示,该DFA 即为所求。

对状态转换图进行确定化,得到状态转换矩阵:

根据状态转换矩阵获得DFA 如下:

还可以对上图的DFA

进行化简,状态3和4可以合并,化简后的DFA 如下图所示:

不难看出,该DFA 接受的语言是{0,1}G ’:

的?

(2)计算每个非终结符的FIRST 集合和FOLLOW 集合:

FIRST (S )={a ,∧,( } FIRST (T )={a ,∧,( } FIRST (T ’)={,,ε}

FOLLOW (S )={ ),’,’,#} FOLLOW (T )={ ) } FOLLOW (T ’)={ ) }

从而可见改造后的文法符合LL(1)文法的充分必要条件,所以是LL(1)的。

该文法的预测分

2、对下面的文法G : E →TE ’ E ’→+E ∣ε T →FT ’ T ’→T ∣ε F →PF ’

F ’→*F ’∣ε P →(E)∣a ∣b ∣∧

(1) 计算这个文法的每个非终结符

的FIRST 和FOLLOW 。

(2)

证明这个文法是LL(1)的。

(3) 构造它的预测分析表。

(4)

构造它的递归下降分析程序。

3、下面文法中,哪些是LL(1)的,说明

理由。 (1)、 S →Abc A →a ∣ε B →b ∣ε (2)、 S →Ab A →a ∣B ∣ε B →b ∣ε

(3)、

S →ABBA

A →a ∣ε

B →b ∣ε

(4)、

S →aSe ∣B

B →bBe ∣

C C →cCe ∣d 4、对下面文法: Expr →-Expr Expr →(Expr)∣Var

1、令文法G 1为 E →E+T ∣T T →T*F ∣F F →(E)∣i

证明E+T*F 是它的一个句型,指出这个

句型的所有短语,直接短语和句柄。 2、考虑下面的表格结构文法G 2: S →a ∣∧∣(T) T →T ,S ∣S

(1) 给出(a ,(a ,a))和(((a ,a),

∧,(a)),a)的最左和最右推导。

指出(((a ,a),^,(a)),a)的规范归约及

每一步的句柄。根据这个规范归约,给出“移进-归约”的过程,并给出它的语法树自下而上的构造过程。 3、(1)计算练习2文法G 2的FIRSTVT 和LASTVT 。

(2)计算G 2的优先关系。G 2是一个算符优先文法吗?

(3)给出输入串(a ,(a ,a ))的算符优先分析过程。 4、考虑文法: S →AS ︱b A →SA ︱a

(1) 列出这个文法的所有LR(0)项

目。

(2) 构造这个文法的LR(0)项目集

规范族及识别活前缀的DFA 。

(3) 这个文法是SLR 的吗?若是,

构造出它的SLR 分析表。

(4) 这个文法是LALR 或LR(1)的

吗?

F卷答案

1答:解:

(1)按照T、S的顺序消除左递归,得到文法:

G’(S)

S→a∣∧∣(T)

T→ST’

T’→,ST’∣ε

对于非终结符S,T, 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

Ends;

Procedure T;

Begin

S; T’;

Ends;

Procedure T’

Begin

If sym = ‘,’

Then begin

Advance ;

S; T’

Ends

ends;

2解:

(1)计算每个非终结符的FIRST集合和FOLLOW集合如下:

FIRST(E)={(,a,b,∧}

FIRST(E’)={+,ε}

FIRST(T)={(,a,b,∧}

FIRST(T’)={(,a,b,∧,ε}

FIRST(F)={(,a,b,∧}

FIRST(F’)={*,ε}

FIRST(P)={(,a,b,∧}

FOLLOW(E)={#,)}

FOLLOW(E’)={#,)}

FOLLOW(T)={+,),#}

FOLLOW(T’)={+,),#}

FOLLOW(F)={(,a,b,∧,+,),#}

FOLLOW(F’)={(,a,b,∧,+,),#}

FOLLOW(P)={*,(,a,b,∧,+,),#}

(2)本文法是LL ( 1 )文法。

证明:通过观察可知文法中不含有左递归,满足LL (1)文法定义的第一个条

件。

考虑下列产生式:

E’→+E∣ε

T’→T∣ε

F’→*F’∣ε

P→(E)∣a∣b∣∧

因为:

FIRST(+E)∩FIRST(ε)={+}∩{ε}=?

FIRST(E’)∩FOLLOW(E’)={+}∩{#,)}= ?

FIRST(T)∩FIRST(ε)={(,a,b,∧}∩{ε}=?

FIRST(T’)∩FOLLOW(T’)={(,a,b,∧}∩{+,),#}=?

FIRST(*F’)∩FIRST(ε)={*}∩{ε}=?

FIRST(F’)∩FOLLOW(F’)={*}∩{(,a,b,∧,+,),#}= ?

FIRST((E))∩FIRST(a)∩FIRST(b)∩FIRST(∧)= ?

所以该文法是LL(1)文法。

(3)构造其预测分析表:

预测

分析表

(4) 构造其递归下降分析程序:

Procedure E;

Begin

T ; E ’

End ;

Procedure E ’ ;

Begin

If sym = ‘ + ’

Then begin

Acvance ;

E

End

End ;

Procedure T ;

Begin

F ; T ’

End ;

Procedure T ’ ;

Begin

If sym ∈first ( T )

Then T

Else if sym = ‘*’ then error

End ;

Procedure F ;

Begin

If sym ∈first ( P )

P; F ’; End ; If sym = ‘ a ’ or sym = ‘ b ‘ or sym = ‘ ^ Then acvance Else if sym = ‘ ( ‘ Then begin Advance ; E ; If sym = ‘ ) ‘ Then advance Else error End Else error End; 3 解: (1) 该文法不含左递归,计算每个非终结符的FIRST 集合和FOLLOW 集合如下: FIRST (S )={a ,b ,c} FIRST (A )={a ,ε} FIRST (B )={b ,ε} FOLLOW (S )={#} FOLLOW (A )={b ,c} FOLLOW (B )={c}

可见该文法满足LL(1)文法的三个条件,是LL(1)文法。 (2) 该文法不含左递归,计算每个非终结符的FIRST 集合和FOLLOW 集合如下: FIRST (S )={a ,b} FIRST (A )={a ,b ,ε}

FIRST (B )={b ,ε} FOLLOW (S )={#} FOLLOW (A )={b} FOLLOW (B )={b}

考虑A →a ∣B ∣ε,因为FIRST (B )∩FOLLOW (A )={b}≠?,所以该文法不是LL(1)文法。

(3) 该文法不含左递归,计算每个

非终结符的FIRST 集合和FOLLOW 集合如下: FIRST (S )={a ,b ,ε} FIRST (A )={a ,ε} FIRST (B )={b ,ε} FOLLOW (S )={#}

FOLLOW (A )={a ,b ,#} FOLLOW (B )={a ,b ,#} 考虑A →a ∣ε和B →b ∣ε,

因为 FIRST (a )∩FOLLOW (A )={a}

≠? FIRST (b )∩FOLLOW (B )={b}

≠?

所以该文法不是LL(1)文法。

(4) 该文法不含左递归,计算每个

非终结符的FIRST 集合和FOLLOW 集合如下: FIRST (S )={a ,b ,c ,d} FIRST (B )={b ,c ,d} FIRST (C )={c ,d} FOLLOW (S )={e ,#} FOLLOW (B )={e ,#} FOLLOW (C )={e ,#}

可见该文法满足LL(1)文法的三个条件,是LL(1)文法。

1解:因为E=>E+T=>E+T*F ,所以E+T*F 是该文法的一个句型。 短语:E+T*F ,T*F 直接短语:T*F 句柄:T*F 2解: (1)最左推导: S=>(T)=>(T ,S)=>(S ,S)=>(a

(T))=>(a ,(T ,S))=>(a ,(S ,(a ,S))=>(a ,(a ,a)) S=>(T)=>(T ,S)=>(S ,S)=>((T ,S),S)=>((T ,S ,S),S ,S),S)=>(((T),S ,S),S)=>(((T ,S),

S ,S),S)=>(((S ,S),S ,S),S)=>(((a ,S),S ,S),S)=>(((a ,a),S ,S),S)=>(((a ,a),∧,S),S)=>(((a ,a),∧,(T)),S)=>(((a ,a),∧,(S)),S)=>(((a ,a),∧,(a)),S)=>(((a ,a),∧,(a)),a) 最右推导:

S=>(T)=>(T ,S)=>(T ,(T))=>(T ,(T ,S))=>(T ,(T ,a))=>(T ,(S ,a))=>(T ,(a ,a))=>(S ,(a ,a))=> (a ,(a ,a))

S=>(T ,S)=>(T ,a)=>(S ,a)=>((T),a)=>((T ,S),a)=>((T ,(T)),a)=>((T ,(S)),a)=>((T ,(a)),a)=>((T ,S ,(a)),a)=>((T ,∧,(a)),a)=>((S ,∧,(a)),a)=>(((T),∧,(a)),a)=>(((T ,S),∧,(a)),a)=>(((T ,a),∧,(a)),a)=>(((S ,a),∧,(a)),a)=> (((a ,a),∧,(a)),a)

(2)(((a ,a),^,(a)),a)的规范归约如下:

(((a ,a),∧,(a)),a) (((S ,a),∧,(a)),a) (((T ,a),∧,(a)),a) (((T ,S),∧,(a)),a) (((T),∧,(a)),a) ((S ,∧,(a)),a) ((T ,∧,(a)),a) ((T ,S ,(a)),a) ((T ,(a)),a) ((T ,(S)),a) ((T ,(T)),a) ((T ,S),a) ((T),a) (S ,a) (T ,S) (T)

(1)、0.S’→·S 1.S’→S· 2.S →·AS 3.S→A·S 4.S→AS·

5.S→·b

6.S→b·

7.A →·SA

8.A→S·A

9.A→SA·

10.A→·a 11.A→a·

(2)、构造识别活前缀的NFA如下图所示:

(3)、不是SLR文法。

I3、I6、I7有“移进—归约”冲突。

I3:FOLLOW(S’)={#}不包含a,b。

I6:FOLLOW(S)={#,a,b}包含a,b;“移进—归约”冲突无法消解。

I7:FOLLOW(A)={a,b}包含a,b;“移进—归约”冲突消解。

所以不是SLR文法。

编译原理G卷

1.构造正规表达式a(aa)*bb(bb)*a(aa)* 的NFA。

2.构造正规表达式((a|b)*|aa)*b的NFA。2.令文法G[N]为 G[N]: N→D|ND D→0|1|2|3|4|5|6|7|8|9

给出句子568的最左、最右推导。3.给出字母表Σ={a,b}上的同时只有奇数个a和奇数个b的所有串的集合的正规文法;

5. 表达式a*b-c-d$e$f-g-h*i中,运算符的优先级由高到低依次为-、*、$,且均为右结合,请写出相应的后缀式。

6.判断文法G[S]: S → BA

A → BS | d

B → aA| bS | c

是否为LL(1)文法.

7.对于文法G[E]: E→E+T | T

T→T+P | P

P→(E) | i

写出句型P+T+(E+i)的所有短语、直接短语、句柄。

8.已知文法G[A]: A→aABl|a

B→Bb|d

试给出消除左递归和回溯与G[A]等价的LL(1)文法G[A′];

9.将下面的语句翻译成四元式序列:if (x>y) m= 1;

else m=0;

10.将以下DFA 最小化。(8分)

11.设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′。(12分)

12.试构造下述文法的SLR(1)分析表。(13分)

G[A]: A→aABl|a

B→Bb|d

13.将下面的语句翻译成四元式序列:(7分)

if (x>y) m= 1;

else m=x+y;

14. 试构造下述文法的LL(1)分析表。(15分)

G[S]: S→(L)|a

L→L,S|S

17.已知文法G[S]: S→aSbS|bSaS|ε试证明G[S]是二义文法

18.将下面的语句翻译成四元式序列:while(a

if (c>d) x=y+z

19.构造正规表达式a(aa)*bb(bb)*a 的最小化的确定有限自动机M′。

21.画出编译程序的总体结构图,简述各部分的主要功能。

22.对于文法G(S):

S → (L) | aS | a

L → L, S | S

(1) 画出句型(S, (a))的语法树。

(2) 写出上述句型的所有短语、直接短语和句柄。

23.构造一文法,使其描述的语言L = {ω|ω∈ (a, b)*,且ω中含有相同个数的a 和b}。

24.分别给出表达式–(a*(b-c))+d 的逆波兰表示和四元式表示。

25.把下列语句翻译为四元式序列: while (A > B)

if (C > D)

X = Y * Z

else

X = Y + Z

26.构造一个DFA,它接受Σ = {0, 1}上所有满足如下条件的字符串:每个1后面都有0直接跟在右边。

27.已知文法G(S):

S→S*aP| aP| *aP

P→+aP| +a

(1) 将文法G(S)改写为LL(1)文法G’(S);

(2) 写出文法G’(S)的预测分析表。

28.已知文法G(S):

S→aS | bS | a

(1) 构造识别该文法所产生的活前缀的DFA;

(2) 判断该文法是LR(0)还是SLR(1),并构造所属文法的LR分析表。

29.将下图所示的非确定有限自动机(NFA)变换成等价的确定有限自动机(DFA)。其中,X为初态,Y为终态。

b

30.对正规式(a|b)*abb构造其等价的NFA。31.下面的文法产生0和1的串,即二进制的正整数,请给出决定每个二进制数的值(十进制形式)的语法制导定义。

32.把算术表达式-(a+b) ?(c+ d) + (e+ f) 翻译成等价的四元式序列(序号从0开始)。

33.设有文法G[S]:

S→a|(T)|ε

T→T,S|S

试给出句子(a,a,a)的最左推导。

34.已知文法G:

S → ( L | a

L → S , L | )

判断是不是LL(1)文法,如果是请构造文法G的预测分析表,如果不是请说明理由。

35.文法

S

→ A a | b A c | d c | b d a

A → d

36.将下图所示的确定有限自动机(DFA)最小化。其中,X为初态,Y为终态。

37.请画出识别无符号十进制整数的状态转换图

38.设有文法G[S]:

S→S*S|S+S|(S)|i

该文法是否为二义文法,并说明理由?40.把下列语句翻译为四元式序列(四元式序号从1开始):

while (A > B)

if (C > D)

X = Y * Z

else

X = Y + Z

41.构造下面文法的LL(1)分析表。

G[D]: D → TL

T → int | real

L → id R

R → , id R | ε

42.给定文法S→aS|bS|a,下面是拓广文法和识别该文法所产生的活前缀的DFA。判断该文法是否是SLR(1)文法:如果是构造其SLR(1)分析表,如果不是请说明理由。

(1)将文法G(S)拓广为G(S’):

(0)S’→S

(1)S→aS

(2)S→bS

(3)S→a

(2)识别该文法所产生的活前缀的DFA 如图1所示。

图1

43.给出表达式-a*b+b*c+d/e的语法树和三元式序列。

44.证明下面文法S→AaAb|BbBa A→ε

B→ε,是LL(1)文法,但不是SLR(1)文法。

45.现有文法G[S]

S→a|ε|(T)

T→T,S|S

请给出句子(a,(a,a))的最左、最右推导,并指出最右推导中每一个句型的句柄。46.将下图的DFA最小化。

47.设有如下文法:P→D

D→D;D|id:T|proc id;D;

T→real|integer

给出一个语法制导定义,打印该程序一共声明了多少个id。

48.识别文法G的活前缀的DFA如下图所示,补充完成状态I2和I5,然后根据该图构造SLR(1)分析表。

G:(0) P'→P (1) P→aPb

(2) P→Q (3) Q→bQc

(4) Q→bSc (5) S→Sa

(6) S→a

49.给出表达式(a+b)*(c+d/e)的语法树和四元式序列。

50.构造文法S→AaAb|BbBa A→ε B →ε,的预测分析表。

51.写出C语言标识符集(字母或下划线开头的由字母、数字、下划线构成的串)的正规式。

53.假设第一个四元式的序号是100,写出布尔表达式ae的四元式序列。54.设有如下文法:

G[E]:E→EWT|T

T→T/F|F

F→(E)|a|b|c

W→+|-

证明符号串a/(b-c)是句子。

55.对于下列文法

G[S]: S→Sb|bA

A→aA|a

(1)构造一个与G等价的LL(1)文法G′。

(2)对于文法G′,构造相应的LL(1)

分析表。

56.构造下述文法的SLR(1)分析表。

G[S]:S→(A)

A→ABB|B

B→b

58.写出赋值语句X= -(a+b)/(c-d)-(a+b*c)

的逆波兰表示。

59.为文法

G[S]:S→(L)|a

L→L,S|S

写一语法制导定义,它输出句子中括号

嵌套的最大层次数。

60.2.已知文法G[S]如下:构造该文法的

LR(0)分析表。

G[S]:S→BB

B→aB|b

g卷答案

1解:

a

22解:最左推导:N ? ND ? NDD ? DDD ? 5DD ? 56D ? 568

最右推导:N ? ND ? N8 ?ND8? N68 ? D68 ? 568

3解: G[S]:S→aA|bB

A→aS|bC|b

B→bS|aC|a

C→bA|aB|ε

5解: abcd- -*efgh- - i*$$

6解:对于该文法求其FIRST集如下:

FIRST(S) = {a, b, c}; FIRST(A) = {a, b, c, d}; FIRST(B) = {a, b, c}。

求其FOLLOW集如下:

FOLLOW(S) = {a, b, c, d, #}; FOLLOW(A) = {a, b, c, d, #}; FOLLOW(B) = {a, b, c, d, #}。

由A → BS | d 得:

FIRST(BS) ∩FIRST(‘d’) = {a, b, c} ∩ {d} = Φ由B → aA| bS | c 得

FIRST(aA) ∩FIRST(bS) ∩FIRST(c) = {a} ∩{b}∩ {c} =Φ

由于文法G[S]不存在形如β→ε的产生式,故无需求解形如FIRST(α) ∩FOLLOW(A)的值,也即文法G[S]是一个LL(1)文法。

7解:短语:P、P+T、i、E+i、(E+i )、P+T+(E+i );

直接短语:P、i;

句柄:P;

8解:

G[A′]:A→aA′

A′→ABl | ε

B→dB′

B′→bB′| ε

9解:1 (j>,x,y,3)

2 (j,_,_,5)

3 (=,1,_,m)

4 (j,_,_,6)

5 (=,0,_,m)

6:

10解:

11解:对照自动机的定义M=(S,Σ,f,So,Z),由f 的定义可知f(x,a)、f(y,b)均为多值函数,因此M 是一非确定有限自动机。

M

(注意:本题由于集合的命名和先后顺序不同,可能最终结果不同。) 12解:拓广文法 (0)S →A

(1)A →aABl (2)A →a (3)B →Bb (4)B →d

5 (+,x,y,T 1)

6 (=, T 1,_,m) 7:

14解:消除左递归:

G(S): S → (L) | a L → SL ’

L ’ → , SL ’| ε

构造FIRST 集,如下: (1)FIRST(S) = {(, a} (2)FIRST(L) = {(, a}

(3)FIRST(L ’) = {,, ε

构造FOLLOW 集如下:

(1)(2)FOLLOW(L) = {)}

(3)FOLLOW(L ’) = {)}

17证明: 该文法产生的语言是a 的个数和b 的个数相等的串的集合。该文法二义,例如句子abab 有两种不同的最左推导。 S ?aSbS ?abS ?abaSbS ?ababS ?

S ?aSbS ?abSaSbS ?abaSbS ?ababS ?

abab

18解:100 (j<,a,b,102)

101 (j,_,_,107)

19解:

用子集法构造状态转换矩阵,如下表所示。

分为终态集{Y}和非终态集

}a={1,2,1,_,Y,_} {X,1,2},{3,5},{4}

所以分为 {X,2},{1},{3,5},{4},{Y}重

新命名为1,2,3,4,5得到最小化的DFA M ′状态转换矩阵和状态转换图如下图所示。

(注意:本题由于集合的命名和先后顺序不

同,可能最终结果不同。)

21解:编译程序的总体框图如下所示:

(单词种别,单词自身的值)流。

(2)语法分析器,对单词符号串进行语法分析(根据语法规则进行推导或归约),识别出程序中的各类语法单位,最终判断输入串是否构成语法上正确的句子。

(3)语义分析及中间代码生成器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。编译程序可以根据不同的需要选择不同的中间代码形式,有的编译程序甚至没有中间代码形式,而直接生成目标代码。

(4)优化器对中间代码进行优化处理。一般最初生成的中间代码执行效率都比较低,因此要做中间代码的优化,其过程实际上是对中间代码进行等价替换,使程序在执行时能更快,并占用更小的空间。

(5)目标代码生成器,把中间代码翻译成目标程序。中间代码一般是一种与机器无关的表示形式,只有把它再翻译成与机器硬件直接相关的机器能识别的语言,即目标程序,才能在机器上运行。

(6)表格管理模块保持一系列的表格,登记源程序的各类信息和编译各阶段的进展状况。编译程序各个阶段所产生的中间结果都记录在表格中,所需要的信息也大多从表格中获取,整个编译过程都在不断和表格打交道。

(7)出错处理程序对出现在源程序中的错误进行处理。如果源程序有错误,编译程序应设法发现错误,把有关错误信息报告给用户。编译程序的各个阶段都有可能发现错误,出错处理程序要对发现的错误进行处理、记录,并反映给用户。

22解:

(1) 句型(S, (a))的语法树如下图所示:

(2) 从语法树中可以找到(3分)短语:a; (a); S; S,(a); (S, (a))

直接短语: a; S

句柄: S

23解:

S→ε| aA|bB

A→ b| bS| aAA

B→ a| aS| bBB

24解:(1)逆波兰式: abc-*@d+ 其中使用@代表一目减运算

(2)四元式:

① (-, b, c, T1)

② (*, a, T1, T2)

③ (@, T2, _, T3)

④ (+, T3, d, T4)

25 解:

(1) (j>, A, B, 3)

(2) (j, _, _, 11)

(3) (j>, C, D, 5)

(4) (j, _, _, 8)

(5) (*, Y, Z, T1)

(6) (=, T1, _, X)

(7) (j, _, _, 1)

(8) (+, Y, Z, T2)

(9) (=, T2, _, X)

(10) (j, _, _, 1)

(11)

26解:(1)0*(0|10)*0* 或者 (0|10)* (2)

①NFA (2分)

编译原理复习题2017(含试卷)

* 编译原理复习题 一.简答题: 1) 什么是句子? 什么是语言? 解答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T * ),则称x 是文法的一个句子。 语言——语言是句子的集合。 或——设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)={x │ S x,x ∈V T * } 。 2) DFA 与NFA 有何区别 ? 解答:DFA 与NFA 的区别表现为两个方面:一是NFA 可以有若干个开始状态,而DFA 仅只有一个 开始状态。另一方面,DFA 的映象M 是从K ×∑到K ,而NFA 的映象M 是从K ×∑到K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。 3) 自顶向下的语法分析方法的基本思想是什么? 解答:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接 推导,试图推导出文法的句子,使之与给定的输入串匹配。 4) 自底向上的语法分析方法的基本思想是什么? 解答:从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图 归约到文法的开始符号。 5) 一个上下文无关文法G 包括哪四个组成部分? 解答:一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。 6) 在自底向上的语法分析方法中,分析的关键是什么?

解答:关键是寻找句柄。 7)在自顶向下的语法分析方法中,分析的关键是什么? 解答:关键是选择候选式。 8)什么是属性文法? 答:是在上下文无关文法的基础上,为每个文法符号(含终结符和非终结符)配备若干个属 性值,对文法的每个产生式都配备了一组属性计算规则(称为语义规则)。在语法分析过 程中,完成语义规则所描述的动作,从而实现语义处理。 一个属性文法形式的定义为一个三元组AG,AG=(G,V,E)。 其中G为一个上下文无关文法;V为属性的有穷集;E为一组语义规则。 9)语法制导翻译 语法制导翻译:定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。 语法制导翻译(Syntax-Directed Translations): –一个句子的语义翻译过程与语法分析过程同时进行。 在文法中,文法符号有明确的意义,文法符号之间有确定的语义关系。属性描述语义信息, 语义规则描述属性间的的关系,将语义规则与语法规则相结合,在语法分析的过程中计算语义 属性值。 10)词法分析的主要任务是什么? 解答:词法分析器的任务是对构成源程序的字符串从左到右逐个字符逐个字符地进行扫 描,依次把它们识别为一个一个具有独立意义的单词,并确定其属性,再转换为长度统一的属 11)图示运行时存储空间的划分(分为哪几个区)。 解答: 一般分为静态区和动态区: 程序代码区、静态数据区、栈区和堆区 12)常用的中间语言种类有哪几种? 解答: 常用的中间语言种类有逆波兰表示、三元式、四元式和树形表示。 13)文法G所描述的语言是什么的集合? 解答:是由文法的开始符号推出的所有终结符串的集合。或说是句子的集合。 14)乔姆斯基把文法分为四种类型,即0型、1型、2型、3型。其中2型文法叫什么? 解答: 2型文法叫上下文无关文法。 15)常见的动态存贮分配策略有哪两种? 解答:常见的两种动态存贮分配策略是栈式动态分配策略和堆式动态分配策略。 16)语法分析的任务是什么?

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

一、填空题|(每题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)

最新编译原理试题汇总+编译原理期末试题(8套含答案+大题集)

编译原理考试题及答案汇总一、选择 1.将编译程序分成若干个“遍”是为了_B__。 A . 提高程序的执行效率 B.使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指__C__。 A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。 C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等 3.中间代码生成时所依据的是 _C_。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 4.后缀式 ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d 6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析 7.词法分析器用于识别__C___。 A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符 8.语法分析器则可以发现源程序中的___D__。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正 D.( ) 语法错误 9.下面关于解释程序的描述正确的是__B___。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3) 10.解释程序处理语言时 , 大多数采用的是__B___方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 11.编译过程中 , 语法分析器的任务就是__B___。 (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构 A.( ) (2)(3) B.( ) (2)(3)(4)C.( ) (1)(2)(3) D.( ) (1)(2)(3)(4) 12.编译程序是一种___C__。 A. ( ) 汇编程序 B.( ) 翻译程序 C.( ) 解释程序 D.( ) 目标程序 13.文法 G 所描述的语言是_C____的集合。 A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串 14.文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 3 型文法是___B__。 A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法15.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 __D___。 A.( ) 句子 B.( ) 句型 C.( ) 单词 D.( ) 产生式

编译原理试题集33493

第一章引论 一.单项选择题 1. 如果一个编译程序能产生不同于其宿主机的机器代码,则称它为:___________________ 。 a. 诊断编译程序 b. 优化编译程序 c. 交叉编译程序 d. 可变目标编译程序 2. 编译程序将高级语言程序翻译成_________ 。 a. 机器语言程序或高级语言程序 b. 汇编语言或机器语言程序 c. 汇编语言程序或高级 语言程序d. 中间语言程序或高级语言程序 3. 下面的四个选项中,__________不是编译程序的组成部分。 a. 词法分析程序 b. 代码生成程序 c. 设备管理程序 d. 语法分析程序 4. 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个_______把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常 数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。 a. 重定位程序; b. 解释程序; c. 连接装配程序; d. 诊断程序; 5. 从编译程序的角度说,源程序中的错误通常分为________两大类。 a. 词法错误和语法错误; b. 语法错误和语义错误; c. 编辑错误和诊断错误; d. 词法错误和语义错误; 6. 下面对编译原理的有关概念正确描述的是:____。 a. 目标语言只能是机器语言 b. 编译程序处理的对象是源语言。 c. Lex是语法分析自动生成器 d. 解释程序属于编译程序 7. 目标代码生成阶段所生成的目标代码的形式不可能是____。 a. 绝对指令代码 b. 可充定位的指令代码。 c. 汇编指令代码 d. 三地址代码 8. 语义错误是指源程序中不符合语义规则的错误,不包括:____ a. 非法字符错误 b. 类型不一致错误。 c. 作用域错误 d. 说明错误

编译原理期末复习

编译原理期末复习 鉴于编译原理马上就要期末考试,我将手中集中的一些资料上的题目进行了整理归类,每种类型题目给出了所涉及到的基本知识,然后对每类题目中的第一道例题进行了做法进行了讲解,剩下的例题请给大家作为练习,答案也都给出,希望对大家复习有所帮助,最后由于时间很紧,整理的有些仓促,整理中难免有遗漏或错误,请大家见谅。 注:下面出现的字母中,若无特别说明,小写英文字母为终结符,大写英文字母为非终结符,希腊字母为终结符与非终结符的任意组合。 1、简答题(或者名词解释) 下面涉及到的概念中,加下划线的都是在以往一些试卷中出现的原题,务必掌握。 注:这类题目老师说答案不会超过一百个字,否则写的再多也不给分,有些点到即可,不要重复啰嗦。(1)简述编译程序的概念及其构成 答:1)编译程序:它特指把某种高级程序设计语言翻译成等价的低级程序设计语言的翻译程序。 2)构成: (2)简述词法分析阶段的主要任务(也有可能问语法分析阶段主要任务)答:词法分析的任务是输入源程序,对源程序进行扫描,识别其中的单词符号,把字符串形式的源程序转换成单词符号形式的源程序。 语法分析的主要任务是对输入的单词符号进行语法分析(根据语法规则进行推导或者归约),识别各类语法单位,判断输入是不是语法上正确的程序 (3) 简述编译程序的构造过程(这个大家看看,是对(1)和(2)的综合) 答:1)构造词法分析器:用于输入源程序进行词法分析,输出单词符号; 2)构造语法分析器:对输入的单词符号进行语法分析,识别各类语法单位,判断输入是不是语法上正确的程序 3)构造语义分析和中间代码产生器:按照语义规则对已归约出的语法单位进行语义分析并把它们翻译成中间代码。 4)构造优化器:对中间代码进行优化。 5) 构造目标代码生成器:把中间的代码翻译成目标程序。 6) 构造表格管理程序:登记源程序的各类信息和编译各阶段的进展情况。 7)构造错误处理程序:对出错进行处理。 (4) 说明编译和解释的区别: 1)编译要程序产生目标程序,解释程序是边解释边执行,不产生目标程序; 2)编译程序运行效率高而解释程序便于人机对话。 (5)文法:描述语言语法结构的形式规则,一般用一个四元式表示: G=(V T,V N,S,P),其中V T:终结符集合(非空) V N:非终结符集合(非空),且V T ?V N=? S:文法的开始符号,S?V N P:产生式集合(有限)。

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

一、填空题(每空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

《编译原理》模拟期末试题汇总 6套,含答案

《编译原理》模拟试题一 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) 1.计算机高级语言翻译成低级语言只有解释一种方式。(×) 2.在编译中进行语法检查的目的是为了发现程序中所有错误。(×) 3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 (√ ) 4.正则文法其产生式为 A->a , A->Bb, A,B∈VN , a 、b∈VT 。 (×) 5.每个文法都能改写为 LL(1) 文法。 (√) 6.递归下降法允许任一非终极符是直接左递归的。 (√) 7.算符优先关系表不一定存在对应的优先函数。 (×) 8.自底而上语法分析方法的主要问题是候选式的选择。 (×) 9.LR 法是自顶向下语法分析方法。 (×) 10.简单优先文法允许任意两个产生式具有相同右部。 (×) 二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析B.( )文法分析C.( )语言分析D.( )解释分析 2.词法分析器用于识别_____。 A.( ) 字符串B.( )语句 C.( )单词 D.( )标识符 3.语法分析器则可以发现源程序中的_____。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正D.( ) 语法错误 4.下面关于解释程序的描述正确的是_____。

(1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1)C.( ) (1)(2)(3) D.( ) (2)(3) 5.解释程序处理语言时 , 大多数采用的是_____方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 6.编译过程中 , 语法分析器的任务就是_____。 (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构 A.( ) (2)(3) B.( ) (2)(3)(4) C.( ) (1)(2)(3) D.( ) (1)(2)(3)(4) 7.编译程序是一种_____。 A. ( ) 汇编程序B.( ) 翻译程序 C.( ) 解释程序 D.( ) 目标程序 8.文法 G 所描述的语言是_____的集合。 A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串 9.文法分为四种类型,即0型、1型、2型、3型。其中3型文法是_____。 A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法 10.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 _____。 A.( ) 句子B.( ) 句型 C.( ) 单词 D.( ) 产生式 三、填空题(每空1分,共10分)

编译原理题库——简答题

编译原理A 1.简要说明语义分析的基本功能。 2. 考虑文法 G[S]: S → (T) | a+S | a T → T,S | S 消除文法的左递归及提取公共左因子。 3试为表达式 w+(a+b)*(c+d/(e-10)+8) 写 出相应的逆波兰表示。 4. 按照三种基本控制结构文法将下面的语 句翻译成四元式序列: while (A

编译原理试题(卷)汇总-编译原理期末试题(卷)(8套含答案解析-大题集)

编译原理考试题及答案汇总 一、选择 1.将编译程序分成若干个“遍”是为了_B__。 A . 提高程序的执行效率 B.使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指__C__。 A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。 C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等 3.中间代码生成时所依据的是 _C_。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 4.后缀式 ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d 6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析 7.词法分析器用于识别__C___。 A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符 8.语法分析器则可以发现源程序中的___D__。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正 D.( ) 语法错误 9.下面关于解释程序的描述正确的是__B___。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3) 10.解释程序处理语言时 , 大多数采用的是__B___方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 11.编译过程中 , 语法分析器的任务就是__B___。 (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构 A.( ) (2)(3) B.( ) (2)(3)(4)C.( ) (1)(2)(3) D.( ) (1)(2)(3)(4) 12.编译程序是一种___C__。 A. ( ) 汇编程序 B.( ) 翻译程序 C.( ) 解释程序 D.( ) 目标程序 13.文法 G 所描述的语言是_C____的集合。 A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串 14.文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 3 型文法是___B__。 A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法15.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 __D___。 A.( ) 句子 B.( ) 句型 C.( ) 单词 D.( ) 产生式 16.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_C____。

编译原理简答

1、给出算符优先文法的定义,算符优先表是否都存在对应的优先函数给出优先函数的定义。 设有一不含ε产生式的算符文法G,如果对任意两个终结符对a,b之间至多只有、和h三种关系的一种成立,则称G一个算符优先文法。 算符优先关系表不一定存在对应的优先函数 优先函数为文法字汇表中 2、考虑文法G[T]: T→T*F|F F→F↑P|P P→(T)|i 证明T*P↑(T*F)是该文法的一个句型,并指出直接短语和句柄。 首先构造T*P↑(T*F)的语法树如图所示。 句型T*P↑(T*F)的语法树 由图可知,T*P↑(T*F)是文法G[T]的一个句型。 直接短语有两个,即P和T*F;句柄为P。

3、文法G[S]为: S→SdT | T T→T

4、目标代码有哪几种形式生成目标代码时通常应考虑哪几个问题 三种形式:可立刻执行的机器语言代码;汇编语言程序;待装配的机器语言代码模块 考虑的问题包括: 每一个语法成分的语义; 目标代码中需要哪些信息,怎样截取这些信息。 5、符号表的作用是什么符号表的查找的整理技术有哪几种 作用:登记源程序中出现的各种名字及其信息,以及编译各阶段的进展状况。主要技术:线性表,对折查找与二叉树,杂凑技术。 1、实现高级语言程序的途径有哪几种它们之间的区别 计算机执行用于高级语言编写的程序主要有两种途径:解释和编译。 在解释方式下,翻译程序并不对高级语言进行彻底的翻译,而是读入一条语句,就解释其含义并执行,然后再读入下一条语句,再执行。 在编译方式下,翻译程序先对高级语言进行彻底的翻译并生成目标代码,然后再对目标代码进行优化,即对源程序的处理是先翻译后执行。 从速度上看,编译方式下,源程序的执行比解释方式下快,但在解释方式下,有

期末考试编译原理试卷及答案

一. 填空题(每空2分,共20分) 1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静 态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。 3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。 6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址 计算公式为(9)。 7.局部优化是局限于一个(10)范围内的一种优化。 二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分) 1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组 ( )。 A . 字符串 B . 产生式 C . 开始符号 D . 文法 2.程序的基本块是指( )。 A . 一个子程序 B . 一个仅有一个入口和一个出口的语句 C . 一个没有嵌套的程序段 D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。 A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。 A . 四元式序列 B . 间接三元式序列 C . 二元式序列 D . 机器语言程序或汇编语言程序 6. 一个文法所描述的语言是( );描述一个语言的文法是( )。 A . 唯一的 B . 不唯一的 C . 可能唯一,也可能不唯一 7. 如果在文法G 中存在一个句子,当其满足下列条件( )之一时,则称该文法是二义文法。 A . 其最左推导和最右推导相同 B . 该句子有两个不同的最左推导 C . 该句子有两个不同的最右推导 D . 该句子有两棵不同的语法树

编译原理习题及答案(整理后)

第一章 1、将编译程序分成若干个“遍”是为了。 b.使程序的结构更加清晰 2、构造编译程序应掌握。 a.源程序b.目标语言 c.编译方法 3、变量应当。 c.既持有左值又持有右值 4、编译程序绝大多数时间花在上。 d.管理表格 5、不可能是目标代码。 d.中间代码 6、使用可以定义一个程序的意义。 a.语义规则 7、词法分析器的输入是。 b.源程序 8、中间代码生成时所遵循的是- 。 c.语义规则 9、编译程序是对。 d.高级语言的翻译 10、语法分析应遵循。 c.构词规则 二、多项选择题 1、编译程序各阶段的工作都涉及到。 b.表格管理c.出错处理 2、编译程序工作时,通常有阶段。 a.词法分析b.语法分析c.中间代码生成e.目标代码生成 三、填空题 1、解释程序和编译程序的区别在于是否生成目标程序。 2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。 4、编译程序是指将源程序程序翻译成目标语言程序的程序。

一、单项选择题 1、文法G:S→xSx|y所识别的语言是。 a. xyx b. (xyx)* c. x n yx n(n≥0) d. x*yx* 2、文法G描述的语言L(G)是指。 a. L(G)={α|S+?α , α∈V T*} b. L(G)={α|S*?α, α∈V T*} c. L(G)={α|S*?α,α∈(V T∪V N*)} d. L(G)={α|S+?α, α∈(V T∪V N*)} 3、有限状态自动机能识别。 a. 上下文无关文法 b. 上下文有关文法 c.正规文法 d. 短语文法 4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立。 a. 若f(a)>g(b),则a>b b.若f(a)

《编译原理》期末考试复习题

《编译原理》期末考试复习题 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) ×1.计算机高级语言翻译成低级语言只有解释一种方式。() ×2.在编译中进行语法检查的目的是为了发现程序中所有错误。() √3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 () ×4.正则文法其产生式为 A->a , A->Bb, A,B∈VN , a 、b∈VT 。 () √5.每个文法都能改写为 LL(1) 文法。 () √6.递归下降法允许任一非终极符是直接左递归的。 () ×7.算符优先关系表不一定存在对应的优先函数。 () ×8.自底而上语法分析方法的主要问题是候选式的选择。 () ×9.LR 法是自顶向下语法分析方法。 () ×10.简单优先文法允许任意两个产生式具有相同右部。 () 三、填空题(每空1分,共10分) 1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__ ___和 ___ _。 表格管理出错处理_ 2.若源程序是用高级语言编写的,__ __是机器语言程序或汇编程序,则其翻译程序称为 __ __ 。 _目标程序_编译程序 3.编译方式与解释方式的根本区别在于__ __。 是否生成目标代码_ 4.对编译程序而言,输入数据是__ __, 输出结果是__ ___。 _源程序目标程序

5.产生式是用于定义__ __的一种书写规则。 _语法成分 6.语法分析最常用的两类方法是___ __和__ __分析法。 自上而下_自下而上 四、简答题(20分) 1. 什么是句子?什么是语言 ? 答:(1)设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。 (2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈VT*} 。 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) ×1.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。() ×2.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。() √3.递归下降分析法是自顶向上分析方法。() ×4.产生式是用于定义词法成分的一种书写规则。() √5.LR 法是自顶向下语法分析方法。() √6.在SLR (1 )分析法的名称中,S的含义是简单的。() ×7.综合属性是用于“ 自上而下” 传递信息。() ×8.符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。() ×9.程序语言的语言处理程序是一种应用软件。() ×10.解释程序适用于COBOL 和FORTRAN 语言。() 三、填空题(每空1分,共10分) 1.一个句型中的最左简单短语称为该句型的___句柄__。

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

《编译原理》考试试题及答案(汇总) 一、是非题(请在括号,正确的划√,错误的划×)(每个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.( ) 代码外提

编译原理考试试卷

南京工业大学继续教育学院编译原理期末考试试卷 (2012-2013学年) A卷 一、选择题(每题2分,共20分) 得分 1. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个_____,以及一组产生式。 A.字符串 B.运算符号 C.开始符号 D.文法 2.程序的基本块是指_____。 A.一个子程序 B.一个仅有一个入口和一个出口的语句 C.一个没有嵌套的程序段 D.一组顺序执行的程序段,仅有一个入口和一 个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于_____分析方法。 A.自左向右 B.自顶向下 C.自底向上 D.自右向左 4.经过编译所得到的目标程序是_____。 A.四元式序列 B.间接三元式序列 C.二元式序列 D.机器语言程序或汇编语言程序 5.运行阶段的存储组织与管理的目的是_____。 ①提高编译程序的运行速度②节省编译程序的存储空间 ③提高目标程序的运行速度④为运行阶段的存储分配做准备 A. ①② B. ②③ C. ③④ D. ④②6.词法分析器的输出结果是_____。 A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值 7.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等 C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等 8.文法G:S→xSx|y所识别的语言是_____。 A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx* 9.语言是_____。 A.句子的集合B.产生式的集合 C.符号串的集合D.句型的集合 10.编译程序前三个阶段完成的工作是 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析 C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码优化 二、名词解释(每题2分,共20分) 得分 1.最左推导: 2.语法: 3.文法: 4.基本块: 5.语法制导翻译: 6.短语: 7.规范句型:

编译原理(选择、填空、简答)题

一、是非题(下列各题,你认为正确的,请在题干的括号内打“√”,错的打“×”。每题1分,共5分) 1、算符优先关系表不一定存在对应的优先函数。√ 2、数组元素的地址计算与数组的存储方式有关。√ 3、仅考虑一个基本块,不能确定一个赋值是否真是无用的。√ 4、每个文法都能改写为LL(1)文法。× 5、对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。× 6、一个LL(1)文法一定是无二义的。 7、逆波兰法表示的表达式亦称前缀式。 8、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 9、正规文法产生的语言都可以用上下文无关文法来描述。 10、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。 二、选择题: 1.编译原理是对( c )。 A、机器语言的执行 B、汇编语言的翻译 C、高级语言的翻译 D、高级语言程序的解释执行 2.词法分析器的输出结果是( d )。 A、单词自身值 B、单词在符号表中的位置 C、单词的种别编码 D、单词的种别编码和自身值 3. 若文法G定义的语言是无限集,则文法必然是( c ) A.前后文无关文法 B.正规文法 C.二义性文法 D.递归文法 4.文法:G:S→xSx | y所识别的语言是( d )。 A、x n yx m B、(xyx)* C、x*yx* D、xnyxn(n≥0) 1 .文法 G 产生的⑴ 的全体是该文法描述的语言。 d A .句型 B. 终结符集 C. 非终结符集 D. 句子 2 .若文法 G 定义的语言是无限集,则文法必然是⑵ : a A .递归的 B 前后文无关的 C 二义性的 D 无二义性的 3 . Chomsky 定义的四种形式语言文法中, 0 型文法又称为⑶ 文法; 1 型文法又称为⑷ 文法; 2 型语言可由⑸ 识别。 A .短语结构文法 B 前后文无关文法 C 前后文有关文法 D 正规文法 E 图灵机 F 有限自动机 G 下推自动机 4 .一个文法所描述的语言是⑹ ;描述一个语言的文法是⑺ 。 A .唯一的 B 不唯一的 C 可能唯一,好可能不唯一 5 .数组的内情向量中肯定不含有数组的⑻ 的信息 A.维数 B.类型 C.维上下界 D.各维的界差 6 .在下述的编译方法中,自底向上的方法有⑼ ,自顶向下的分析方法有⑽ 。 ①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析 ⑥ SLR(k)分析⑦ LL(k)分析⑧LALR(K)分析 A.③④⑦ B. ③④⑧ C.①②⑧ D.③④⑤⑥⑦ E.①②⑤⑥⑦ F. ①②⑤⑥⑧ ⑴ D ⑵ A ⑶ A ⑷ C ⑸ G. ⑹ A ⑺ B ⑻ A ⑼ F ⑽ A

相关文档
最新文档