编译原理半期考试答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、填空题(每空1分,共20分) 1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,

中间代码生成,代码优化等几个基本阶段,同时还会伴有__表格处理

___和 ___出错处理__。

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

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

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

5.若两个正规式e1和e2所表示的正规集相同,则e1和e2等价,写作e1=e2。

6.一个句型中的最左简单短语称为该句型的___句柄__。

7.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子。

二、是非题(请在括号内,正确的划√,错误的划×)(每个1分,共10分)

1.计算机高级语言翻译成低级语言只有解释一种方式。(×) 2.在编译中进行语法检查的目的是为了发现程序中所有错误。(×)

3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙

机的操作系统功能完全相同。 (√ )

4.正则文法其产生式为 A->a , A->Bb, A,B ∈V N , a 、 b ∈V T 。 (×)

5.每个文法都能改写为 LL(1) 文法。 (√)(2班做)

6.有穷自动机接受的语言是正规语言。(√)(1班做)

7.对任何一个NFA M都存在一个DFA M’,使得L(M’)=L(M).( √ )

8.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。(×)

9.确定的自动机以及不确定的自动机都能正确地识别正规集。(√)

10.词法分析作为单独的一遍来处理较好。(× )

11.有穷自动机接受的语言是正规语言。(√)

三、选择题(每小题2分,共20分)

1.文法G 产生的_____的全体是该文法描述的语言。

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

2.若文法G 定义的语言是无限集,则文法必然是_____。

A.( ) 递归的B.( ) 前后文无关的

C.( ) 二义性的D.( ) 无二义性的

3.四种形式语言文法中,1型文法又称为_____文法。

A.( ) 短语结构文法B.( ) 前后文无关文法

C.( ) 前后文有关文法D.( ) 正规文法

4.一个文法所描述的语言是_____。

A.( ) 唯一的B.( ) 不唯一的

C.( ) 可能唯一,好可能不唯一D.( ) 都不对

5._____和代码优化部分不是每个编译程序都必需的。

A.( ) 语法分析B.( ) 中间代码生成

C.( ) 词法分析D.( ) 目标代码生成

6._____是两类程序语言处理程序。

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

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

7.编译程序是对_____。

A.( ) 汇编程序的翻译B.( ) 高级语言程序的解释执行

C.( ) 机器语言的执行D.( ) 高级语言的翻译

8.采用自上而下分析,必须_____。(2班做)

A.( ) 消除左递归B.( ) 消除右递归

C.( ) 消除回溯D.( )提取公共左因子

9.在规范归约中,用_____来刻画可归约串。(2班做)

A.( )直接短语B.( )句柄

C.( )最左素短语D.( )素短语

10.词法分析器用于识别_____。

A.( ) 字符串B.( )语句

C.( )单词D.( )标识符

11.文法分为四种类型,即0型、1型、2型、3型。其中0型文法是_____。

A. ( ) 短语文法B.( ) 正则文法

C.( ) 上下文有关文法D.( ) 上下文无关文法

12.一个上下文无关文法G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组_____。

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

四、简答题(每小题5分,共30分)

1.高级语言程序有哪两种执行方式?其特点是什么?

答:高级语言程序有编译程序和解释程序两种执行方式;

编译程序(Compiler)——将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。

解释程序(Interpreter)——将高级程序设计语言写的源程序作为输入,边解释边执行源程序本身,而不产生目标程序的翻译程序。

2、考虑文法G[S]:S→aSbS|bSaS|

(1)试用最左推导说明此文法是二义性的

(2)对于句子abab构造两个相应的最右推导

(3)对于句子abab构造两个相应的分析树

解答:

(1) 句子abab有如下两个不同的最左推导:

S => aSbS => abS=>abaSbS => ababS => abab

S => aSbS => abSaSbS=> abaSbS=> ababS=> abab

所以此文法是二义性的。

(2) 句子abab的两个相应的最右推导:

S=> aSbS=> aSbaSbS=> aSbaSb=> aSbab=> abab

S=> aSbS=> aSb=> abSaSb=> abSab=> abab

(3) 句子abab的两棵分析树:

相关文档
最新文档