最新《编译原理与技术》期末考试试卷答案 05(软件学院)
- 格式:doc
- 大小:63.00 KB
- 文档页数:4
编译原理期末考试试题及答案一、选择题(每题2分,共20分)1. 编译器的前端主要负责以下哪项工作?A. 代码优化B. 目标代码生成C. 词法分析和语法分析D. 运行时支持2. 词法分析器的主要任务是什么?A. 识别语法结构B. 识别词法单元C. 构建语法树D. 代码优化3. 语法分析中,使用哪种方法可以避免回溯?A. 递归下降分析B. LR分析C. LL分析D. 自顶向下分析4. 下列哪个选项不是中间代码的形式?A. 三地址代码B. 四元组C. 抽象语法树D. 汇编语言5. 代码优化的目标不包括以下哪项?A. 提高代码执行速度B. 减少程序占用的内存C. 增加程序的可读性D. 减少程序的执行时间二、简答题(每题10分,共30分)1. 简述编译器的主要组成部分及其功能。
2. 解释什么是语法制导翻译,并举例说明其在编译过程中的应用。
3. 描述静态作用域规则和动态作用域规则的区别。
三、计算题(每题15分,共30分)1. 给定一个简单的算术表达式 `3 + (4 * 5) - 2`,请使用逆波兰表示法表示,并说明其转换过程。
2. 假设有一个简单的文法如下:```S -> A BA -> a A | εB -> b B | ε```请写出使用该文法生成字符串 "ab" 的所有派生树。
四、论述题(每题20分,共20分)1. 论述编译器中代码优化的重要性,并举例说明常见的优化技术。
参考答案一、选择题1. C2. B3. B4. D5. C二、简答题1. 编译器的主要组成部分包括前端、中端和后端。
前端负责词法分析和语法分析,中端进行语义分析和中间代码生成,后端则负责代码优化和目标代码生成。
2. 语法制导翻译是一种基于文法规则的翻译技术,它将源程序的语法结构映射到相应的语义操作上。
例如,在编译过程中,语法制导翻译可以用于将源代码中的条件语句转换为中间代码中的跳转指令。
3. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。
编译原理期末考试习题及答案⼀、填空题|(每题4分,共20分)1. 乔母斯基定义的3型⽂法(线性⽂法)产⽣式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。
2.语法分析程序的输⼊是单词符号,其输出是语法单位。
3 型为 B → .aB 的LR(0)项⽬被称为移进项⽬,型为 B → a.B 的LR(0)项⽬被称为待约项⽬,4.在属性⽂法中⽂法符号的两种属性分别为继承属性和综合属性。
5、运⾏时存贮管理⽅案有静态存储分配、动态存储分配和堆式存储分配和⽅案。
⼆.已知⽂法 G(S)(1) E → T | E+T(2) T → F | F*F(3) F →(E)| i(1)写出句型(T*F+i)的最右推到并画出语法树。
(4分)(2)写出上述句型的短语,直接短语和句柄。
(4分)答:(1)最右推到(2分)E ==> T ==>F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i)(2) 语法树(2分)(3)(4分)短语:(T*F+i),T*F+i ,T*F , i直接短语:T*F , i句柄:T*F三. 证明⽂法G(S) :S → SaS |ε是⼆义的。
(6分)答:句⼦aaa对应的两颗语法树为:因此,⽂法是⼆义⽂法四.给定正规⽂法G(S):(1) S → Sa | Ab |b(2) A → Sa请构造与之等价的DFA。
(6分)答:对应的NFA为:(6分)五. 构造识别正规语⾔b*a(bb*a)*b* 最⼩的DFA(要求写出求解过程)。
(15分)答:(1)对应的NFA(5分)(5分)六. 已知⽂法G(S) :(1) S → ^ | a | (T)(2) T → T,S | S试:(1)消除⽂法的左递归;(4分)(2)构造相应的first 和 follow 集合。
(6分)答:(1)消除⽂法的左递归后⽂法 G’(S)为:(1) S → ^ | a | (T)(2) T → ST’ | S(3) T ’ → ,ST ’ |ε(4分)七. 已知⽂法 G(S) :(1) S → SiA | A(2) A → A+B | B(3) B → A* | (试构造⾮终⽌符的firstVT 和lastVT 集合。
参考答案及评分标准一、填空(15分,每空1分)1.高级,低级2.源程序,单词3.自顶向下4.综合,继承5.结构,名称6.非局部名字访问,参数传递7.上下文有关,上下文无关,正规8.abcd+*+二、(15分)答:正规表达式(4)代表了这个程序段所有可能走过的全部步序列(5分)把A,T,B,I分别代表相应的基本块,E表示程序段的出口,则程序段可以表示为如下的流(程)图:(5分)转换为等价的确定状态自动机如下:由上述确定状态自动机可以得到等价的正规表达式为:AT(BIT)*(5分)如果没有画流程图而直接给出自动机可以给分。
既没有画流程图,也没有画自动机,可以根据描述的理由是否能说明清楚酌情给分。
三、(20分)答:1.FIRST(S)={a,b} FOLLOW(S)={$}FIRST(A)={a,b} FOLLOW(A)={b,$}FIRST(B)={b,ε} FOLLOW(B)={c,$}(6分,每个1分)。
23.分析符号串baabbb是否为该文法的句子的过程如下表所示:(7分)步骤栈输入串输出1$S baabbb$2$BAb baabbb$S →bAB 3$BA aabbb$4$BbAa aabbb$ A →aAb 5$BbA abbb$6$BbbAa abbb$ A →aAb 7$BbbA bbb$8$Bbbb bbb$ A →b9$Bbb bb$10$Bb b$11$B$12$$ B →ε四、(25分)答:1.文法G的拓广文法G`如下:(10分)S`→SS →Aa∣dAb∣Bb∣dBaA →cB →c构造识别所有活前缀的确定有限状态自动机(DFA)如下:3.由识别所有活前缀的确定有限状态自动机(DFA)可知,存在同心集I5和I10,合并后的LR(1)项目集为:{A →c, a/b B →c, a/b},可见在该项目集中存在归约-归约冲突,因此该文法不是LALR(1)文法。
(5分)五、(10分,每小题5分)答:1.A:array(1..100, record((x×integer)×(y×char)))2.func:integer×(integer→pointer(integer))→record((i×integer)×(c×char))六、(15分)答:当分析器的输入为aacbb时翻译结果是:12020(5分)方法一:aacbb的分析树如下:Aa BAa BA bc由于分析器采用移进-归约的方式进行,归约时使用产生式的顺序为:A →c,B →Ab,A →aB,B →Ab,A →aB,因此打印结果为:12020。
北京语言大学22春“计算机科学与技术”《编译原理》期末考试高频考点版(带答案)一.综合考核(共50题)1.非终结符可以有综合属性,但不能有继承属性。
()A.错误B.正确参考答案:A2.自顶向下分析包括请确定分析和不确定分析。
()A.错误B.正确参考答案:A3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
()A.错误B.正确参考答案:A4.栈式存储分配策略是指运行时每当进入一个过程,就在栈顶为该过程分配所需的数据空间,当一个过程工作完毕返回时,它在栈顶的数据空间也释放。
()A.错误B.正确参考答案:B5.语法分析所依据的是语言的语法规则,即描述程序结构的规则。
()参考答案:B6.一个预测分析器是有三部分组成:预测分析程序,先进后出栈,预测分析表。
()A.错误B.正确参考答案:B7.静态数据区用于可变数据以及管理过程活动的控制信息。
()A.错误B.正确参考答案:A8.一个有限状态自动机中,有且仅有一个唯一的终态。
()A.错误B.正确参考答案:A9.一个确定有穷自动机有且只有一个终态。
()A.错误B.正确参考答案:A10.SLR(1)文法,其思想是基于容许LR0规范族中有冲突的项目集(状态)用向前查看一个符号的办法来进行处理,以解决冲突。
()A.错误参考答案:B11.数组元素的地址计算与数组的存储方式有关。
()A.错误B.正确参考答案:A12.过程调用的实质是把程序控制转移到子程序(过程段)。
()A.错误B.正确参考答案:B13.递归下降分析法是自顶向下分析方法。
()A.错误B.正确参考答案:B14.一个分程序是一个含有它自己的局部数据(变量)声明的语句。
()A.错误B.正确参考答案:B15.解释程序适用于COBOL和FORTRAN语言。
()A.错误B.正确16.所有的编译程序都需要生成中间代码。
()A.错误B.正确参考答案:A17.循环优化的重要技术有()。
A.代码外提B.删除归纳变量C.强度削弱D.局部优化参考答案:ABC18.全局优化是在整个程序范围内进行的优化。
第 0 页共 16 页一.填空题(每空2分,共20分) 1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静态存储分配方案和动态存储分配方案,而后者又分为(1)和(2)。
2. 规范规约是最(3)规约。
3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4)、语义分析与中间代码生成,代码优化及(5)。
另外还有(6)和出错处理。
4.表达式x+y*z/(a+b)的后缀式为(7)。
5.文法符号的属性有综合属性和(8)。
6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。
7.局部优化是局限于一个(10)范围内的一种优化。
二.选择题(1-6为单选题,7-8为多选题,每问2分,共20分)1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个(),以及一组()。
A .字符串B .产生式C .开始符号D .文法2.程序的基本块是指()。
A .一个子程序B .一个仅有一个入口和一个出口的语句C .一个没有嵌套的程序段D .一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法。
A .自左向右 B .自顶向下 C .自底向上 D .自右向左 4.在通常的语法分析方法中,()特别适用于表达式的分析。
A .算符优先分析法 B . LR 分析法 C .递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是()。
A .四元式序列B .间接三元式序列C .二元式序列D .机器语言程序或汇编语言程序 6.一个文法所描述的语言是();描述一个语言的文法是()。
A .唯一的 B .不唯一的 C .可能唯一,也可能不唯一7.如果在文法G 中存在一个句子,当其满足下列条件()之一时,则称该文法是二义文法。
《编译原理》模拟试题一一、是非题(请在括号内,正确的划错误的划X)(每个2分,共20分)1•计算机高级语言翻译成低级语言只有解释一种方式。
(X)2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(X)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(丁 )4.正则文法其产生式为A->a , A->Bb, A.BGVN , a、beVT o (X)5.每个文法都能改写为LL(1)文法。
(V)6.递归下降法允许任一非终极符是直接左递归的。
(V)7.算符优先关系表不一定存在对应的优先函数。
(X)8.自底而上语法分析方法的主要问题是候选式的选择。
(X)9.LR法是自顶向下语法分析方法。
(X)10.简单优先文法允许任意两个产生式具有相同右部。
(X)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.一个编译程序中,不仅包含词法分析,_____ ,中间代码生成,代码优化,目标代码生成等五个部分。
A.()语法分析B.()文法分析C.()语言分析D.()解释分析2.词法分析器用于识别_____ oA.()字符串B.()语句C.()单词D.()标识符3 •语法分析器则可以发现源程序中的______ oA.()语义错误B.()语法和语义错误C.()错误并校正D.()语法错误4.下面关于解释程序的描述正确的是。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. ( ) (1) (2)B. () (1)C. () (1)⑵(3)D.()⑵⑶5. _________________________________________ 解释程序处理语言时,大多数采用的是 ___________________________________ 方法。
编译原理期末试题(含答案+大题集+重要知识点)《编译原理》期末试题一、是非题 1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×) 3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ ) 4.语法分析时必须先消除文法中的左递归。
(×) 5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√) 6.逆波兰表示法表示表达式时无须使用括号。
(√ ) 7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× ) 10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置 C.( ) 单词的种别编码和自身值 D.( ) 单词自身值 2.正规式 M 1 和 M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等 C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等 3.文法G:S →xSx|y所识别的语言是_____。
第1页共6页A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx* 4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同 5.构造编译程序应掌握______。
《编译原理》期末试题(五)一、单项选择题(共10小题,每小题2分,共20分)1.语言是A.句子的集合B.产生式的集合C.符号串的集合D.句型的集合2.编译程序前三个阶段完成的工作是A.词法分析、语法分析和代码优化B.代码生成、代码优化和词法分析C.词法分析、语法分析、语义分析和中间代码生成D.词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A.非终结符号B.短语C.句子D.直接短语4.下推自动机识别的语言是A.0型语言B.1型语言C.2型语言D.3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A.字符B.单词C.句子D.句型6.对应Chomsky四种文法的四种语言之间的关系是A.L0⊂L1⊂L2⊂L3 B.L3⊂L2⊂L1⊂L0C.L3=L2⊂L1⊂L0D.L0⊂L1⊂L2=L37.词法分析的任务是A.识别单词B.分析句子的含义C.识别句子D.生成目标代码8.常用的中间代码形式不含A.三元式B.四元式C.逆波兰式D.语法树9.代码优化的目的是A.节省时间B.节省空间C.节省时间和空间D.把编译程序进行等价交换10.代码生成阶段的主要任务是A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。
5.对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。
编译原理期末复习题及答案# 一、选择题1. 编译程序的前端主要完成以下哪项工作?A. 代码优化B. 目标代码生成C. 词法分析D. 运行时支持答案:C2. 语法分析中,用于表示语法规则的是:A. 正则表达式B. 语法树C. 产生式D. 语法图答案:C3. 语义分析的主要任务是:A. 识别词法单位B. 构建语法树C. 确定语法单位的意义D. 生成中间代码答案:C4. 下列哪一项不是中间代码的形式?A. 三地址代码B. 四元组C. 抽象语法树D. 汇编语言答案:D5. 代码优化的目的是:A. 增加程序的可读性B. 减少程序的运行时间C. 提高程序的执行安全性D. 增强程序的可移植性答案:B# 二、简答题1. 简述词法分析的主要任务和实现方法。
答案:词法分析的主要任务是将源程序文本分解成一系列的词法单元,即标记。
实现方法通常包括模式匹配和状态转换,使用有限自动机(如正则表达式引擎)来识别词法单元。
2. 描述语法分析的过程,并解释递归下降分析法。
答案:语法分析是将词法分析得到的标记序列转换成一个语法树的过程。
递归下降分析法是一种自顶向下的语法分析方法,它通过递归调用分析函数,根据当前的输入符号和语法规则来决定下一步的分析动作。
3. 解释代码优化中的“死码消除”是什么,并给出一个例子。
答案:死码消除是一种代码优化技术,用于删除程序中不再使用的代码,这些代码对程序的输出没有影响。
例如,如果一个变量的值在赋值后不再被使用,那么这个赋值语句就是死码,可以被消除。
# 三、计算题1. 给定一个简单的算术表达式 `a + b * c`,请使用递归下降分析法生成其语法树。
答案:首先识别 `a` 和 `b` 为因子,然后识别 `*` 为乘法操作符,接着识别 `c` 为因子。
根据运算符优先级,先计算 `b * c`,再与 `a` 相加。
语法树结构如下:```+/ \a */ \b c```2. 给定一个简单的三地址代码序列 `[1] = a + [2]`,`[2] = b * c`,请转换为四元组形式。
编译原理期末试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将()代码转换成()代码。
A. 高级语言,低级语言B. 高级语言,机器语言C. 汇编语言,机器语言D. 机器语言,汇编语言答案:B2. 编译过程中,词法分析的输出是()。
A. 语法树B. 语法分析表C. 词法单元D. 抽象语法树答案:C3. 在编译原理中,语法分析通常采用()方法。
A. 递归下降分析B. 动态规划C. 贪心算法D. 回溯算法答案:A4. 语义分析的主要任务是()。
A. 检查语法错误B. 生成中间代码C. 检查语义错误D. 优化代码答案:C5. 编译器的优化通常发生在()阶段。
A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D6. 编译器的前端主要负责()。
A. 代码生成B. 代码优化C. 语法分析D. 目标代码生成答案:C7. 编译器的后端主要负责()。
A. 代码生成B. 代码优化C. 语法分析D. 词法分析答案:A8. 编译原理中,LL(1)分析方法的特点是()。
A. 左到右,最右推导B. 左到右,最左推导C. 右到左,最右推导D. 右到左,最左推导答案:B9. 编译原理中,LR(1)分析方法的特点是()。
A. 左到右,最右推导B. 左到右,最左推导C. 右到左,最右推导D. 右到左,最左推导答案:B10. 编译原理中,语法制导翻译的主要思想是()。
A. 根据语法树的结构进行翻译B. 根据词法单元进行翻译C. 根据语法分析表进行翻译D. 根据语义分析表进行翻译答案:A二、填空题(每题2分,共20分)1. 编译器中,用于表示语法规则的产生式通常由非终结符、产生符号和()组成。
答案:产生式右侧2. 在编译原理中,一个文法是()的,如果它的任何两个产生式都不会导致相同的句柄。
答案:无二义性3. 编译器的词法分析阶段通常使用()算法来识别和分类词法单元。
答案:有限自动机4. 语法分析阶段,如果一个文法是左递归的,编译器需要使用()技术来消除左递归。
一、单选题1、编译程序是一种( )。
A.汇编程序B.目标程序C.翻译程序D.解释程序正确答案:C2、若文法G定义的语言是无限集,则文法必然是( )。
A.二义性的B.上下文无关的C.递归的D.无二义性的正确答案:C3、一个上下文无关文法G包括四个组成部分,它们是一组非终结符号,一组终结符号,一个开始符号,以及一组( )。
A.句子B.单词C.产生式D.句型正确答案:C4、文法G:S →x xS | y 所识别的语言是( )。
A.xxy∗B. xx∗yxC.(xxy)∗D.(xx)∗y正确答案:D5、文法G:S →xS | y 所识别的语言是( )。
A.(xy)∗B.xy∗C.x∗yD. xx∗yx正确答案:C6、在自上而下的语法分析中,应从( )开始分析。
A.句型B.句子C.文法开始符号D.句柄正确答案:C7、语法分析器的输入是()。
A.符号表B.目标程序C.源程序D.Token序列正确答案:D8、LL(1)分析法中“1”的含义是在输入串中查看一个输入符号,其目的是()。
A.确定最左推导B.确定是否推导C.确定句柄D.确定使用哪一个产生式进行展开正确答案:D9、同正规式(a|b)∗等价的正规式为( )。
A.a∗|b∗B.(a|b)+C.(ab)∗D.(a∗|b∗)+正确答案:D10、已知文法G[S]:S→A1,A→A1|S0|0,与G等价的正规式是( )。
A.1∗|0∗1B.0(1|10)∗1C.0(0|1)∗D.1(10|01)∗0正确答案:B11、与(a|b)∗(a|b)等价的正规式是( )。
A.a∗|b∗B.(ab)∗(a|b)C.(a|b)(a|b)∗D.(a|b)∗正确答案:C12、如果一个正规式所代表的集合是无穷的,则它必含有的运算是( )。
A.接运算“·”B.或运算“|”C.括号“(”和“)”D.闭包运算“* ”正确答案:D13、在语法分析处理中,FIRST集合、FOLLOW集合均是( )。
编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将高级语言源程序转换成机器语言目标程序。
(对/错)答案:对2. 编译过程中,词法分析器的主要任务是识别源程序中的各种词法单位。
(对/错)答案:对3. 在语法分析阶段,编译器使用的数据结构是栈。
(对/错)答案:错4. 语义分析的主要目的是检查程序的语法结构是否正确。
(对/错)答案:错5. 编译器的优化阶段可以提高目标程序的执行效率。
(对/错)答案:对6. 编译器的代码生成阶段负责将中间代码转换为目标代码。
(对/错)答案:对7. 编译器的运行时系统包括内存管理、输入输出处理等功能。
(对/错)答案:对8. 编译器的前端主要负责源程序的分析,后端负责目标代码的生成。
(对/错)答案:对9. 编译器的词法分析阶段不涉及对标识符的识别。
(对/错)答案:错10. 编译器的语法分析阶段可以识别出所有的语法错误。
(对/错)答案:对二、填空题(每题2分,共20分)1. 编译器在进行语法分析时,通常采用________算法。
答案:LL(1)或LR(1)2. 编译器在语义分析阶段,需要对变量的________进行检查。
答案:作用域和生命周期3. 编译器在代码优化阶段,常用的优化技术包括________和循环优化。
答案:常量传播4. 编译器在目标代码生成阶段,需要考虑________的约束。
答案:目标机器5. 编译器的运行时系统包括________、内存管理、输入输出处理等。
答案:程序启动和异常处理6. 编译器在词法分析阶段,需要识别的词法单位包括________、标识符、常量等。
答案:关键字7. 编译器在语法分析阶段,使用的分析表可以是________表或ACTION 表。
答案:GOTO8. 编译器在语义分析阶段,需要对表达式的________进行计算。
答案:类型9. 编译器的代码生成阶段,需要将中间代码转换为________代码。
答案:目标机器10. 编译器的运行时系统在内存管理中,需要处理________和垃圾收集。
参考答案及评分标准一、填空(15分,每空1分)1.高级,低级2.源程序,单词3.自顶向下4.综合,继承5.结构,名称6.非局部名字访问,参数传递7.上下文有关,上下文无关,正规8.abcd+*+二、(15分)答:正规表达式(4)代表了这个程序段所有可能走过的全部步序列(5分)把A,T,B,I分别代表相应的基本块,E表示程序段的出口,则程序段可以表示为如下的流(程)图:(5分)转换为等价的确定状态自动机如下:由上述确定状态自动机可以得到等价的正规表达式为:AT(BIT)*(5分)如果没有画流程图而直接给出自动机可以给分。
既没有画流程图,也没有画自动机,可以根据描述的理由是否能说明清楚酌情给分。
三、(20分)答:1.FIRST(S)={a,b} FOLLOW(S)={$}FIRST(A)={a,b} FOLLOW(A)={b,$}FIRST(B)={b,ε} FOLLOW(B)={c,$}(6分,每个1分)。
21$S baabbb$2$BAb baabbb$S →bAB 3$BA aabbb$4$BbAa aabbb$ A →aAb 5$BbA abbb$6$BbbAa abbb$ A →aAb 7$BbbA bbb$8$Bbbb bbb$ A →b9$Bbb bb$10$Bb b$11$B$12$$ B →ε四、(25分)答:1.文法G的拓广文法G`如下:(10分)S`→SS →Aa∣dAb∣Bb∣dBaA →cB →c构造识别所有活前缀的确定有限状态自动机(DFA)如下:3.由识别所有活前缀的确定有限状态自动机(DFA)可知,存在同心集I5和I10,合并后的LR(1)项目集为:{A →•c, a/b B →•c, a/b},可见在该项目集中存在归约-归约冲突,因此该文法不是LALR(1)文法。
(5分)五、(10分,每小题5分)答:1.A:array(1..100, record((x×integer)×(y×char)))2.func:integer×(integer→pointer(integer))→record((i×integer)×(c×char))六、(15分)答:当分析器的输入为aacbb时翻译结果是:12020(5分)方法一:aacbb的分析树如下:Aa BA ba BA bc由于分析器采用移进-归约的方式进行,归约时使用产生式的顺序为:A →c,B →Ab,A →aB,B →Ab,A →aB,因此打印结果为:12020。
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
编译原理与技术模拟试题五一、填空(20分,每空2分)1.1高级语言被直接翻译成机器语言或汇编语言的过程称为;把汇编语言翻译成机器语言的过程称为;把汇编语言翻译成某种高级语言的过程称为。
答案:编译,汇编,反编译解释:根据定义。
1.2语法分析方法分为自上而下和自下而上两类,递归下降分析属于,移进-归约方法属于。
答案:自上而下,自下而上解释:根据分析过程中分析树的构造方向。
1.3在预测分析器工作时,改变格局的动作中,除了接受(分析成功)和报错,还有和。
答案:展开,匹配解释:预测分析器模拟最左推导的方式产生句子。
1.4在散列表形式组织的符号表中,通常将每个符号挂在两个链上,其中散列链用来链接所有具有相同hash值的元素,而链则用来链接所有在同一作用域内的元素。
答案:作用域解释:根据定义。
1.5在过程(函数)调用中,引用调用传递的是实参的,过程内对参数的修改。
答案:会影响作为实参的变量原来的值解释:传值方式下,实参与形参各自有独立的存储单元,调用时将实参的值传递给形参,对形参进行的修改与实参无关。
引用调用方式下,是将实参的地址传递给形参,对形参所作的修改最后会返回给实参。
二、单选题(10分,每空2分)2.1程序设计语言可划分为低级语言和高级语言两大类。
与高级语言相比,用低级语言开发的程序,其。
A.运行效率低,开发效率低B.运行效率低,开发效率高C.运行效率高,开发效率低D.运行效率高,开发效率高答案:C解释:在计算机中,低级语言指机器语言和汇编语言。
机器语言是计算机可直接识别的二进制指令代码。
用机器语言编制出来的程序可读性很差,也难以理解、修改和维护。
因此,为了提高程序设计的效率,人们就用容易记忆的符号代替0、1序列来表示机器指令中的操作码和操作数,例如,用ADD 表示加法,SUB 表示减法等。
因此,汇编语言可看作是用助记符表示的机器语言。
用低级语言进行程序设计时,需要对机器结构有较多的了解,因此可以在时间上和空间上对程序进行最直接的优化处理,所以用低级语言开发的程序,其运行效率较高,但是开发程序的效率较低,在时间和空间上对程序有严格要求的场合,仍全部或部分地使用低级语言。
参考答案及评分标准
一、填空(15分,每空1分)
1.高级,低级
2.源程序,单词
3.自顶向下
4.综合,继承
5.结构,名称
6.非局部名字访问,参数传递
7.上下文有关,上下文无关,正规
8.abcd+*+
二、(15分)
答:正规表达式(4)代表了这个程序段所有可能走过的全部步序列(5分)把A,T,B,I分别代表相应的基本块,E表示程序段的出口,则程序段可以表示为如下的流(程)图:(5分)
转换为等价的确定状态自动机如下:
由上述确定状态自动机可以得到等价的正规表达式为:AT(BIT)*(5分)
如果没有画流程图而直接给出自动机可以给分。
既没有画流程图,也没有画自动机,可以根据描述的理由是否能说明清楚酌情给分。
三、(20分)
答:1.FIRST(S)={a,b} FOLLOW(S)={$}
FIRST(A)={a,b} FOLLOW(A)={b,$}
FIRST(B)={b,ε} FOLLOW(B)={c,$}
(6分,每个1分)。
2
3.分析符号串baabbb是否为该文法的句子的过程如下表所示:(7分)步骤栈输入串输出
1 $S baabbb$
2 $BAb baabbb$ S →bAB
3 $BA aabbb$
4 $BbAa aabbb$ A →aAb
5 $BbA abbb$
6 $BbbAa abbb$ A →aAb
7 $BbbA bbb$
8 $Bbbb bbb$ A →b
9 $Bbb bb$
10 $Bb b$
11 $B $
12 $ $ B →ε
四、(25分)
答:1.文法G的拓广文法G`如下:(10分)
S`→S
S →Aa∣dAb∣Bb∣dBa
A →c
B→c
构造识别所有活前缀的确定有限状态自动机(DFA)如下:
3.由识别所有活前缀的确定有限状态自动机(DFA)可知,存在同心集I5和I10,合并后的LR(1)项目集为:{A →•c, a/b B→•c, a/b},可见在该项目集中存在归约-归约冲突,因此该文法不是LALR(1)文法。
(5分)
五、(10分,每小题5分)
答:1.A:array(1..100, record((x×integer)×(y×char)))
2.func:integer×(integer→pointer(integer))→record((i×integer)×(c×char))
六、(15分)
答:当分析器的输入为aacbb时翻译结果是:12020(5分)
方法一:aacbb的分析树如下:
A
a B
A b
a B
b
c
由于分析器采用移进-归约的方式进行,归约时使用产生式的顺序为:
A →c,
B →Ab,A →aB,B →Ab,A →aB,因此打印结果为:12020。
方法二:句子aacbb的最右推倒为:A=>aB=>aAb=>aaBb=>aaAbb=>aacbb。
归约过程是最右推导的逆,从右向左考察推导过程中使用的产生式即为归约过程采
用的顺序,因此打印结果为:12020。
方法三:移进-归约的分析步骤如下:
栈输入串动作输出
$ aacbb$ 移进
$a acbb$ 移进
$aa cbb$ 移进
$aac bb$ 归约,A →c 1
$aaA bb$ 移进
$aaAb b$ 归约,B →Ab 2
$aaB b$ 归约,A →aB 0
$aA b$ 移进
$aAb $ 归约,B →Ab 2
$aB $ 归约,A →aB 0
$A $ 完成
因此输出结果为:12020。
看图写话“五步曲”
一、认真看图,培养观察力
看图写话,就是要用眼睛看,看是基础。
学会观察,养成良好的观察习惯。
观察是一个智力活动过程,观察是人们增长知识、的重要途径。
看图说话之前只有经过认真仔细地观察才能有理解,才会在大脑里形成印象。
首先看图要有顺序,或从上到下,从下到上;或从远到近,从近到远;或从左到右,从右到左:或从中间到四周。
对画面所表达的主要内容先有一个整体性的了解。
再从画面中人物的形体、相貌、服饰等,弄清人物的性别、年龄、身份;从人物的表情、动作,推测人物的思想,以及他在干什么,想什么;还要观察周围环境,弄清事情发生在什么时候,什么地方等等。
使学生做到言之有序,使整幅图或多幅图画变成一个完整的、连贯的事物,使人物形象更加丰满逼真,故事情节更加曲折动人。
二、合理想象,培养想象力
一幅图联想到前前后后的几幅图由一个动作联想到前前后后的几个动作,看图想象也要力求百花齐放,学生创新思维,进行大胆想象,想别人还没有想到的,说别人还没有说过的。
正所谓“一花独放不是春,百花齐放春满园。
”
三、看图说话,培养口头表达能力
四、看图写话,培养书面表达能力
“时间、地点、人物,干什么”就行了。