编译原理答案

编译原理习题答案

编译系统概论

一、单选题

  1. 编译过程中,语法分析器的任务不包括( A )。

A.
分析单词是怎样构成的

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

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

D.
分析程序的结构

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

a.编辑 b编译 c.连接 d.运行

A.
abcd

B.
abc

C.
ac

D.
ad

  1. 解释方式和编译方式的主要区别在于( B )。

A.
能否对源程序查错

B.
能否生成目标代码

C.
能否多用户运行

D.
机器资源利用率高低

  1. 若在C语言程序中出现“aa 11 bb=123;”,且不出现在引号和注释里,在编译时会( D )

A.  
词法分析时报错

B.  
语义分析时报错

C.  
生成中间代码时报错.

D.  
语法分析时报错

  1. 面向机器的语言指的是( B )。

A.  
用于解决机器硬件设计问题的语言

B.  
特定计算机系统所固有的语言

C.  
各种计算机系统都通用的语言

D.  
只能在一台计算机上使用的语言

  1. 面向机器语言的特点是( D )。

A.  
程序的执行效率低,编制效率低,可读性差

B.  
程序的执行效率高,编制效率高,可读性强

C.  
程序的执行效率低,编制效率高,可读性强

D.  
程序的执行效率高,编制效率低,可读性差

  1. 编译程序是对( D )

A.  
汇编程序的翻译

B.  
高级语言的解释执行

C.  
机器语言的执行

D.  
高级语言的翻译

  1. 编译程序是一种( A )软件

A.  
系统

B.  
应用

C.  
MIS

D.  
ERP

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

A.  
词法分析程序

B.  
代码生成程序

C.  
设备管理程序

D.  
语法分析程序

  1. 设有表达式ab-c,将其中ab识别为表达式的编译阶段是( B
    )

A.  
词法分析

B.  
语法分析

C.  
语义分析

D.  
代码生成

二、多选题

  1. 编译原理各阶段的工作都涉及到( A C )

A.  
表格管理

B.  
语法分析

C.  
出错处理

D.  
代码优化

  1. 程序语言一般分为( A )和( C
    )。

A.  
高级语言

B.  
专用程序语言

C.  
低级语言

D.  
通用程序语言

  1. 高级语言的翻译方式有( C )和( D )

A.  
汇编方式

B.  
模拟方式

C.  
解释方式

D.  
编译方式

三、判断题

  1. 有人说:“用高级语言编写的源程序必须通过编译,得到目标代码后才能投入运行”。正确

四、简答题

  1. 简述高级语言源程序的两种翻译方式的特点。

编译方式:是将高级语言全部翻译成机器指令之后,再将机器指令交予计算机执行,产生整个目标程序。

解释方式:是将高级语言逐句翻译,翻译一句,执行一句,不产生整个目标程序。

  1. 什么是编译程序?

编译程序是把某一种高级语言程序等价地转换成另一种低级语言程序的程序。

上下文无关文法与形式语言

一、单选题

  1. 对于文法G[Z],已知u是句型,则判断( D )是正确的。

A.  
只要使用规范推导,无论如何一定可以从Z推导出u

B.  
只要依据产生式进行归约,则u一定可以归约成Z

C.  
上面的A和B都是对的

D.  
上面的A和B都是错的

  1. 由“非终结符->符号串”这种产生式构成的文法是( C )。

A.  
0型语法

B.  
1型文法

C.  
2型文法

D.  
3型文法

  1. 二义文法是指( D )。

A.  
对应于两棵不同语法树的文法

B.  
对应于两种不同推导的文法

C.  
文法中任何一个非终结符,都存在以它为左部的两个不同产生式

D.  
A、B、C都是错的

  1. 文法G[Z]和语言L(G[Z])存在如下关系:( C )

A.  
一一对应,一个文法对应唯一的语言,并且,一个语言对应唯一的文法

B.  
一个语言对应唯一的文法,反之则不然

C.  
一个文法对应唯一的语言,反之则不然

D.  
若为非二义文法,则C正确;若为二义文法,则一个文法不对应唯一的语言

  1. 关于短语和句柄,正确的论述是( B )。

A.  
短语就是句柄

B.  
直接短语才可能是句柄

C.  
最左短语一定是句柄

D.  
最右短语一定是句柄

  1. 若一个文法是递归的,则它产生的句子个数是( A )。

A.  
无穷个

B.  
可能有限个,可能无穷个

C.  
有限个

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

A.  
可以是

B.  
一定不是

C.  
一定是

  1. 一个语法的文法是( B )

A.  
唯一的

B.  
不唯一的

C.  
个数有限的

D.  
无数个

  1. 文法识别符号经过任意步推导得到的结果是( A )

A.  
句型

B.  
句柄

C.  
句子

D.  
短语

  1. 文法分为四种类型:0型文法、1型文法、2型文法、3型文法,其中3型文法是( B )。

A.  
短语文法

B.  
正规文法

C.  
上下文有关文法

D.  
上下文无关文法

  1. 在编译中产生语法树是为了( B )。

A.  
语法分析

