23习题含解答.docx

上传人:b****8 文档编号:12101352 上传时间:2023-06-04 格式:DOCX 页数:158 大小:310.80KB
下载 相关 举报
23习题含解答.docx_第1页
第1页 / 共158页
23习题含解答.docx_第2页
第2页 / 共158页
23习题含解答.docx_第3页
第3页 / 共158页
23习题含解答.docx_第4页
第4页 / 共158页
23习题含解答.docx_第5页
第5页 / 共158页
23习题含解答.docx_第6页
第6页 / 共158页
23习题含解答.docx_第7页
第7页 / 共158页
23习题含解答.docx_第8页
第8页 / 共158页
23习题含解答.docx_第9页
第9页 / 共158页
23习题含解答.docx_第10页
第10页 / 共158页
23习题含解答.docx_第11页
第11页 / 共158页
23习题含解答.docx_第12页
第12页 / 共158页
23习题含解答.docx_第13页
第13页 / 共158页
23习题含解答.docx_第14页
第14页 / 共158页
23习题含解答.docx_第15页
第15页 / 共158页
23习题含解答.docx_第16页
第16页 / 共158页
23习题含解答.docx_第17页
第17页 / 共158页
23习题含解答.docx_第18页
第18页 / 共158页
23习题含解答.docx_第19页
第19页 / 共158页
23习题含解答.docx_第20页
第20页 / 共158页
亲,该文档总共158页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

23习题含解答.docx

《23习题含解答.docx》由会员分享,可在线阅读,更多相关《23习题含解答.docx(158页珍藏版)》请在冰点文库上搜索。

23习题含解答.docx

23习题含解答

2-3习题(含解答)

第1章编译原理概述

一、选择题

1.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括

(1)。

其中,

(2)和代码优化部分不是每个编译程序都必需的。

词法分析器用于识别(3),语法分析器则可以发现源程序中的(4)。

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

(2) A.语法分析 B.中间代码生成  C.词法分析 D.目标代码生成

(3) A.字符串     B.语句     C.单词 D.标识符

(4) A.语义错误   B.语法和语义错误 C.错误并校正 D.语法错误

2.程序语言的语言处理程序是一种

(1)。

(2)是两类程序语言处理程序,他们的主要区别在于(3)。

(1) A.系统软件   B.应用软件     C.实时系统     D.分布式系统

(2) A.高级语言程序和低级语言程序      B.解释程序和编译程序

C.编译程序和操作系统          D.系统程序和应用程序

(3) A.单用户与多用户的差别     B.对用户程序的查错能力

C.机器执行效率        D.是否生成目标代码

3.汇编程序是将翻译成,编译程序是将翻译成。

A.汇编语言程序B.机器语言程序C.高级语言程序

D.A或者BE.A或者CF.B或者C

4.下面关于解释程序的描述正确的是。

(1)解释程序的特点是处理程序时不产生目标代码

(2)解释程序适用于COBOL和FORTRAN语言

(3)解释程序是为打开编译程序技术的僵局而开发的  

A.

(1)

(2)      B.

(1)     C.

(1)

(2)(3)     D.

(2)(3)

5.高级语言的语言处理程序分为解释程序和编译程序两种。

编译程序有五个阶段,而解释程序通常缺少

(1)和

(1)。

其中,

(1)的目的是使最后阶段产生的目标代码更为高效。

与编译系统相比,解释系统

(2)。

解释程序处理语言时,大多数采用的是(3)方法。

(4)就是一种典型的解释型语言。

(1):

A.中间代码生成B.目标代码生成C.词法分析 D.语法分析  E.代码优化

(2):

A.比较简单,可移植性好,执行速度快

B.比较复杂,可移植性好,执行速度快

C.比较简单,可移植性差,执行速度慢

D.比较简单,可移植性好,执行速度慢

(3):

A.源程序命令被逐个直接解释执行B.先将源程序转化为中间代码,再解释执行

