完整版编译原理复习题及答案.docx

上传人:b****8 文档编号:9993235 上传时间:2023-02-07 格式:DOCX 页数:34 大小:63.43KB
下载 相关 举报
完整版编译原理复习题及答案.docx_第1页
第1页 / 共34页
完整版编译原理复习题及答案.docx_第2页
第2页 / 共34页
完整版编译原理复习题及答案.docx_第3页
第3页 / 共34页
完整版编译原理复习题及答案.docx_第4页
第4页 / 共34页
完整版编译原理复习题及答案.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

完整版编译原理复习题及答案.docx

《完整版编译原理复习题及答案.docx》由会员分享,可在线阅读,更多相关《完整版编译原理复习题及答案.docx(34页珍藏版)》请在冰豆网上搜索。

完整版编译原理复习题及答案.docx

完整版编译原理复习题及答案

编译原理复习题及答案

一、选择题

1.一个正规语言只能对应( B )

A一个正规文法B一个最小有限状态自动机

2.文法G[A]:

A→εA→aBB→AbB→a是( A )

A正规文法B二型文法

3.下面说法正确的是( A )

A一个SLR

(1)文法一定也是LALR

(1)文法

B一个LR

(1)文法一定也是LALR

(1)文法

4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL

(1)文法的( A )

A必要条件B充分必要条件

5.下面说法正确的是( B )

A一个正规式只能对应一个确定的有限状态自动机

B一个正规语言可能对应多个正规文法

6.算符优先分析与规范归约相比的优点是( A )

A归约速度快B对文法限制少

7.一个LR

(1)文法合并同心集后若不是LALR

(1)文法( B )

A则可能存在移进/归约冲突

B则可能存在归约/归约冲突

C则可能存在移进/归约冲突和归约/归约冲突

8.下面说法正确的是( A )

ALex是一个词法分析器的生成器BYacc是一个语法分析器

9.下面说法正确的是( A )

A一个正规文法也一定是二型文法

B一个二型文法也一定能有一个等价的正规文法

10.编译原理是对(C)。

A、机器语言的执行B、汇编语言的翻译

C、高级语言的翻译D、高级语言程序的解释执行

11.(A)是一种典型的解释型语言。

A.BASICB.CC.FORTRAND.PASCAL

12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。

A.编译器B.汇编器C.解释器D.预处理器

13.用高级语言编写的程序经编译后产生的程序叫(B)

A.源程序 B.目标程序C.连接程序D.解释程序

14.(C)不是编译程序的组成部分。

A.词法分析程序B.代码生成程序 C.设备管理程序D.语法分析程序

15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A.模拟执行器B.解释器 C.表格处理和出错处理   D.符号执行器

16.编译程序绝大多数时间花在(D)上。

A.出错处理B.词法分析C.目标代码生成D.表格管理

17.源程序是句子的集合,(B)可以较好地反映句子的结构。

A.线性表B.树C.完全图D.堆栈

18.词法分析器的输出结果是(D)。

A、单词自身值B、单词在符号表中的位置

C、单词的种别编码D、单词的种别编码和自身值

19.词法分析器不能(D)

A.识别出数值常量B.过滤源程序中的注释

C.扫描源程序并识别记号D.发现括号不匹配

20.文法:

G:

S→xSx|y所识别的语言是(D)。

A、xyxB、(xyx)*C、x*yx*D、xnyxn(n≥0)

21.如果文法G是无二义的,则它的任何句子α(A)

A.最左推导和最右推导对应的语法树必定相同

B.最左推导和最右推导对应的语法树可能不同

C.最左推导和最右推导必定相同

D.可能存在两个不同的最左推导,但它们对应的语法树相同

22.正则文法(A)二义性的。

A.可以是B.一定不是C.一定是

