编译原理模拟题合集.docx

上传人:b****1 文档编号:368381 上传时间:2022-10-09 格式:DOCX 页数:14 大小:92.16KB
下载 相关 举报
编译原理模拟题合集.docx_第1页
第1页 / 共14页
编译原理模拟题合集.docx_第2页
第2页 / 共14页
编译原理模拟题合集.docx_第3页
第3页 / 共14页
编译原理模拟题合集.docx_第4页
第4页 / 共14页
编译原理模拟题合集.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

编译原理模拟题合集.docx

《编译原理模拟题合集.docx》由会员分享,可在线阅读,更多相关《编译原理模拟题合集.docx(14页珍藏版)》请在冰豆网上搜索。

编译原理模拟题合集.docx

编译原理模拟题合集

编译原理

一、填空题(20分)

1.1编译程序的工作过程可划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等阶段,一般在语义分析阶段对表达式中运算对象的类型进行检查。

1.2递归下降法和预测分析法是自上而下的语法分析方法。

1.3常用的存储分配策略有静态存储分配和动态存储分配,其中,动态存储分配策略包括栈分配和堆分配。

1.4移进、归约是自下而上或LR分析中的典型操作。

1.5对于数组M[1..6,1..8],如果每个元素占k个存储单元,且起始地址为a,则以行为主序存放时元素M[4,4]的地址是__a+27*k__,以列为主序存放时元素M[4,4]的地址是_a+21k__。

1.1LR

(1)分析法中,L的含义是自左至右扫描输入串,R的含义是最右推导的逆。

1.2源程序经过编译后产生的程序称为目标程序。

1.3词法分析的输出由单词种别和单词的值两部分组成。

1.4文法G:

S→AB,A→aA|ε,B→bBc|bc描述的语言L(G)={ambkck|m>=1,k>=0}。

1.5允许用户随意地动态申请与释放内存空间应采用_堆_存储分配技术。

1.6一个文法产生的_句子的全体_称为该文法的语言。

1.7语义错误可分为静态语义错误和动态语义错误,“运算符与运算对象的类型不一致”属于_静态语义_错误,“无穷递归”属于_动态语义_错误。

1.1出错处理和符号表管理是编译程序各阶段都涉及到的工作。

1.2用LR方法实现语法分析时,典型的操作有__移进__、___归约__、接受和报错。

1.3一个上下文无关文法(N,T,P,S)的四个组成部分是终结符集合N、非终结符集合T、产生式集合和开始符号。

1.4已知数组M[1..5,1..8]以行为主序存放,如果每个元素占4个存储单元,且起始地址为a,则元素M[4,7]的地址是__a+120__。

数组元素的地址计算公式由两部分组成,一部分是不变部分,它在__编译__时确定;另一部分是可变部分,它在__运行__时确定。

1.5表达式(a+b)*c-d的逆波兰(后缀)表达式为__ab+c*d-__。

二、单选题(20分)

2.1词法分析器不能D。

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

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

2.2给定文法A→bA|ca,C是该文法的句子。

A.bbaB.cabC.bcaD.cba

2.3一个句型中的最左B称为该句型的句柄。

A.短语B.直接短语C.非终结符号D.终结符号

2.4已知文法G[S]:

S→A1A→A1|S0|0。

与G等价的正规式是C。

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

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

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

2.6与逆波兰式ab+c*d+对应的中缀表达式是B。

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

2.7识别上下文无关语言的自动机是A。

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

2.8B是与规范归约(最左归约)互逆的一个过程。

A.最左推导 B.最右推导C.词法分析 D.语义分析

2.9文法G产生的A的全体是该文法描述的语言,

A.句子 B.短语C.终结符 D.非终结符

2.10在表达式x:

=y+1中,A作为左值出现(其中,“:

=”表示赋值)。

A.x B.yC.1 D.y+1

2.1编译程序是对___D___。

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

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

2.2编译过程中C阶段不是必需的。

A.语法分析B.语义分析C.代码优化D.目标代码生成

2.3为数组声明a:

array[1..4,0..3]中a分配的存储空间的首地址为base_a,且每个数组元素占据一个存储单元。

若以行为主存放,数组元素a[3,1]在存储空间中相对base_a的偏移量是B。

A.8B.9C.10D.11

2.4识别正则语言的自动机是B。

A.下推自动机B.有限自动机C.线性界限自动机D.图灵机

2.5表达式“a+b*(c-d)”的后缀式为B。

A.ab+cd-*B.abcd-*+C.ab+*cd-D.abcd*+-

2.6一个文法产生的语言是指D。

A.从开始符号出发推导的所有符号串的集合 

B.所有终结符和非终结符形成的集合

C.所有短语构成的集合

D.该文法产生的句子的集合

2.7函数(或过程)调用时,A。

A.值调用方式下将实参的右值传递给形参,引用调用方式下将实参的左值传递给形参

B.值调用方式下将实参的左值传递给形参,引用调用方式下将实参的右值传递给形参

C.值调用方式下将形参的右值传递给实参,引用调用方式下将形参的左值传递给实参

D.值调用方式下将形参的左值传递给实参,引用调用方式下将形参的右值传递给实参