C.先将源程序解释转化为目标程序,在执行D.以上方法都可以

(4):

A.BASICB.CC.FORTRAND.PASCAL

6.用高级语言编写的程序经编译后产生的程序叫。

用不同语言编写的程序产生后,可用连接在一起生成机器可执行的程序。

在机器中真正执行的是。

A.源程序    B.目标程序  C.函数    D.过程 

E.机器指令代码   F.模块     G.连接程序   H.程序库

7.要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容:

,,。

A.汇编语言       B.高级语言  C.源语言     D.目标语言

E.程序设计方法   F.编译方法  G.测试方法   H.机器语言

8.由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成

(1),诸阶段的工作往往是

(2)进行的。

(1)A.过程 B.程序 C.批量 D.遍

(2)A.顺序 B.并行 C.成批 D.穿插

9.编译程序与具体的机器,与具体的语言。

A. 有关   B.无关

10.使用解释程序时,在程序未执行完的情况下,重新执行已执行过的部分。

A.也能    B.不可能

11.编译过程中,语法分析器的任务就是。

(1)分析单词是怎样构成的   

(2) 分析单词串是如何构成语句和说明的

(3)分析语句和说明是如何构成程序的 (4)分析程序的结构

A.

(2)(3)    B.

(2)(3)(4)    C.

(1)

(2)(3)   D.

(1)

(2)(3)(4)

12.编译程序是一种常用的软件。

A. 应用     B.系统

13.编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过这几步。

(1)编辑 

(2)编译 (3)连接 (4)运行

A.

(1)

(2)(3)(4) B.

(1)

(2)(3) C.

(1)(3) D.

(1)(4)

14.编译程序必须完成的工作有。

(1)词法分析 

(2)语法分析       (3)语义分析

(4)代码生成 (5)中间代码生成   (6)代码优化

A.

(1)

(2)(3)(4)     B.

(1)

(2)(3)(4)(5)    C.

(1)

(2)(3)(4)(5)(6) 

D.

(1)

(2)(3)(4)(6)  E.

(1)

(2)(3)(5)(6)

15.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法

A.不正确   B.正确

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

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

17.编译程序生成的目标程序是机器语言的程序。

A. 一定    B.不一定

18.编译程序生成的目标程序是可执行的程序。

A. 一定    B.不一定

19.编译程序是一种。

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

20.按逻辑上划分,编译程序第二步工作是。

A.语义分析B.词法分析C.语法分析D.代码优化

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

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

二、填空题

1.编译程序的工作过程一般可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化等几个基本阶段,同时还会伴有表格处理和出错处理。

3.编译方式与解释方式的根本区别在于是否生成目标代码。

5.对编译程序而言,输入数据是源程序,输出结果是目标程序。

6.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:

编译阶段和运行阶段。

如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段:

编译阶段,汇编阶段和运行阶段。

7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

三、判断题

1.计算机高级语言翻译成低级语言只有解释一种方式。

(×)

2.在编译中进行语法检查的目的是为了发现程序中所有错误。

(×)

3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。

(×)

四、问答题

1.什么是编译程序

答:

编译程序(compiler)是某一种高级语言程序(如FORTRAN、Pascal或C语言程序)翻译成另一种低级语言(如汇编语言或机器语言程序)的等价程序。

2.编译过程概述和编译程序的结构

答:

编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。

从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。

一般一个编译过程划分成词法分析、语法分析、语义分析、中间代码生成,代码优化和目标代码生成六个阶段,这是一种典型的划分方法。

事实上,某些阶段可能组合在一起,这些阶段间的源程序的中间表示形式就没必要构造出来了。

我们将分别介绍各阶段的任务。

另外两个重要的工作:

表格管理和出错处理与上述六个阶段都有联系。

编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有表格管理的工作;如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,这些工作称之为出错处理。

 

第2章PL/O编译程序的实现

第3章文法和语言

一、选择题