23.(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。

A.存在B.不存在C.无法判定是否存在

24.给定文法A→bA|ca,为该文法句子的是(C)

A.bbaB.cabC.bcaD.cba

25.设有文法G[S]:

SS1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有(D)

A.ab0B.a0c01C.a0b0aD.bc10

26.文法G产生的(D)的全体是该文法描述的语言。

A.句型B.终结符集C.非终结符集D.句子

27.若文法G定义的语言是无限集,则文法必然是(A)

A.递归的B.上下文无关的C.二义性的D.无二义性的

28.描述一个语言的文法是(B)

A.唯一的B.不唯一的C.可能唯一

29.一个文法所描述的语言是(A)

A.唯一的B.不唯一的C.可能唯一

30.采用自上而下分析,必须(A)。

A、消除回溯B、消除左递归

C、消除右递归D、提取公共左因子

31.编译过程中,语法分析器的任务是(A)

1分析单词的构成

2分析单词串如何构成语句

3分析语句是如何构成程序

4分析程序的结构

A.②③B.④C.①②③④D.②③④

32.词法分析器的输入是(A)。

A.符号串B.源程序C.语法单位D.目标程序

33.两个有穷自动机等价是指它们的(C)。

A.状态数相等B.有向弧数相等

C.所识别的语言相等D.状态数和有向弧数相等

34.若状态k含有项目“A→α·”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A→α”归约的语法分析方法是(D)。

A.LALR分析法B.LR(0)分析法C.LR

(1)分析法D.SLR

(1)分析法

35.若a为终结符,则A→α·aβ为(B)项目。

A.归约B.移进C.接受D.待约

36.在使用高级语言编程时,首先可通过编译程序发现源程序的全部和部分(A)错误。

A.语法B.语义C.语用D.运行

37.乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型。

其中3型文法是(B)

A.非限制文法B.正则文法C.上下文有关文法D.上下文无关文法

38.一个句型中的(A)称为该句型的句柄。

A.最左直接短语B.最右直接短语C.终结符D.非终结符

39.在自底向上的语法分析方法中,分析的关键是(D)

A.寻找句柄B.寻找句型C.消除递归D.选择候选式

40.在自顶向下的语法分析方法中,分析的关键是(C)

A.寻找句柄B.寻找句型C.消除递归D.选择候选式

41.在LR分析法中,分析栈中存放的状态是识别规范句型(C)的DFA状态。

A.句柄B.前缀C.活前缀D.LR(0)项目

42.一个上下文无关文法G包括四个组成部分,它们是一组非终结符号,一组终结符号,一个开始符号,以及一组(B)

A.句子B.产生式C.单词D.句型

43.词法分析器用于识别(C)

A.句子B.产生式C.单词D.句型

44.编译程序是一种(B)

A.汇编程序B.翻译程序C.解释程序D.目标程序

45.按逻辑上划分,编译程序第三步工作是(A)

A.语义分析B.词法分析C.语法分析D.代码生成

46.在语法分析处理中,FIRST集合、FOLLOW集合均是(B)

A.非终结符集B.终结符集C.字母表D.状态集

47.编译程序中语法分析器接收以(A)为单位的输入。

A.单词B.表达式C.产生式D.句子

48.编译过程中,语法分析器的任务就是(B)

A.分析单词是怎样构成的B.分析单词串是如何构成语句和说明的

C.分析语句和说明是如何构成程序的D.分析程序的结构

49.若一个文法是递归的,则它所产生的语言的句子(A)。

A.是无穷多个B.是有穷多个C.是可枚举的D.个数是常量

50.识别上下文无关语言的自动机是(C)

A.下推自动机B.NFAC.DFAD.图灵机

51.编译原理各阶段工作都涉及(B)

A.词法分析B.表格管理C.语法分析D.语义分析

52.正则表达式R1和R2等价是指(C)

A.R1和R2都是定义在一个字母表上的正则表达式

B.R1和R2中使用的运算符相同

C.R1和R2代表同一正则集

D.R1和R2代表不同正则集

53.已知文法G[S]:

S→A1,A→A1|S0|0。

与G等价的正规式是(C)

A.0(0|1)*B.1*|0*1C.0(1|10)*1D.1(10|01)*0

54.与(a|b)*(a|b)等价的正规式是(C)。

A.a*|b*B.(ab)*(a|b)C.(a|b)(a|b)*D.(a|b)*

55.(D)文法不是LL

(1)的。

A.递归B.右递归C.2型D.含有公共左因子的

56.给定文法A→bA|cc,则符号串①cc②bcbc③bcbcc④bccbcc⑤bbbcc中,是该文法句子的是(D)

A.①B.③④⑤C.②④D.①⑤

57.LR

(1)文法都是()

A.无二义性且无左递归B.可能有二义性但无左递归

C.无二义性但可能是左递归D.可以既有二义性又有左递归

58.文法E→E+E|E*E|i的句子i*i+i*i有(C)棵不同的语法树。

A.1B.3C.5D.7

59.文法S→aaS|abc定义的语言是(C)。

A.{a2kbc|k>0}B.{akbc|k>0}C.{a2k-1bc|k>0}D.{akakbc|k>0}

60.若B为非终结符,则A→.B为(D)。

A.移进项目B.归约项目C.接受项目D.待约项目

61.同心集合并可能会产生新的(D)冲突。

A.二义B.移进/移进C.移进/归约D.归约/归约

62.就文法的描述能力来说,有(C)

A.SLR

(1)⊂LR(0)B.LR

(1)⊂LR(0)C.SLR

(1)⊂LR

(1)D.无二义文法⊂LR

(1)

63.如图所示自动机M,请问下列哪个字符串不是M所能识别的(D)。

A.bbaaB.abbaC.ababD.aabb

64.有限状态自动机能识别(C)

A.上下文无关语言B.上下文有关语言C.正规语言D.0型文法定义的语言

65.已知文法G是无二义的,则对G的任意句型α(A)

A.最左推导和最右推导对应的语法树必定相同

B.最左推导和最右推导对应的语法树可能相同

C.最左推导和最右推导必定相同

D.可能存在两个不同的最左推导,但他们对应的语法树相同

66.(B)不是DFA的成分

A.有穷字母表B.多个初始状态的集合C.多个终态的集合D.转换函数

67.与逆波兰式(后缀表达式)ab+c*d+对应的中缀表达式是(B)

A.a+b+c*dB.(a+b)*c+dC.(a+b)*(c+d)D.a+b*c+d

68.后缀式abc−+−d+可用表达式(B)来表示。

A.(−(a+b)−c)+dB.−(a+(b−c))+dC.−(a−(b+c))+dD.(a−(−b+c))+d

69.表达式A*(B-C*(C/D))的后缀式为(B)。

A.ABC-CD/**B.ABCCD/*-*C.ABC-*CD/*D.以上都不对

70.(D)不是NFA的成分。

A.有穷字母表B.初始状态集合C.终止状态集合D.有限状态集合

 

二、问答题

1.将文法G[S]改写为等价的G′[S],使G′[S]不含左递归和左公共因子。

  G[S]:

S→bSAe|bA

     A→Ab|d

答:

文法G[S]改写为等价的不含左递归和左公共因子的G'[S]为:

  S→bB

  B→SAe|A

  A→dA'

A'→bA'|ε

2.将文法G[S]改写为等价的G'[S],使G'[S]不含左递归和左公共因子。

  G[S]:

S→SAe|Ae

     A→dAbA|dA|d

答:

文法G[S]改写为等价的不含左递归和左公共因子的G'[S]为:

  S→AeS'

  S'→AeS'|ε

  A→dA'

  A'→AB|ε

  B→bA|ε

3.将文法G[S]改写为等价的G'[S],使G'[S]不含左递归和左公共因子。

  G[S]:

S→[A

     A→B]|AS

     B→aB|a

答:

文法G[S]改写为等价的不含左递归和左公共因子的G'[S]为:

  S→[A

  A→B]A′

  A′→SA′|ε

  B→aB′

B′→B|ε

4.判断下面文法是否为LL

(1)文法,若是,请构造相应的LL

(1)分析表。

  S→aH

  H→aMd|d

  M→Ab|ε

  A→aM|e

答:

首先计算文法的FIRST集和FOLLOW集如下表。

文法的FIRST集和FOLLOW集

非终结符

FIRST集

FOLLOW集

S

{a}.........

{#}...

H

{a,d}.....

{#}...

M

{a,e,ε}

{d,b}

A

{a,e}.....

{b}....

由于predict(H→aMd)∩predict(H→d)={a}∩{d}=

  predict(M→Ab)∩predict(M→ε)={a,e}∩{d,b}=

  predict(A→aM)∩predict(A→e)={a}∩{e}=

所以该文法是LL

(1)文法,LL

(1)分析表如下表。

 

a

d

b

e

#

S

→aH.

 

 

 

 

H

→aMd

→d.

 

 

 

M

→Ab.

→ε

→ε

→Ab

 

A

→aM.

 

 

→e.

 

5.判断下面文法是否为LL

(1)文法,若是,请构造相应的LL

(1)分析表。

  S→aD

  D→STe|ε

  T→bH|H

  H→d|ε

答:

首先计算文法的FIRST集和FOLLOW集如下表。

非终结符

FIRST集

FOLLOW集

S

{a}

{#,b,d,e}.

D

{a,ε}

{#,b,d,e}

T

{b,d,ε}

{e}

H

{d,ε}

{e}

由于predict(D→STe)∩predict(D→ε)={a}∩{#,b,d,e}=

  predict(T→bH)∩predict(T→H)={b}∩{e}=

  predict(H→d)∩predict(H→ε)={d}∩{e}=

所以该文法是LL

(1)文法,LL

(1)分析表如下表:

 

a

e

b

d

#

S

→aD.

 

 

 

 

D

→STe

→ε

→ε

→ε

→ε

T

 

→H.

→bH

→H.

 

H

 

→ε

 

→d.

 

6.判断下面文法是否为LL

(1)文法,若是,请构造相应的LL

(1)分析表。

  S→aD

  D→STe|ε

  T→bM

  M→bH

  H→M|ε

答:

文法的FIRST集和FOLLOW集

非终结符

FIRST集

FOLLOW集

S

{a}.....

{#,b}

D

{a,ε}

{#,b}

T

{b}.....

{e}....

M

{b}.....

{e}....

H

{b,ε}

{e}....

由于predict(D→STe)∩predict(D→ε)={a}∩{#,b}=

predict(H→M)∩predict(H→ε)={b}∩{e}=

所以该文法是LL

(1)文法,LL

(1)分析表如下表:

 

a

e

b

#

S

→aD.

 

 

 

D

→STe

 

→ε

→ε

T

 

 

→bM

 

M

 

 

→bH

 

H

 

→ε

→M.

 

7.某语言的拓广文法G′为:

  (0)S′→S

  

(1)S→Db|B

  

(2)D→d|ε

  (3)B→Ba|ε

证明G不是LR(0)文法而是SLR

(1)文法,请给出SLR

(1)分析表。

答:

拓广文法G',增加产生式S'→S

在项目集I0中:

有移进项目D→·d

归约项目D→·和B→·

存在移进-归约和归约-归约冲突,所以G不是LR(0)文法。

若产生式排序为:

(0)S'→S

(1)S→Db

(2)S→B

(3)D→d

(4)D→ε

(5)B→Ba

(6)B→ε

G′的LR(0)项目集族及识别活前缀的DFA如下图:

由产生式知

Follow(S)={#}

Follow(D)={b}

Follow(B)={a,#}

在I0中:

Follow(D)∩{d}={b}∩{d}=

Follow(B)∩{d}={a,#}∩{d}=

Follow(D)∩Follow(B)={b}∩{a,#}=

在I3中:

Follow(S)∩{a}={#}∩{a}=

所以在I0,I3中的移进-归约和归约-归约冲突可以由Follow集解决,所以G是SLR

(1)文法,

构造的SLR

(1)分析表如下表:

状态

ACTION

GOTO

b

d

a

#

S

D

B

0

r4

S4

r6

r6

1

2

3

1

 

 

 

acc

 

 

 

2

S5

 

 

 

 

 

 

3

 

 

S6

r2

 

 

 

4

r3

 

 

 

 

 

 

5

 

 

 

r1

 

 

 

6

 

 

r5

r5

 

 

 

8.给出与正规式R=(ab)*(a|b*)ba等价的NFA。

答:

与正规式R等价的NFA如下图

9.给出与正规式R=((ab)*|b)*(a|(ba)*)a等价的NFA。

答:

与正规式R等价的NFA如下图

10.给出与正规式R=(aba)*((ba)*|b)b等价的NFA。

答:

与正规式R等价的NFA如下图

11.将下图的NFA确定化为DFA。

答:

用子集法确定化如下表

I

Ia

Ib

状态

{X,1,2}

{1,2}..

{1,2,3}

{1,2,Y}

{1,2}..

{1,2}..

{1,2,Y}

{1,2}..

{1,2,3}

{1,2,3}

{1,2,3}

{1,2,3}

X

1

2

3

确定化后如下图:

12.将下图的NFA确定化为DFA。

答:

用子集法确定化如下表

I

Ia

Ib

状态

{X,0,1,3}

{0,1,3}..

{2,3,Y}..

{1,3}....

{2,Y}....

{Y}......

{0,1,3}

{0,1,3}

{1,3}..

.....

{1,3}..

.....

{2,3,Y}

{2,3,Y}

{Y}....

{2,Y}..

{Y}....

....

X

1

2

3

4

Y

确定化后如下图

13.某语言的拓广文法G′为:

(0)S′→T

(1)T→aBd|ε

(2)B→Tb|ε

证明G不是LR(0)文法而是SLR

(1)文法,请给出SLR

(1)分析表。

答:

拓广文法G',增加产生式S'→T

在项目集I0中:

有移进项目T→·aBd和归约项目T→·

存在移进-归约冲突,所以G不是LR(0)文法。

若产生式排序为:

(0)S'→T

(1)T→aBd

(2)T→ε

(3)B→Tb

(4)B→ε

G'的LR(0)项目集族及识别活前缀的DFA如下图所示:

识别G′活前缀的DFA

由产生式知:

Follow(T)={#,b}

Follow(B)={d}

在I0中:

Follow(T)∩{a}={#,b}∩{a}=

在I2中:

Follow(B)∩{a}={d}∩{a}=

Follow(T)∩{a}={#,b}∩{a}=

Follow(B)∩Follow(T)={d}∩{#,b}=

所以在I0,I2,中的移进-归约和归约-归约冲突可以由Follow集解决,所以G是SLR

(1)文法。

构造的SLR

(1)分析表如下表。

SLR

(1)分析表

name

ACTION

GOTO

a

b

d

#

T

B

0

S2

r2

 

r2

1

 

1

 

 

 

acc

 

 

2

S2

r2

r4

r2

4

3

3

 

 

S5

 

 

 

4

 

S6

 

 

 

 

5

 

r1

 

r1

 

 

6

 

 

r3

 

 

 

14.某语言的文法G为:

E→aTd|ε

          T→Eb|a

证明G不是LR(0)文法而是SLR

(1)文法,请给出该文法的SLR

(1)分析表。

答:

拓广文法G',增加产生式S'→E

在项目集I0中:

有移进项目E→·aTd

和归约项目E→·

存在移进-归约冲突,所以G不是LR(0)文法。

.

若产生式排序为:

(0)S′→E

(1)E→aTd

(2)E→ε

(3)T→Eb

(4)T→a

G′的LR(0)项目集族及识别活前缀的DFA如下图:

由产生式知:

Follow(E)={#,b}

Follow(T)={d}

在I0,I2中:

Follow(E)∩{a}={#,b}∩{a}=

在I5中:

Follow(E)∩{a}={#,b}∩{a}=

Follow(T)∩{a}={d}∩{a}=

Follow(T)∩Follow(E)={d}∩{#,b}=

所以在I0,I2,I5中的移进-归约和归约-归约冲突可以由Follow集解决,所以G′是SLR

(1)文法。

构造的SLR

(1)分析表如下表:

name

ACTION

GOTO

a

b

d

#

E

T

0

S2

r2

 

r2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1