2.8用来描述控制进入和离开活动方式的树结构被称为C。

A.语法树B.分析树C.活动树D.嵌套关系树

2.9不含子串100的所有0、1符号串的正规式是A。

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

2.10B是与规范归约(最左归约)互逆的一个过程。

A.最左推导 B.最右推导C.词法分析 D.语义分析

2.1生成中间代码所依据的是_____C_____。

A.语法规则B.词法规则C.语义规则D.等价变换规则

2.2一个句型中的最左____B____称为该句型的句柄。

A.短语B.直接短语C.非终结符号D.终结符号

2.3给定文法A→bA|cc,____D____是该文法的句子。

A.ccbcB.bcbcC.cbcbD.bbcc

2.4程序设计语言中大多数的语法现象可用Chomsky的____C____文法表示。

A.0型(短语结构文法)B.1型(上下文有关文法)

C.2型(上下文无关文法)D.3型(正规文法)

2.5有限状态自动机可以识别的语言为____D____。

A.上下文有关语言B.上下文无关语言

C.短语文法定义的语言D.正规文法定义的语言

2.6有文法G:

S→AA,A→Aa|a。

G不是LL

(1)文法的理由是____C_____。

A.FIRST(S)∩FIRST(A)≠

B.FIRST(A)∩FOLLOW(A)≠

C.FIRST(Aa)∩FIRST(a)≠

D.都不是

2.7表达式的类型检查工作在______C_____阶段进行。

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

2.8编译器分析源程序时遇到的错误可分为语法错误和语义错误两类,____A_____。

A.表达式中括号不匹配是语法错误,运算对象与运算符号不匹配是语义错误

B.表达式中括号不匹配是语义错误,运算对象与运算符号不匹配是语法错误

C.表达式中括号不匹配和运算对象与运算符号不匹配都是语法错误

D.表达式中括号不匹配和运算对象与运算符号不匹配都是语义错误

2.9已知某高级语言源程序A经编译后得到机器C上的目标程序B,则A。

A.对B进行反编译,不能还原出源程序A

B.对B进行反汇编,不能得到与源程序A等价的汇编程序代码

C.对B进行反编译,得到的是源程序A的变量声明和算法流程

D.对A和B进行交叉编译,可以产生在机器C上运行的动态链接库

2.10集合

D。

A.可用正规式“

”表示

B.不能用正规式表示,但可用非确定的有限自动机识别

C.可用正规式“

”表示

D.不能用正规式表示,但可用上下文无关文法表示

三、简答题(30分)

3.1(5分)请分别写出传值调用、引用调用方式下,下面代码的输出结果。

programmain(input,output)

proceduref(a,b)

begin

a:

=b-a;

b:

=a*b+1;

end;

begin

x:

=5;y:

=10;

f(y,x);

print(x,y);

end.

传值调用方式:

510

引用调用方式:

-24-5

3.2(10分)请计算下面文法G(E)中各非终结符的FIRST和FOLLOW集合。

请说明该文法为什么不是LL

(1)文法。

G(E):

E→E*T|TT→T-F|FF→(E)|id

FIRST(F)=FIRST(T)=FIRST(E)={(,id}

FOLLOW(E)={#,*,)}FOLLOW(T)={-,*,#,)}FOLLOW(F)={-,*,#,)}

3.3(10分)下图所示的分析树用到了某个上下文无关文法的所有产生式。

(a)给出该文法的所有非终结符号集合N和终结符号集合T。

(b)给出该文法的产生式集合。

N={S,A,B}

T={a,b,c,d}

S→aAcB|BdA→AaB|cB→bScA|b|ε

3.4(5分)某程序执行到某一时刻时控制栈中的内容如下所示(其中M是主程序,P、Q、R、S均是过程),给出所有在生存期的活动的调用关系(提示:

若A调用B,则记为A→B)。

M→P→R→Q→S→S

3.1(10分)对下述C++程序,(a)指出各参数的传递方式;(b)给出程序的执行结果。

voidf(inta,int&b,int&c){c=c+10;b=a*b+c;}

voidmain()

{intx=10,y=25,z=0,t=0;

z=x+y*10;

f(x+y,x,z);cout<<"1:

"<

t=x+y;

f(t,x,z);cout<<"2:

"<

}

(a)参数a采用传值方式,参数b和c采用传引用方式

(b)1:

6202:

400180

3.2(10分)请简要说明进行自上而下的语法分析时,文法中为什么不能有左递归和公共左因子。

进行自上而下的语法分析时,若存在左递归,则可能在分析某些句子时陷入死循环;若存在公共左因子,则可能因为虚假匹配导致需要回溯,从而降低分析效率。

3.3(10分)举例说明下述文法G是二义的。

有哪些方法可以消除文法的二义性。

G:

S→aA|BbA→bA|εB→a

以句子“ab“为例,其分析树可有如下两种形式:

即句子“ab”存在不同的最左推导S=>aA=>abA=>ab和S=>Bb=>ab,因此文法G是二义的。

消除文法二义性的方法主要有两种:

一是改写文法为非二义的:

二是规定优先级和结合性,限

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

当前位置:首页 > 工程科技 > 电子电路

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

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