1.设A是符号中的集合,则下列A*描述不正确的是。

A.A1∪A2∪…∪An∪…B.A0∪A1∪A2∪…∪An∪…

C.{ε}∪A+D.A0∪A+

2.文法用来描述语言的语法结构,它由如下4个部分组成:

文法终结符集合、文法非终结符集合、和文法开始符号。

A.单词集合B.文法规则的集合

C.文法句子集合D.字母数字串

3.在规则(产生式)中,符号“|”表示。

A.与B.或C.取决于D.引导开关参数

4.如果在推导过程中的任何一步α⇒β,都是对α中的最右非结符进行替换,则称这种推导为。

A.直接推导B.广义推导C.最左推导D.规范推导

5.设有文法G[S]=({S,B},{b},{S→bB|b,B→bS},S),该文法所描述的语言是。

A.L(G[S])={bn|n≥0}B.L(G[S])={b2n|n≥0}

C.L(G[S])={b2n+1|n≥0}D.L(G[S])={b2n+1|n≥1}

6.设有文法G[E]:

E→E+T|E–T|T

T→T*F|T/F|F

F→(E)|i

该文法句型E+T*F的句柄是下列符号串。

A.EB.E+TC.T*FD.E+T*F

7.乔姆斯基把文法分成4种类型,即0型、1型、2型和3型。

2型文法,3型文法,其中3型文法也称为。

A.上下无关文法B.正规文法

C.上下文有关文法D.无限制文法

8.文法G所描述的语言是的集合。

A.文法G的字母表V中所有符号组成的符号串

B.文法G的字母表V的闭包V*中的所有符号串

C.由文法的开始符号推出的所有终极符串

D.由文法的开始符号推出的所有符号串

9.一个句型中的最左称为该句型的句柄。

可选项有:

A.短语B.简单短语C.素短语D.终结符号

10.设G是一个给定的文法,S是文法的开始符号,如果S

x(其中x∈V*),则称x是文法G的一个。

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

11.一个上下文无关文法G包括四个组成部分,它们是:

一组非终结符号,一组终结符号,一个开始符号,以及一组。

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

12.文法G[E]:

E→T∣E+T

T→F∣T﹡F

F→a∣(E)

该文法句型E+F﹡(E+T)的简单短语是下列符号串中的。

①(E+T)②E+T③F④F﹡(E+T)

可选项有:

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

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

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

二、填空题

2.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。

3.产生式是用于定义语法成分的一种书写规则。

4.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:

L(G)={x│S

x,x∈VT*}。

5.设G是一个给定的文法,S是文法的开始符号,如果S

x(其中x∈V*),则称x是文法的一个句型。

6.设G是一个给定的文法,S是文法的开始符号,如果S

x(其中x∈VT*),则称x是文法的一个句子。

7.乔母斯基定义的4种形式语言文法分别为:

0型文法(又称短语结构文法)、1型文法(又称上下文有关文法)、2型文法(又称上下文无关文法)、3型文法(又称正则/正规文法)。

三、问答题

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

要求:

允许0打头

不允许0打头

解:

G[S]=({S,P,D,N},{0,1,2,…,9},P,S)

P:

S→PD|D

P->NP|N

N->D|1|3|5|7|9

D→0|2|4|6|8

G[S]=({S,A,B,D,N,Q},{0,1,2,…,9},P,S)

P:

S→ABD|AB0|AD|A0|D

A->D|1|3|5|7|9

D->2|4|6|8

B->0|A|B0|BA

2.已知文法G:

<表达式>:

:

=<项>|<表达式>+<项>|<表达式>-<项>

<项>:

:

=<因子>|<项>*<因子>|<项>/<因子>

<因子>:

:

=(<表达式>)|i。

试给出下述表达式的推导及语法树。

(1)i;

(2)(i)(3)i*i;

(4)i*i+i;(5)i+(i+i);(6)i+i*i。

解:

v=<表达式>=><项>=><因子>=>i=w

v=<表达式>=><项>=><因子>=>(<表达式>)=>(<项>)=>(<因子>)=>(i)=w

v=<表达式>=><项>=><项>*<因子>=><因子>*<因子>=>i*i=w

v=<表达式>=><表达式>+<项>=><项>+<项>=><项>*<因子>+<项>

=><因子>*<因子>+<因子>=>i*i+i=w

v=<表达式>=><表达式>+<项>=><项>+<项>=><因子>+<因子>=>i+(<表达式>)

=>i+(<表达式>+<项>)=>i+(<项>+<项>)=>i+(<因子>+<因子>)=>i+(i+i)=w

v=<表达式>=><表达式>+<项>=><项>+<项>=><因子>+<项>=>i+<项>

=>i+<项>*<因子>=>i+<因子>*<因子>=>i+i*i=w

语法树见下图:

3.为句子i+i*i构造两棵语法树,从而证明下述文法G[<表达式>]是二义的。

(6)i+i*i

<表达式>:

:

=i|(<表达式>)|<表达式><运算符><表达式>

<运算符>:

:

=+|-|*|/

解:

为句子i+i*i构造的两棵语法树如下:

i

所以,该文法是二义的。

文法G=({A,B,S},{a,b,c},P,S)

其中P为:

S->Ac|Ab

A->ab

B->bc

是二义的吗?

为什么?

答:

是二义的。

因为对于句子abc可以有两种不同的生成树,即:

S=>Ac=>abc和S=>aB=>abc。

5.令文法G[E]为:

E→T|E+T|E-T

T→F|T*F|T/F

F→(E)|i

证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。

解:

可为E+T*F构造一棵语法树(见下图),所以它是句型。

T*F

 

从语法树中容易看出,E+T*F的短语有:

T*F是句型E+T*F的相对于T的短语,也是相对于规则T→T*F的直接短语。

E+T*F是句型E+T*F的相对于E的短语。

句型E+T*F的句柄(最左直接短语)是T*F。

6.下述文法G[E]生成的语言是什么?

给出该文法的一个句子,该句子至少含五个终结符,构造该句子的语法树。

证明:

是G[]的句型,并指出该句型的所有短语、直接短语和句柄。

|

|

→a|b|c

→+|-

→*|/

解:

(1)G[E]生成的语言具有乘除优先级的表达式的逆波兰式。

+

(2)该文法的一个句子是aab*+,

它的语法树是:

证明:

是G[]的句型,并指出该句型的所有短语、直接短语和句柄。

由于下面的语法树可以生成,所以它是G[]的句型。

由于=>,且=>,所以是句型相对于的短语,也是相对于规则的直接短语。

由于=>=>,所以是句型相对于的短语。

显然,句型的句柄是

7.给出生成下述语言的上下文无关文法:

(1){anbnambm|n,m>=0}

(2){1n0m1m0n|n,m>=0}

(3){WaWt|W属于{0|a}*,W表示Wt的逆}

解:

(1)所求文法为G[S]=({S,A,B},{a,b},P,S),其中P为:

S→AB

A→aAb|ε

B→aBb|ε

(2)所求文法为G[S]=({S,A},{0,1},P,S),其中P为:

S→1S0|A

A→0A1|ε

(3)W属于{0|a}*是指W可以的取值为{ε,0,a,00,a0,aa0,00aa,a0a0,…}

如果W=aa0a00,则Wt=00a0aa。

所求文法为G[S]=({S,P,Q},{0,a},P,S),其中P为:

S→0S0|aSa|a

8.给出生成下述语言的三型文法:

(1){an|n>=0}

(2){anbm|n,m>=1}

(3){anbmck|n,m,k>=0}

解:

生成的3型文法是:

G[S]:

S→aS|ε

生成的2型文法是:

G[S]:

S→AB

A→aA|a

B→bB|b

生成的3型文法是:

G[S]:

S→aP

