文档详情

编译原理模拟题

痛***
实名认证
店铺
DOC
218.50KB
约12页
文档ID:159399572
编译原理模拟题_第1页
1/12

一、        填空题(每空1分,共20分)1.编译过程一般分为 词法分析 、语法分析、中间代码生成、代码优化和目标代码生成五个阶段2.语法分析最常用的两类方法是自上而下 和 自下而上 分析法3.确定的有穷自动机是一个 五元组  ,通常表示为 DFA=(K , ∑, M, S, Z) 4.所谓最右推导是指    任何一步都是对中最右非终结符进行替换   5.语法分析器的任务是 分析一个文法的句子结构6.如果一个文法的任何产生式的右部都不含有相邻的非终结符,则这种文法称为 算符 文法7.进行确定的自上而下语法分析要求语言的文法是无 左递归 和 公共左因子 的8.LR分析法是一种   自下而上     的语法分析方法9.根据优化对象所涉及的程序范围,代码优化分为 局部优化 、循环优化和 局部优化 等10.常用的优化技术包括: 删除公共子表达式 、 代码外提    、强度削弱、复写传播、  变换循环控制条件 等合并已知量、删除无用赋值)二、是非题(下列各题,你认为正确的,请在题后的括号内打“ √”,错的打“×”每题2分,共20分)  1.正规文法产生的语言都可以用上下文无关文法来描述。

 ×  )2.仅考虑一个基本块,不能确定一个赋值是否真是无用的 √  )3.如果一个文法是递归的,则其产生的语言的句子是无穷个 (√  )4.四元式之间的联系是通过符号表实现的 ×  )5.文法的二义性和语言的二义性是两个不同的概念 (  √ )6.一个LL( l)文法一定是无二义的 ( √   )7.在规范规约中用最左素短语来刻划可归约串  ×  )8.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题 ( √  )9.编译程序是对汇编程序的翻译  ( × )10.逆波兰法表示的表达式亦称前缀式   (  ×  )三、        简答题(每题5分,共15分)1、简述栈式存储管理策略;   2、何谓DAG;   3、何谓文法的二义性;四、        给出下述文法对应的正规式   (7分) S→ 0A| 1B A→1S | 1 B→0S | 0解:首先得正规式方程组:                S=0A+1B                A=1S+1                B=0S+0       求解该方程组得: S=(01|10)(01|10)*    五、           已知文法G(E): (2分)是文法G[S]的句型。

    E→T | E+T | E-T 短语:E+T*F,  T*F  (2分)T→F | T*F | T/F 直接短语:T*F      (2分)F→(E) | I   句柄:T*F          (2分)证明E+T*F是该文法的一个句型,并指出该句型的所有短语、直接短语和句柄8分)1. 何谓二义性文法?试举一例说明5%)答:若文法G的一个句子对应有两棵或两棵以上不同的推导树,则称该句子是二义性的产生二义性句子的文法称为二义性文法,否则该文法是无二义性的 例子:给定文法G[]:*||a|b考察句子ab*,它有两棵不同的推导树,如下所示:《编译原理》模拟试题一一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.计算机高级语言翻译成低级语言只有解释一种方式×)2.在编译中进行语法检查的目的是为了发现程序中所有错误×)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同 (√ )4.正则文法其产生式为 A->a , A->Bb,  A,B∈VN , a 、 b∈VT 。