B.  
语义分析

C.  
词法分析

D.  
目标代码生成

  1. 一个上下文无关文法包含四个部分,一组非终结符,一组终结符,一个开始符号以及一组( C )。

A.  
句子

B.  
句型

C.  
产生式

D.  
单词

  1. 自下而上的语法分析中,应从( C
    )开始分析。

A.  
开始符号

B.  
句柄

C.  
句子

D.  
句型

二、多选题

  1. 如果一个文法是二义文法,必然有( ABCD )的现象存在。

A.  
文法的某一个句子存在两棵或两棵以上的语法树

B.  
对于文法的某一个句子,存在两种或两种以上的最左(最右)推导

C.  
对于文法的某一个句子,存在两种或两种以上的最左(最右)归约

D.  
在进行归约时,文法的某些规范句柄不唯一

  1. 给定语法A->bAcc|ε,下面的符号串中为该文法的句子是( AE
    )。

A.  
bcc

B.  
bcbc

C.  
bcbcc

D.  
bccbcc

E.  
bbcccc

有穷自动机与正则表达式理论基础

一、单选题

  1. 某个语言,它能用正规表达式表示,但是不能使用任何正规文法表示,这个语言必然是( D )。

A.  
含二义性语言

B.  
1型文法所对应的语言

C.  
既含左递归又含右递归的语言

D.  
不存在的语言

  1. 词法分析器的另一个名称是( B )。

A.  
分析器

B.  
扫描器

C.  
划分处理器

D.  
回词法探索器

  1. 面对众多的源语言的词法分析处理,总体上,超前读入和某种假读处理是( B )。

A.  
可以避免的

B.  
不可避免的

C.  
徒劳无益的

  1. 下述正则表达式中( D )与(0*|1)*(+1-)等价。

A.  
0*(+|-)|1(+|-)

B.  
0*(+|-)|1(+|-)

C.  
0*(+|-)|1*(+|-)

D.  
(0|1)+(0|1)-

  1. 表达式ab-c-d e e ef-g-hi中,运算符的优先级由高到低依次为-、*、$,且均为右结合,则相应的后缀式为( D )。

A.  
ad*c-d-e f g − h − i ∗ fg-h-i* fghi

B.  
∗ a − b − c d *a-b-cd abcde*-f-ghi

C.  
0bc–aefgh–$$

D.  
abcd–efgh–i$$

  1. 赋值语句X=-(a+b)/(c-d)-(a+b*c)的逆波兰表示为( C )。

A.  
xab+cd-/-bc*a±=

B.  
xab+/cd-bc*a±-=

C.  
xab±cd-/abc*±=

D.  
xab+cd-/abc*±-=

  1. 表达式-a-(b*c/(c-d)+(-b)*a)的后缀表示是( C )

A.  
abccd-b-a+/–

B.  
a-bccd-b-a+/-

C.  
a-bccd-/b-a±

D.  
a-bc*/cd-b-a*±

  1. 假设/的优先级高于-,则采用右结合规则时,a-b/c-d可解释为( B )

A.  
(a-(b/))-d

B.  
a-((b/c)-d)

C.  
a-d-(b/c)

D.  
(b-c)-a-d

  1. 逆波兰式ab+cd+*所代表的中缀形式的表达式是( B )

A.  
a+b+c*d

B.  
(a+b)*(c+d)

C.  
(a+b)*c+d

D.  
a+b*c+d

  1. 文法G所描述的语言是( D )的集合。

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

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

C.  
由此文法的识别符号推出的所有符号串

D.  
由文法的识别符号推出的所有终结符号串

  1. 文法的二义性和语言的二义性是两个( A )的概念。

A.  
不同

B.  
相同

C.  
无法判断

  1. 一个句型中的最左( B )称为该句型的句柄。

A.  
短语

B.  
简单短语

C.  
素短语回

D.  
终结符号

  1. 设有文法G[S]:

S::=S*S|S+S|(S)|a

该文法( A )二义性文法

A.  

B.  
不是

C.  
无法判断

二、判断题

  1. 确定的有穷自动机是一个五元组.正确

语法分析

一、单选题

  1. 递归子程序法属于( A )语法分析方法

A.  
自顶向下

B.  
自底向上

C.  
自左向右

D.  
自右向左

  1. 采用确定的自顶向下分析时,必须( A )

A.  
消除左递归

B.  
消除右递归

C.  
避免回溯

D.  
回提取左公因子

  1. 自上而下语法分析的主要分析动作是( A )

A.  
推导

B.  
移进

C.  
归约

D.  
匹配

  1. 一个字符属于FOLLOW(S),这个字符的含义是( D )

A.  
一定会有一个句型中后随S的终结符

B.  
S可能推导出第一个字符

C.  
S可能推导出最后一个字符

D.  
在某句型中直接跟在S后的字符

  1. 在递归子程序方法中,若文法存在左递归,则会使分析过程产生( D )

A.  
回溯

B.  
非法调用

C.  
有限次调用

D.  
无限循环

  1. 编译程序中的语法分析器接受以( C )为单位的输入,并产生有关信息供以后各阶段使用