P→aP|bD

D→bD|ε

生成的2型文法是:

G[S]:

S→ABC

A→aA|ε

B→bB|ε

C->cC|ε

生成的3型方法是:

G[S]:

A→aA|bB|cC|ε

B→bB|cC|ε

C→cC|ε

9.证明下述文法G[〈表达式〉]是二义的。

〈表达式〉∷=a|(〈表达式〉)|〈表达式〉〈运算符〉〈表达式〉

〈运算符〉∷=+|-|*|/

证明:

可为句子a+a*a构造两个不同的最右推导:

最右推导1〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉

          =>〈表达式〉〈运算符〉a

          =>〈表达式〉*a

          =>〈表达式〉〈运算符〉〈表达式〉*a

          =>〈表达式〉〈运算符〉a*a

          =>〈表达式〉+a*a

          =>a+a*a

最右推导2〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉

         =>〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉

          =>〈表达式〉〈运算符〉〈表达式〉〈运算符〉a

          =>〈表达式〉〈运算符〉〈表达式〉*a

          =>〈表达式〉〈运算符〉a*a

          =>〈表达式〉+a*a

          =>a+a*a

10.什么是句子?

什么是语言?

答:

设G是一个给定的文法,S是文法的开始符号,如果S

x(其中x∈VT*),则称x是文法的一个句子。

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

L(G)={x│S

x,x∈VT*}。

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

E→T|E+T|E-T

T→F|T*F|T/F

F→(E)|i

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

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

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

解:

①该文法的开始符号(识别符号)是E。

②该文法的终结符号集合VT={+,-,*,/,(,),i}。

非终结符号集合VN={E,T,F}。

③句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i;

简单短语为i、T*F、第一个T;

句柄为第一个T。

12.已知文法G[S]为:

S→dAB

A→aA|a

B→Bb|ε

①G[S]产生的语言是什么?

②G[S]能否改写为等价的正规文法?

解:

①G[S]产生的语言是L(G[S])={danbm│n≥1,m≥0}。

②G[S]能改写为等价的正规文法,其改写后的等价的正规文法G[Sˊ]为:

Sˊ→dA

A→aA|aB|a

B→bB|b

13.设有语言L(G)={adaR|a∈(a,b)*,aR为a之逆},试构造产生此语言的上下文无关文法G。

解:

根据题义,可知aR为a之逆的含义就是句子中的符号a、b以d为中心呈左右对称出现;由于a∈(a,b)*,所以a、b的个数可以为零。

所以可构造产生此语言的上下文无关文法G[S]为:

S→aSa|bSb|d

 

第4章词法分析

一、选择题

1.词法分析器用于识别   C 。

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

2.编译过程中扫描器的任务包括  D 。

(1)组织源程序的输入

(2)按词法规则分割出单词,识别出其属性,并转换成属性字的形式输出

(3)删除注解

(4)删除空格及无用字符

(5)行计数、列计数

(6)发现并定位词法错误

(7)填写符号表

可选项有:

A.

(2)(3)(4)(7)B.

(2)(3)(4)(6)(7)

C.

(1)

(2)(3)(4)(6)(7)D.

(1)

(2)(3)(4)(5)(6)(7)

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

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

4.正规表达式的“︱”读作 B,“·”读作 C,“*”读作 D 。

A.并且B.或者C.连接D.闭包

5.一个编译程序中,不仅包含词法分析,__A__,中间代码生成,代码优化,目标代码生成等五个部分。

A.语法分析  B.文法分析  C.语言分析  D.解释分析

6.语法分析器则可以发现源程序中的___D__。

A.语义错误  B.语法和语义错误C.错误并校正  D.语法错误

7.词法分析器的输出结果是___C__。

 A.单词的种别编码      B.单词在符号表中的位置

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

8.编译程序中词法分析器所完成的任务是从源程序识别出一个一个具有独立意义的____D___。

A.表达式B.语句

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2