当前位置:文档之家› 编译原理模拟试题六

编译原理模拟试题六

《编译原理》模拟试题六一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。

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

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

(× )4.构造LR分析器的任务就是产生LR分析表。

(√)5.规范归约和规范推导是互逆的两个过程。

(× )6.同心集的合并有可能产生新的“移进”/“归约”冲突。

(× )7.LR分析技术无法适用二义文法。

(× )8.树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。

(×)9.程序中的表达式语句在语义翻译时不需要回填技术。

(√)10.对中间代码的优化依赖于具体的计算机。

(× )二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.编译程序绝大多数时间花在_____ 上。

A.( ) 出错处理 B.( ) 词法分析C.( ) 目标代码生成D.( ) 表格管理2.编译程序是对_____。

A.( ) 汇编程序的翻译 B.( ) 高级语言程序的解释执行C.( ) 机器语言的执行D.( ) 高级语言的翻译3.采用自上而下分析,必须_____。

A.( ) 消除左递归 B.( ) 消除右递归C.( ) 消除回溯 D.( ) 提取公共左因子4.在规范归约中,用_____来刻画可归约串。

A.( )直接短语B.( )句柄C.( )最左素短语D.( )素短语5.若a为终结符,则A->α ·aβ为_____项目。

A.( )归约B.( ) 移进C.( ) 接受D.( ) 待约6.间接三元式表示法的优点为_____。

A.( ) 采用间接码表,便于优化处理B.( ) 节省存储空间,不便于表的修改C.( ) 便于优化处理,节省存储空间 D.( ) 节省存储空间,不便于优化处理7.基本块内的优化为_____。

A. ( ) 代码外提,删除归纳变量B.( ) 删除多余运算,删除无用赋值C.( ) 强度削弱,代码外提 D.( ) 循环展开,循环合并8. 在目标代码生成阶段,符号表用_____。

A.( ) 目标代码生成B.( ) 语义检查C.( ) 语法检查D.( ) 地址分配9.若项目集Ik含有A->α·,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取“A->α ·”动作的一定是_____。

A. ( ) LALR文法 B.( ) LR(0)文法C.( ) LR(1)文法D.( ) SLR(1)文法10.堆式动态分配申请和释放存储空间遵守_____原则。

A. ( ) 先请先放 B.( ) 先请后放C.( ) 后请先放 D. ( ) 任意三、填空题(每空1分,共10分)1.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子。

2.语法分析基于__上下文无关___文法进行,即识别的是该类文法的句子。

语法分析的有效工具是__语法树___。

3.分析句型时,应用算符优先分析技术时,每步被直接归约的是__最左素短语___,而应用LR分析技术时,每步被直接归约的是___句柄__。

4.语义分析阶段所生成的与源程序等价的中间表示形式可以有__逆波兰___、___四无式表示__与___三元式表示__等。

5.按Chomsky分类法,文法按照___规则定义的形式__进行分类。

6.一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有___递归__定义的规则。

四、简答题(20分)1. 文法 G[S] 为:S->Ac|aBA->abB->bc写出 L(G[S]) 的全部元素。

解:S=>Ac=>abc或S=>aB=>abc所以L(G[S])={abc}2. 构造正规式 1(0|1)*101 相应的DFA。