A.  
表达式

B.  
产生式

C.  
单词

D.  
语句

  1. 构造一个不带回溯的自顶向下语法分析器,要求文法满足( D )

A.对每个形如A -> x1 | x2|…|xn的产生式,要求FIRST(xi)与FIRST(xj)的交集为空集(i≠j)

B.对每个形如A -> x1 | x2 |…|xn的产生式,若xi*ε,则要求FIRST(xj)与FOLLOW(A)的交集为空集(i≠j)

C.不含左递归

D.A、B和C同时满足

  1. LL(1)文法( B )二义性的

A.  
都是有

B.  
都没有

C.  
不一定有

D.  
极少具有

  1. 最左简单子树的末端结点构成的符号串称为( B
    )

A.  
简单短语

B.  
句柄

C.  
最左素短语

D.  
素短语

  1. 若a为终结符,则A -> α.aβ为( C )项目

A.  
待约

B.  
接受

C.  
移进

D.  
归约

  1. 下面哪种不是自底向上的语法分析文法( C )

A.  
LR(1)

B.  
SLR(1)

C.  
LL(K)

D.  
算符优先法

  1. LR(k)方法是( B )

A.  
从左到右分析,每次向前预测k步的一-种编译方法

B.  
从左到右分析,是否归约句柄要向后看k个输入符号的一种编译方法

C.  
从左到右分析,共经过k步的一种编译方法

从左到右分析,每次走k步的一种编译方法

  1. 算符优先分析是一种自底向上的分析方法,它是以( C )作为每一步归约的对象

A.句柄

B.最右直接短语

C.最左素短语

D.最右素短语

  1. 在通常的语法分析方法中,( C )特别适用于表达式的分析

A.简单优先法

B.LR分析法

C.算符优先法

D.LL(1)分析法

  1. 若项目集lk含有A->α.,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取A ->
    α.动作的一定是( D )

A.  
LALR文法

B.  
LR(0)文法

C.  
LR(1)文法

D.  
SLR(1)文法

  1. 在规范归约中,任何可归约串的出现都在( C )

A.  
栈的内部

B.  
剩余的输入串中

C.                      
栈顶

D.  
在栈顶和输入串中

17.一个LR分析器实质上是一个带有先进后出存储栈的( A )

A.  
DFA

B.  
NFA

C.  
ACTION表

D.  
LR分析表

  1. 自下而上语法分析的主要分析动作是( C )

A.  
移进

B.  
推导

C.  
归约

D.  
匹配

  1. LR分析法属于( D )

A.  
自顶向下分析法

B.  
LALR分析法

C.  
SLR分析法

D.  
自底向上分析法

二、多选题

  1. 语法分析器的常用方法是( AB )

A.  
自顶向下

B.  
自底向上

C.  
自左向右

D.  
自右向左

三、判断题

  1. LL(1)文法又称为预测分析方法。正确

  2. 左递归会造成自顶向下分析过程出现无穷的重复。正确

  3. LL(k)文法不一定都是二义性的。错

  4. 考虑文法G[A]:

A -> A˅B | B

B -> B˄C | C

C -> ¬C | D

D -> (A) | i

该文法是LL(1)文法。错

  1. 一个算符优先文法可能不存在算符优先函数与之对应。对

  2. LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。错

编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1) 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语 言,则此翻译程序称为编译程序。 (2) 源程序:源语言编写的程序称为源程序。 (3) 目标程序:目标语言书写的程序称为目标程序。 (4) 编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与 目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5) 后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段, 即目标代码生成,以及相关出错处理和符号表操作。 (6) 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第 2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程 序的总体结构图。 答案一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语 义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和 错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表 中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式 的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。 盛威网(www.snwei.com)专业的计算机学习网站1 《编译原理》课后习题答案第一章 目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的 各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的 中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指 出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译 程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源 程序中的错误时,错误处理程序负责报告出错的位置和错误性质等信息,同时对发现的错误 进行适当的校正(修复),目的是使编译程序能够继续向下进行分析和处理。 注意:如果问编译程序有哪些主要构成成分,只要回答六部分就可以。如果搞不清楚, 就回答八部分。 第 3 题 何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系? 答案: 翻译程序是指将用某种语言编写的程序转换成另一种语言形式的程序的程序,如编译程 序和汇编程序等。 编译程序是把用高级语言编写的源程序转换(加工)成与之等价的另一种用低级语言编 写的目标程序的翻译程序。 解释程序是解释、执行高级语言源程序的程序。解释方式一般分为两种:一种方式是, 源程序功能的实现完全由解释程序承担和完成,即每读出源程序的一条语句的第一个单词, 则依据这个单词把控制转移到实现这条语句功能的程序部分,该部分负责完成这条语句的功 能的实现,完成后返回到解释程序的总控部分再读人下一条语句继续进行解释、执行,如此 反复;另一种方式是,一边翻译一边执行,即每读出源程序的一条语句,解释程序就将其翻 译成一段机器指令并执行之,然后再读人下一条语句继续进行解释、执行,如此反复。无论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值