(×)5.每个文法都能改写为 LL(1) 文法 (√)6.递归下降法允许任一非终极符是直接左递归的 (√)7.算符优先关系表不一定存在对应的优先函数 (×)8.自底而上语法分析方法的主要问题是候选式的选择 (×)9.LR 法是自顶向下语法分析方法 (×)10.简单优先文法允许任意两个产生式具有相同右部 (×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1. 一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码优化,目标代码生成等五个部分 A.( ) 语法分析   B.( )文法分析  C.( )语言分析 D.( )解释分析2. 词法分析器用于识别_____   A.( ) 字符串      B.( )语句 C.( )单词      D.( )标识符3. 语法分析器则可以发现源程序中的_____ A.( ) 语义错误     B.( ) 语法和语义错误 C.( ) 错误并校正    D.( ) 语法错误4. 下面关于解释程序的描述正确的是_____  (1) 解释程序的特点是处理程序时不产生目标代码   (2) 解释程序适用于 COBOL 和 FORTRAN 语言   (3) 解释程序是为打开编译程序技术的僵局而开发的    A.( ) (1)(2)   B.( ) (1)   C.( ) (1)(2)(3)    D.( ) (2)(3)5. 解释程序处理语言时 , 大多数采用的是_____方法。

 A.( ) 源程序命令被逐个直接解释执行      B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行       D.( ) 以上方法都可以6. 编译过程中 , 语法分析器的任务就是_____  (1) 分析单词是怎样构成的     (2)  分析单词串是如何构成语句和说明的   (3) 分析语句和说明是如何构成程序的   (4) 分析程序的结构  A.( ) (2)(3)          B.( ) (2)(3)(4) C.( ) (1)(2)(3)         D.( ) (1)(2)(3)(4)7. 编译程序是一种_____ A. ( ) 汇编程序     B.( ) 翻译程序        C.( ) 解释程序         D.( ) 目标程序8. 文法 G 所描述的语言是_____的集合  A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串9. 文法分为四种类型,即0型、1型、2型、3型。

其中3型文法是_____ A. ( ) 短语文法        B.( ) 正则文法      C.( ) 上下文有关文法   D.( ) 上下文无关文法10. 一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 _____ A.( ) 句子     B.( ) 句型 C.( ) 单词     D.( ) 产生式2.文法分为四种类型,即0型、1型、2型、3型其中0型文法是_____ A. ( ) 短语文法        B.( ) 正则文法      C.( ) 上下文有关文法   D.( ) 上下文无关文法3.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 _____  A.( ) 句子     B.( ) 句型  C.( ) 单词     D.( ) 产生式4._____是一种典型的解释型语言   A.( ) BASIC   B.( ) C   C.( ) FORTRAN    D.( ) PASCAL5.与编译系统相比,解释系统_____ A.( ) 比较简单 , 可移植性好 , 执行速度快    B.( ) 比较复杂 , 可移植性好 , 执行速度快   C.( ) 比较简单 , 可移植性差 , 执行速度慢    D.( ) 比较简单 , 可移植性好 , 执行速度慢 6.用高级语言编写的程序经编译后产生的程序叫_____。

   A.( ) 源程序       B.( ) 目标程序      C.( ) 连接程序   D.( ) 解释程序7.词法分析器用于识别_____    A. ( ) 字符串       B.( ) 语句          C.( ) 单词        D.( ) 标识符 8.编写一个计算机高级语言的源程序后 , 到正式上机运行之前,一般要经过_____这几步:  (1) 编辑   (2) 编译   (3) 连接   (4) 运行  A. ( ) (1)(2)(3)(4)     B.( ) (1)(2)(3)    C.( ) (1)(3)     D.( ) (1)(4)9.把汇编语言程序翻译成机器可执行的目标程序的工作是由_____完成的 A.( ) 编译器            B.( ) 汇编器             C.( ) 解释器            D.( ) 预处理器10.文法 G 所描述的语言是_____的集合  A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串三、填空题(每空1分,共10分)1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__表格处理___和 ___出错处理__。

2.若源程序是用高级语言编写的,___目标程序__是机器语言程序或汇编程序,则其翻译程序称为 ___编译程序__ 3.编译方式与解释方式的根本区别在于__是否生成目标代码___4.对编译程序而言,输入数据是___源程序__, 输出结果是__目标程序___5.产生式是用于定义___语法成分__的一种书写规则 6.语法分析最常用的两类方法是___自上而下__和___自下而上__分析法 1.语法分析是依据语言的__语法___规则进行的,中间代码产生是依据语言的__语义___规进行的2.语法分析器的输入是__单词符号串___,其输出是__语法单位___3.一个名字的属性包括__类型___和__作用域___5.逆波兰式 ab+c+ d*e- 所表达的表达式为__(a+b+c)*d-e___ 1.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子 2.语法分析基于__上下文无关___文法进行,即识别的是该类文法的句子语法分析的有效工具是__语法树___3.分析句型时,应用算符优先分析技术时,每步被直接归约的是__最左素短语___,而应用LR分析技术时,每步被直接归约的是___句柄__。

4.语义分析阶段所生成的与源程序等价的中间表示形式可以有__逆波兰___、___四无式表示__与___三元式表示__等5.按Chomsky分类法,文法按照___规则定义的形式__进行分类 6.一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有___递归__定义的规则 四、简答题(20分)1. 什么是句子? 什么是语言 ? 答:(1)设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子 (2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为: L(G)={x│S x,x∈VT*} 参考答案:(每个2分,共4分)答:(1)设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子 (2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为: L(G)={x│S x,x∈VT*} 2. 写一文法,使其语言是偶正整数的集合,要求:    (1)允许0打头;   (2) 不允许0打头解:(1)G[S]=({S,P,D,N},{0,1,2,…,9},P,S) P: S->PD|D P->NP|N D->0|2|4|6|8 N->0|1|2|3|4|5|6|7|8|9 (2)G[S]=({S,P,R,D,N,Q },{0,1,2,…,9},P,S) P: S->PD|P0|D P->NR|N R->QR|Q D->2|4|6|8 N->1|2|3|4|5|6|7|8|9 Q->0|1|2|3|4|5|6|7|8|9 3. 已知文法 G[E] 为:     E→T|E+T|E-T     T→F|T*F|T/F     F→ ( E ) |i ① 该文法的开始符号(识别符号)是什么? ② 请给出该文法的终结符号集合 VT 和非终结符号集合 VN 。

③ 找出句型 T+T*F+i 的所有短语、简单短语和句柄解:① 该文法的开始符号(识别符号)是E ②该文法的终结符号集合VT={+、-、*、/、(、)、i} 非终结符号集合VN={E、T、F} ③句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i; 简单短语为i、T*F、第一个T;句柄为第一个T4. 构造正规式相应的 NFA : 1(0|1)*101 解1(0|1)*101对应的NFA为 5. 写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列逆波兰表示:      abc*+ab+/d-          三元式序列:       ① (*,b,c)       ② (+,a,①)    ③ (+,a,b)    ④ (/,②,③)       ⑤ (-,④,d)五.计算题(10分)构造下述文法 G[S] 的自动机: S->A0 A->A0|S1|0 该自动机是确定的吗?若不确定,则对它确定化解:由于该文法的产生式S->A0,A->A0|S1中没有字符集VT的输入,所以不是确定的自动机 要将其他确定化,必须先用代入法得到它对应的正规式把S?A0代入产生式A?S1有:A=A0|A01|0=A(0|01)|0=0(0|01)*。

代入S->A0有该文法的正规式:0(0|01)*0,所以,改写该文法为确定的自动机为: 由于状态A有3次输入0的重复输入,所以上图只是NFA,下面将它确定化: 下表由子集法将NFA转换为DFA: 由上表可知DFA为:四、简答题(20分)1. 文法 G[S] 为: S->Ac|aB A->ab B->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|a H->LSo| ε K->dML| ε L->eHf M->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)#分析过程如下: 。

下载提示
相关文档
正为您匹配相似的精品文档