编译原理习题答案
编译系统概论
一、单选题
- 编译过程中,语法分析器的任务不包括( A )。
A.
分析单词是怎样构成的
B.
分析单词串是如何构成语句和说明的
C.
分析语句和说明是如何构成程序的
D.
分析程序的结构
- 编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过( B )这几步。
a.编辑 b编译 c.连接 d.运行
A.
abcd
B.
abc
C.
ac
D.
ad
- 解释方式和编译方式的主要区别在于( B )。
A.
能否对源程序查错
B.
能否生成目标代码
C.
能否多用户运行
D.
机器资源利用率高低
- 若在C语言程序中出现“aa 11 bb=123;”,且不出现在引号和注释里,在编译时会( D )
A.
词法分析时报错
B.
语义分析时报错
C.
生成中间代码时报错.
D.
语法分析时报错
- 面向机器的语言指的是( B )。
A.
用于解决机器硬件设计问题的语言
B.
特定计算机系统所固有的语言
C.
各种计算机系统都通用的语言
D.
只能在一台计算机上使用的语言
- 面向机器语言的特点是( D )。
A.
程序的执行效率低,编制效率低,可读性差
B.
程序的执行效率高,编制效率高,可读性强
C.
程序的执行效率低,编制效率高,可读性强
D.
程序的执行效率高,编制效率低,可读性差
- 编译程序是对( D )
A.
汇编程序的翻译
B.
高级语言的解释执行
C.
机器语言的执行
D.
高级语言的翻译
- 编译程序是一种( A )软件
A.
系统
B.
应用
C.
MIS
D.
ERP
- ( C )不是编译程序的组成部分。
A.
词法分析程序
B.
代码生成程序
C.
设备管理程序
D.
语法分析程序
- 设有表达式ab-c,将其中ab识别为表达式的编译阶段是( B
)
A.
词法分析
B.
语法分析
C.
语义分析
D.
代码生成
二、多选题
- 编译原理各阶段的工作都涉及到( A C )
A.
表格管理
B.
语法分析
C.
出错处理
D.
代码优化
- 程序语言一般分为( A )和( C
)。
A.
高级语言
B.
专用程序语言
C.
低级语言
D.
通用程序语言
- 高级语言的翻译方式有( C )和( D )
A.
汇编方式
B.
模拟方式
C.
解释方式
D.
编译方式
三、判断题
- 有人说:“用高级语言编写的源程序必须通过编译,得到目标代码后才能投入运行”。正确
四、简答题
- 简述高级语言源程序的两种翻译方式的特点。
编译方式:是将高级语言全部翻译成机器指令之后,再将机器指令交予计算机执行,产生整个目标程序。
解释方式:是将高级语言逐句翻译,翻译一句,执行一句,不产生整个目标程序。
- 什么是编译程序?
编译程序是把某一种高级语言程序等价地转换成另一种低级语言程序的程序。
上下文无关文法与形式语言
一、单选题
- 对于文法G[Z],已知u是句型,则判断( D )是正确的。
A.
只要使用规范推导,无论如何一定可以从Z推导出u
B.
只要依据产生式进行归约,则u一定可以归约成Z
C.
上面的A和B都是对的
D.
上面的A和B都是错的
- 由“非终结符->符号串”这种产生式构成的文法是( C )。
A.
0型语法
B.
1型文法
C.
2型文法
D.
3型文法
- 二义文法是指( D )。
A.
对应于两棵不同语法树的文法
B.
对应于两种不同推导的文法
C.
文法中任何一个非终结符,都存在以它为左部的两个不同产生式
D.
A、B、C都是错的
- 文法G[Z]和语言L(G[Z])存在如下关系:( C )
A.
一一对应,一个文法对应唯一的语言,并且,一个语言对应唯一的文法
B.
一个语言对应唯一的文法,反之则不然
C.
一个文法对应唯一的语言,反之则不然
D.
若为非二义文法,则C正确;若为二义文法,则一个文法不对应唯一的语言
- 关于短语和句柄,正确的论述是( B )。
A.
短语就是句柄
B.
直接短语才可能是句柄
C.
最左短语一定是句柄
D.
最右短语一定是句柄
- 若一个文法是递归的,则它产生的句子个数是( A )。
A.
无穷个
B.
可能有限个,可能无穷个
C.
有限个
- 正则文法( A )二义性的。
A.
可以是
B.
一定不是
C.
一定是
- 一个语法的文法是( B )
A.
唯一的
B.
不唯一的
C.
个数有限的
D.
无数个
- 文法识别符号经过任意步推导得到的结果是( A )
A.
句型
B.
句柄
C.
句子
D.
短语
- 文法分为四种类型:0型文法、1型文法、2型文法、3型文法,其中3型文法是( B )。
A.
短语文法
B.
正规文法
C.
上下文有关文法
D.
上下文无关文法
- 在编译中产生语法树是为了( B )。
A.
语法分析
B.
语义分析
C.
词法分析
D.
目标代码生成
- 一个上下文无关文法包含四个部分,一组非终结符,一组终结符,一个开始符号以及一组( C )。
A.
句子
B.
句型
C.
产生式
D.
单词
- 自下而上的语法分析中,应从( C
)开始分析。
A.
开始符号
B.
句柄
C.
句子
D.
句型
二、多选题
- 如果一个文法是二义文法,必然有( ABCD )的现象存在。
A.
文法的某一个句子存在两棵或两棵以上的语法树
B.
对于文法的某一个句子,存在两种或两种以上的最左(最右)推导
C.
对于文法的某一个句子,存在两种或两种以上的最左(最右)归约
D.
在进行归约时,文法的某些规范句柄不唯一
- 给定语法A->bAcc|ε,下面的符号串中为该文法的句子是( AE
)。
A.
bcc
B.
bcbc
C.
bcbcc
D.
bccbcc
E.
bbcccc
有穷自动机与正则表达式理论基础
一、单选题
- 某个语言,它能用正规表达式表示,但是不能使用任何正规文法表示,这个语言必然是( D )。
A.
含二义性语言
B.
1型文法所对应的语言
C.
既含左递归又含右递归的语言
D.
不存在的语言
- 词法分析器的另一个名称是( B )。
A.
分析器
B.
扫描器
C.
划分处理器
D.
回词法探索器
- 面对众多的源语言的词法分析处理,总体上,超前读入和某种假读处理是( B )。
A.
可以避免的
B.
不可避免的
C.
徒劳无益的
- 下述正则表达式中( D )与(0*|1)*(+1-)等价。
A.
0*(+|-)|1(+|-)
B.
0*(+|-)|1(+|-)
C.
0*(+|-)|1*(+|-)
D.
(0|1)+(0|1)-
- 表达式ab-c-d e e ef-g-hi中,运算符的优先级由高到低依次为-、*、$,且均为右结合,则相应的后缀式为( D )。
A.
ad*c-d-e
f
g
−
h
−
i
∗
fg-h-i*
fg−h−i∗
B.
∗
a
−
b
−
c
d
*a-b-cd
∗a−b−cde*-f-ghi
C.
0bc–aefgh–$$
D.
abcd–efgh–i$$
- 赋值语句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*±-=
- 表达式-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*±
- 假设/的优先级高于-,则采用右结合规则时,a-b/c-d可解释为( B )
A.
(a-(b/))-d
B.
a-((b/c)-d)
C.
a-d-(b/c)
D.
(b-c)-a-d
- 逆波兰式ab+cd+*所代表的中缀形式的表达式是( B )
A.
a+b+c*d
B.
(a+b)*(c+d)
C.
(a+b)*c+d
D.
a+b*c+d
- 文法G所描述的语言是( D )的集合。
A.
文法G的字汇表V中所有符号组成的符号串
B.
文法G的字汇表V的闭包V*中的所有符号串
C.
由此文法的识别符号推出的所有符号串
D.
由文法的识别符号推出的所有终结符号串
- 文法的二义性和语言的二义性是两个( A )的概念。
A.
不同
B.
相同
C.
无法判断
- 一个句型中的最左( B )称为该句型的句柄。
A.
短语
B.
简单短语
C.
素短语回
D.
终结符号
- 设有文法G[S]:
S::=S*S|S+S|(S)|a
该文法( A )二义性文法
A.
是
B.
不是
C.
无法判断
二、判断题
- 确定的有穷自动机是一个五元组.正确
语法分析
一、单选题
- 递归子程序法属于( A )语法分析方法
A.
自顶向下
B.
自底向上
C.
自左向右
D.
自右向左
- 采用确定的自顶向下分析时,必须( A )
A.
消除左递归
B.
消除右递归
C.
避免回溯
D.
回提取左公因子
- 自上而下语法分析的主要分析动作是( A )
A.
推导
B.
移进
C.
归约
D.
匹配
- 一个字符属于FOLLOW(S),这个字符的含义是( D )
A.
一定会有一个句型中后随S的终结符
B.
S可能推导出第一个字符
C.
S可能推导出最后一个字符
D.
在某句型中直接跟在S后的字符
- 在递归子程序方法中,若文法存在左递归,则会使分析过程产生( D )
A.
回溯
B.
非法调用
C.
有限次调用
D.
无限循环
- 编译程序中的语法分析器接受以( C )为单位的输入,并产生有关信息供以后各阶段使用
A.
表达式
B.
产生式
C.
单词
D.
语句
- 构造一个不带回溯的自顶向下语法分析器,要求文法满足( 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同时满足
- LL(1)文法( B )二义性的
A.
都是有
B.
都没有
C.
不一定有
D.
极少具有
- 最左简单子树的末端结点构成的符号串称为( B
)
A.
简单短语
B.
句柄
C.
最左素短语
D.
素短语
- 若a为终结符,则A -> α.aβ为( C )项目
A.
待约
B.
接受
C.
移进
D.
归约
- 下面哪种不是自底向上的语法分析文法( C )
A.
LR(1)
B.
SLR(1)
C.
LL(K)
D.
算符优先法
- LR(k)方法是( B )
A.
从左到右分析,每次向前预测k步的一-种编译方法
B.
从左到右分析,是否归约句柄要向后看k个输入符号的一种编译方法
C.
从左到右分析,共经过k步的一种编译方法
从左到右分析,每次走k步的一种编译方法
- 算符优先分析是一种自底向上的分析方法,它是以( C )作为每一步归约的对象
A.句柄
B.最右直接短语
C.最左素短语
D.最右素短语
- 在通常的语法分析方法中,( C )特别适用于表达式的分析
A.简单优先法
B.LR分析法
C.算符优先法
D.LL(1)分析法
- 若项目集lk含有A->α.,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取A ->
α.动作的一定是( D )
A.
LALR文法
B.
LR(0)文法
C.
LR(1)文法
D.
SLR(1)文法
- 在规范归约中,任何可归约串的出现都在( C )
A.
栈的内部
B.
剩余的输入串中
C.
栈顶
D.
在栈顶和输入串中
17.一个LR分析器实质上是一个带有先进后出存储栈的( A )
A.
DFA
B.
NFA
C.
ACTION表
D.
LR分析表
- 自下而上语法分析的主要分析动作是( C )
A.
移进
B.
推导
C.
归约
D.
匹配
- LR分析法属于( D )
A.
自顶向下分析法
B.
LALR分析法
C.
SLR分析法
D.
自底向上分析法
二、多选题
- 语法分析器的常用方法是( AB )
A.
自顶向下
B.
自底向上
C.
自左向右
D.
自右向左
三、判断题
-
LL(1)文法又称为预测分析方法。正确
-
左递归会造成自顶向下分析过程出现无穷的重复。正确
-
LL(k)文法不一定都是二义性的。错
-
考虑文法G[A]:
A -> A˅B | B
B -> B˄C | C
C -> ¬C | D
D -> (A) | i
该文法是LL(1)文法。错
-
一个算符优先文法可能不存在算符优先函数与之对应。对
-
LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。错