解:先构造NFA:确定化:重新命名,令AB为B、AC为C、ABY为D得:所以,可得DFA为:3. 文法S->a|^|(T)T->T,S|S对 (a,(a,a) 和 (((a,a),^,(a)),a) 的最左推导。

解:对(a,(a,a)的最左推导为:S=>(T) =>(T,S) =>(S,S) =>(a,S)=>(a,(T)) =>(a,(T,S)) =>(a,(S,S))=>(a,(a,S)) =>(a,(a,a))对(((a,a),^,(a)),a) 的最左推导为:S=>(T) =>(T,S) =>(S,S) =>((T),S)=>((T,S),S) =>((T,S,S),S) =>((S,S,S),S)=>(((T),S,S),S) =>(((T,S),S,S),S) =>(((S,S),S,S),S)=>(((a,S),S,S),S) =>(((a,a),S,S),S) =>(((a,a),^,S),S)=>(((a,a),^,(T)),S) =>(((a,a),^,(S)),S) =>(((a,a),^,(a)),S) =>(((a,a),^,(a)),a)4. 文法:S->MH|aH->LSo| εK->dML| εL->eHfM->K|bLM判断 G 是否为 LL(1) 文法,如果是,构造 LL(1) 分析表。

解:各符号的FIRST集和FOLLOW集为:预测分析表为:由于预测分析表中无多重入口,所以可判定文法是LL(1)的。

五.计算题(10分)已知文法 G[S] 为:S->a|^|(T)T-> T,S|S(1) 计算 G[S] 的 FIRSTVT 和 LASTVT 。

(2) 构造 G[S] 的算符优先关系表并说明 G[S] 是否未算符优先文法。

(3) 计算 G[S] 的优先函数。

(4) 给出输入串 (a,a)# 的算符优先分析过程。

解:(1)各符号的FIRSTVT和LASTVT:(2)算符优先关系表:(3)对应的算符优先函数为:(4)句子(a,a)#分析过程如下:一、选择题(每个选择题 2 分,共 20 分)1 .文法 G 产生的⑴ 的全体是该文法描述的语言。

A .句型 B. 终结符集 C. 非终结符集 D. 句子2 .若文法 G 定义的语言是无限集,则文法必然是⑵ :A .递归的B 前后文无关的C 二义性的D 无二义性的3 . Chomsky 定义的四种形式语言文法中, 0 型文法又称为⑶ 文法; 1 型文法又称为⑷ 文法; 2 型语言可由⑸ 识别。

A .短语结构文法B 前后文无关文法C 前后文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4 .一个文法所描述的语言是⑹ ;描述一个语言的文法是⑺ 。

A .唯一的B 不唯一的C 可能唯一,好可能不唯一5 .数组的内情向量中肯定不含有数组的⑻ 的信息A.维数 B.类型 C.维上下界 D.各维的界差6 .在下述的编译方法中,自底向上的方法有⑼ ,自顶向下的分析方法有⑽ 。

①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR (K)分析⑥ SLR(k)分析⑦ LL(k)分析⑧LALR(K)分析A.③④⑦B. ③④⑧C.①②⑧D.③④⑤⑥⑦E.①②⑤⑥⑦F. ①②⑤⑥⑧二、简答题(每小题 5 分,共 20 分)1 . LL ( 1 )分析法对文法有哪些要求2 .常见的存储分配策略有几种它们都适合于什么性质的语言3 .常见循环优化都有哪些项目4 .什么是活动记录它主要由哪些内容构成三、( 8 分)化简文法 G[S] :S → ASe | BCaD | aD | ACA → Cb | DBSC → bC | dB → AcD → aD四、( 12 分)设L í {a,b,c}* 是满足下述条件的符号串构成的语言:(1)若出现 a ,则其后至少紧跟两个 c ;(2)若出现 b ,其后至少紧跟一个 c 。

试构造识别 L 的最小化的 DFA ,并给出描述 L 的正规表达式。

五、( 12 分)已给文法 G[S] :S → SaP | Sf | P P → qbP | q 将 G[S] 改造成 LL ( 1 )文法,并给出 LL ( 1 )分析表。

六、( 12 分)给定文法 G[S] :S → Aa|dAb|Bb|dBa A → c B → c 构造文法 G[S] 的 LR ( 1 )分析表。

七、( 8 分)将下面的条件语句表示成逆波兰式和四元式序列:if a>b then x:=a+b*c else x:=b-a;八、( 8 分)给定基本块:A:=3*5B:=E+FC:=A+12D:=E+FA:=D+12C:=C+1E:=E+F假定出基本块后,只有 A 、 C 、 E 是活跃的,给出用 DAG 图完成优化后的代码序列。

参考答案:一、⑴ D ⑵ A ⑶ A ⑷ C ⑸ G. ⑹ A ⑺ B ⑻ A ⑼ F ⑽ A二、 1 .对于 G 中的每个产生式 A →γ 1 | γ 2 | … | γ m ,其各候选式均应满足:(1)不同的候选式不能推出以同一终结符号打头的符号串,即FIRST( γ i ) ∩ FIRST( γ j )= φ( 1 ≤ i ,j ≤ m ;i ≠ j )(2)若有γ j ε,则其余候选式γ i 所能推出的符号串不能以 FOLLOW(A) 中的终结符号开始,即有FIRST( γ i ) ∩ FOLLOW(A)= φ(i ≤ 1,2, … ,m ;i ≠ j )2 .有三种分配存储空间的方式:( 1 )静态分配若在编译阶段就能确定源程序中各个数据实体的存储空间大小,则可以采用较简单的静态存储管理。

适合静态管理的语言应具备条件:数组上下界是常数、过程调用不允许递归、不允许动态建立数据实体。

( 2)栈式分配适用于允许递归调用的程序设计语言;(3 )堆式分配对于允许程序在运行时为变量动态申请和释放存储空间的语言,采用堆式分配是最有效的解决方案。

3 .不变运算外提;运算强度削弱;消除归纳变量;下标变量地址计算优化。

4 .一个过程的一次执行所需信息的管理,是通过称为活动记录的连续存储块来实现的。

活动记录的主要内容有:( 1)临时变量域存放目标程序临时变量的值;( 2 )局部数据域存放过程本次执行时的局部数据、简单变量及数组内情向量等;( 3 )机器状态域保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返回地址等;( 4 )存取链为访问其它活动记录中所存放的非局部数据所提供的链地址;(5 )控制链指向主调过程的活动记录;(6 )实参存放主调过程为被调用过程所提供的实参信息;( 6 )返回值为主调过程存放被调过程的返回值三、化简后:S → ASe|AC A → Cb C → bC | d四、 DFA 如图所示。

相关主题