编译原理期末考试题目及答案
编译原理期末考试试题及答案
编译原理期末考试试题及答案一、选择题(每题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. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。
编译原理期末试题(含答案+大题集+重要知识点)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL(1)分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题(每小题2分,共20分)1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式 M 1 和 M 2 等价是指__C_。
A. M1和M2的状态数相等B. M1和M2的有向边条数相等C. M1和M2所识别的语言集相等 D. M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_C____。
A. xyx B. (xyx)* C.xnyxn(n≥0) D. x*yx*4.如果文法G是无二义的,则它的任何句子α_A____。
A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。
A.源程序B.目标语言 C.编译方法 D.以上三项都是6.四元式之间的联系是通过__B___实现的。
编译原理期末考试题目及答案
一、填空题(每空 2 分,共 20 分) 1 .编译程序首先要识别出源程序中每个单词 ,然后再分析每个 句子 并翻译其意义。
2.编译器常用的语法分析方法 有自底向上 和 自顶向下 两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的 分析 ,中间代码生成、代码优化与目标代码的生成则是对源程序的 综合 。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即 静态存储分配 方案和 动态存储分配 方案。
5.对编译程序而言,输入数据是 源程序 ,输出结果是 目标程序 。
1 .计算机执行用高级语言编写的程序主要有两种途径: 解释和编译 。
2.扫描器是 词法 分析器,它接受输入的 源程序 ,对源程序进行 词法分析 并识别出一个个单词符号,其输出结果是单词符 号,供语法分析器使用。
3.自下而上分析法采用 移进 、归约、错误处理、 接受 等四种操作。
4.一个 LL( 1)分析程序需要用到 一张分析表 和 符号栈 。
5.后缀式 abc-/ 所代表的表达式是 a/(b-c) 。
2分,共 20分)1. .词法分析器的输出结果是 __C 。
A . 单词的种别编码B . 单词在符号表中的位置C .单词的种别编码和自身值 D . 单词自身值2. 正规式 M 1 和 M 2 等价是指 __C_。
A . M1 和 M2的状态数相等B . M1 和 M2的有向边条数相等C . M1 和 M2所识别的语言集相等D . M1 和 M2状态数和有向边条数相等 3. 文法 G : S → xSx|y 所识别的语言是 _C 。
A . xyx B . (xyx)* C . xnyxn(n ≥ 0) D . x*yx* B .最左推导和最右推导对应的语法树可能不同D .可能存在两个不同的最左推导,但它们对应的语法树相同 编译方法 D .以上三项都是 C .符号表 D .程序变量 C . AB ∨┐ CD ∨∧ D . A ┐ B ∨∧ CD ∨ B .占用存储空间较小C .运行时间短但占用内存空间大D .运行时间短且占用存储空间小9.下列 ___C___优化方法不是针对循环优化进行的。
编译原理期末复习题及答案
编译原理期末复习题及答案# 一、选择题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`,请转换为四元组形式。
编译原理期末考试试卷及答案
规范规约是最( )规约。
编译程序的工作过程一般划分为 个阶段:词法分析、( ) 、语义分析与中间代码生成,代码优化及( ) 。
另外还有( )和出错处理。
.表达式⌧⍓✉☎♋♌✆的后缀式为 ( ) 。
.文法符号的属性有综合属性和 ( )。
.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组♋☯某个元素♋☯♓, 的地址计算公式为( )。
.局部优化是局限于一个( )范围内的一种优化。
二. 选择题( 为单选题, 为多选题,每问 分,共 分) 一个上下文无关文法☝包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组( )。
✌. 字符串 . 产生式 . 开始符号 . 文法程序的基本块是指( )。
✌. 一个子程序 . 一个仅有一个入口和一个出口的语句. 一个没有嵌套的程序段 . 一组顺序执行的程序段,仅有一个入口和一个出口 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。
✌. 自左向右 . 自顶向下 . 自底向上 . 自右向左.在通常的语法分析方法中,( )特别适用于表达式的分析。
✌. 算符优先分析法 . ☹分析法. 递归下降分析法 . ☹☹( )分析法.经过编译所得到的目标程序是( )。
✌. 四元式序列 . 间接三元式序列. 二元式序列 . 机器语言程序或汇编语言程序. 一个文法所描述的语言是( );描述一个语言的文法是( )。
✌. 唯一的 . 不唯一的 . 可能唯一,也可能不唯一. 如果在文法☝中存在一个句子,当其满足下列条件( )之一时,则称该文法是二义文法。
✌. 其最左推导和最右推导相同 . 该句子有两个不同的最左推导. 该句子有两个不同的最右推导 . 该句子有两棵不同的语法树☜. 该句子对应的语法树唯一. 下面( )语法制导翻译中,采用拉链—回填技术。
✌ 赋值语句 布尔表达式的计算 条件语句 循环语句. (共 分)已知文法☝☯☜☜→☜❆☜(☜) ♓❆→✉( )将文法☝改造成☹☹( )文法;( 分)( )构造文法☝中每个非终结符的☞✋❆集合及☞☹☹集合;( 分)( )构造☹☹( )分析表。
编译原理期末试题(8套含答案)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______。
编译原理期末考试习题及答案
一、填空题|(每题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分)状态转换表:a b{F} Φ{S}{S} {S,A} Φ{S,A} {S,A} {S}五. 构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。
(15分)答:(1)对应的NFA(5分)a b{0} {1,3} {0}{1,3} Φ{2,3}{2,3} {1,3} {2,3}(5分)六. 已知文法G(S) :(1) S → ^ | a | (T)(2) T → T,S | S试:(1)消除文法的左递归;(4分)(2)构造相应的first 和 follow 集合。
(完整word版)编译原理期末考试习题及答案(word文档良心出品)
一、填空题| (每题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)⑴ E T | E+T⑵ T F | F*F⑶ 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分)IS/|\7i\E+T(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 ⑵A Sa请构造与之等价的DFA ( 6分) 答:对应的NFA 为: (6分)a b {F}① {S} {S}{S,A} ①{S,A} {S,A} {S}五•构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。
(15分) 答:(1)对应的NFA(5分)a b{0}{1 , 3} {0} {1,3} ① {2 , 3} {2,3} {1,3}{2,3}六.已知文法G(S):(1) S A | a | (T)⑵ T T,S | S试:(1)消除文法的左递归;(4分)(2) 构造相应的first 和follow 集合。
编译原理期末考试复习题(含答案)
编译原理期末考试复习题(含答案)一、选择题1.代码生成阶段的主要任务是(C)。
A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言2.文法G 所描述的语言是( C )的集合。
A.文法G 的字母表V 中所有符号组成的符号串B.文法G 的字母表V 的闭包V* 中的所有符号串C.由文法的开始符号推出的所有终结符串D.由文法的开始符号推出的所有符号串3.语言是(C)。
A.终结符与非终结符的符号串的集合B.非终结符符号串的集合C.终结符符号串的集合D.产生式的集合4.常用的中间代码形式不含(D)。
A.三元式B.四元式C.逆波兰式D.语法树5.四元式之间的联系是通过(B)实现的。
A.指示器B.临时变量C.符号表D.程序变量6.词法分析器的输出结果是( C )。
A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为(B)。
A. ┐AB∨∧CD∨B.A┐B∨CD∨∧C.AB∨┐CD∨∧ D.A┐B∨∧CD∨8.下推自动机识别的语言是( C )A.0型语言 B.1型语言C.2型语言 D.3型语言9. 在规范归约中,用(B)来刻画可归约串。
A.直接短语 B.句柄C.最左素短语 D.素短语10.词法分析器用于识别( C)。
A.字符串 B.语句 C.单词 D.标识符11.一个句型中称为句柄的是该句型的最左(D)A.非终结符号 B.短语 C.句子 D.直接短语12.文法 G[E] :E→T∣E+TT→F∣T * FF→a∣(E)该文法句型 E + F * (E + T) 的简单短语是下列符号串中的(B)。
①(E+T)②E+T ③F ④ F * (E+T)A.①和③B.②和③C.③和④D.③13.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括(C)。
编译原理期末试题(8套含答案+大题集)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL(1)分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题(每小题2分,共20分)1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式M 1 和M 2 等价是指__C_。
A.M1和M2的状态数相等 B.M1和M2的有向边条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_C____。
A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx*4.如果文法G是无二义的,则它的任何句子α_A____。
A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。
A.源程序B.目标语言C.编译方法D.以上三项都是6.四元式之间的联系是通过__B___实现的。
编译原理期末考试题目及答案
一、填空题〔每空2分,共20分〕1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。
2.编译器常用的语法分析方法有自底向上和自顶向下两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成那么是对源程序的综合。
4.程序设计语言的开展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。
5.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL〔1〕分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题〔每题2分,共20分〕1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式M 1 和M 2 等价是指__C_。
A.M1和M2的状态数相等 B.M1和M2的有向边条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_C____。
A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx*4.如果文法G是无二义的,那么它的任何句子α_A____。
A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。
A.源程序B.目标语言C.编译方法D.以上三项都是6.四元式之间的联系是通过__B___实现的。
编译原理期末考试习题及答案
编译原理期末考试习题及答案work Information Technology Company.2020YEAR一、填空题|(每题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分)状态转换表:a b{F} Φ{S}{S} {S,A} Φ{S,A} {S,A} {S}五. 构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。
(15分)答:(1)对应的NFA(5分)(2)将(1)所得的NFA确定化:(5分)a b{0} {1,3} {0}{1,3} Φ{2,3}{2,3} {1,3} {2,3}(5分)六. 已知文法G(S) :(1) S → ^ | a | (T)(2) T → T,S | S试:(1)消除文法的左递归;(4分)(2)构造相应的first 和 follow 集合。
编译原理期末考试题目及答案
一、填空题(每空2分,共20分)之迟辟智美创作1.编译法式首先要识别出源法式中每个单词,然后再分析每个句子并翻译其意义.2.编译器经常使用的语法分析方法有自底向上和自顶向下两种.3.通常把编译过程分为分析前端与综合后端两年夜阶段.词法、语法和语义分析是对源法式的分析,中间代码生成、代码优化与目标代码的生成则是对源法式的综合.4.法式设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两年夜类,即静态存储分配方案和静态存储分配方案.5.对编译法式而言,输入数据是源法式,输出结果是目标法式.1.计算机执行用高级语言编写的法式主要有两种途径:解释和编译.2.扫描器是词法分析器,它接受输入的源法式,对源法式进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用.3.自下而上分析法采纳移进、归约、毛病处置、接受等四种把持.4.一个LL(1)分析法式需要用到一张分析表和符号栈.5.后缀式abc-/所代表的表达式是a/(b-c).二、单项选择题(每小题2分,共20分)1.词法分析器的输出结果是__C.A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式 M 1 和 M 2 等价是指__C_.A. M1和M2的状态数相等 B. M1和M2的有向边条数相等C.M1和M2所识另外语言集相等D.M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识另外语言是_C____.A. xyx B. (xyx)* C.xnyxn(n≥0) D. x*yx*4.如果文法G是无二义的,则它的任何句子α_A____.A.最左推导和最右推导对应的语法树肯定相同B.最左推导和最右推导对应的语法树可能分歧C.最左推导和最右推导肯定相同D.可能存在两个分歧的最左推导,但它们对应的语法树相同5.构造编译法式应掌握____D__.A.源法式B.目口号言 C.编译方法 D.以上三项都是6.四元式之间的联系是通过__B___实现的.A.指示器B.临时变量C.符号表 D.法式变量7.表达式(┐A∨B)∧(C∨D)的逆波兰暗示为__B___.A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧ D.A┐B∨∧CD∨8. 优化可生成__D___的目标代码.A.运行时间较短 B.占用存储空间较小C.运行时间短但占用内存空间年夜 D.运行时间短且占用存储空间小9.下列___C___优化方法不是针对循环优化进行的.A. 强度削弱B.删除归纳变量C.删除过剩运算D.代码外提10.编译法式使用_B_区别标识符的作用域.A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态条理C.说明标识符的过程或函数的静态条理 D. 标识符的行号三、判断题(对的打√,错的打×,每小题1分,共10分)2.一个有限状态自念头中,有且仅有一个唯一的终态.x3.一个算符优先文法的每个非终结符号间都也可能存在优先关系.X4.语法分析时必需先消除文法中的左递归 .X6.逆波兰暗示法暗示表达式时无须使用括号.R9.两个正规集相等的需要条件是他们对应的正规式等价. X1.编译法式是对高级语言法式的编译执行.X2.一个有限状态自念头中,有且仅有一个唯一的初始态.R3.一个算符优先文法的每个非终结符号间都不存在优先关系.R4.LL(1)语法分析时必需先消除文法中的左递归 . R5.LR分析法在自左至右扫描输入串时就能发现毛病,但不能准确地指出犯错地址. R6.逆波兰暗示法暗示表达式时根据表达式会使用括号. X7.静态数组的存储空间可以在编译时确定.X8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更年夜作用.X9.两个正规集相等的需要条件是他们发生的符号串是相同的. R10.一个语义子法式描述了一个文法所对应的翻译工作. X1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系?S-属性文法是只含有综合属性的属性文法. (2分)L-属性文法要求对每个发生式A X1X2…Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:发生式Xj的左边符号X1,X2…Xj-1的属性;(1)(2)A的继承属性. (2分)S-属性文法是L-属性文法的特例.(1分)2.什么是LL(1)分析器2.什么是LR(0)分析器所谓LR(0)分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈以后已移进和归约出的全部文法符号,并至多再向前检查0个输入符号,就能确定相对某一发生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定以后所应采用的分析举措(是移进还是按某一发生式进行归约等).五、综合题(共40分)1.(10分)对文法 G[S] :S → 1A | 0B | ε A → 0S | 1AA B → 1S | 0BB⑴ (3 分 ) 请写出三个关于 G[S] 的句子;⑵ (4 分 ) 符号串 11A0S 是否为 G [S] 的句型?试证明你的结论.⑶ (3 分 ) 试画出 001B 关于 G [S] 的语法树.答:(1)三个 0 和 1 数量相等的串(每个1分)(2) S => 1A => 11AA => 11A 0S(3)2.(10分)设有语言 L={ α | α∈ {0,1} + ,且α不以 0 开头,但以 00 结尾 } .3分)试写出描述 L 的正规表达式;⑵(7分)构造识别 L 的 DFA (要求给出详细过程,并画出构造过程中的NFA 、 DFA 的状态转换图,以及最小DFA的状态转换图 ) .答:( 1 )(3分)正规表达式: 1(0|1) * 00( 2 )(7分)第一步(3分):将正规表达式转换为 NFA第二步(2分):将 NFA 确定化为 DFA :(1分)状态输入I 0 I 1 t 0 1[S] —[A,D,B] q 0 —q 1[A,D,B] [D,B,C] [D,B] q 1 q 2 q 3[D,B,C] [D,B,C,Z] [D,B] q 2 q 4 q 3[D,B] [D,B,C] [D,B] q 3 q 2 q 3[D,B,C,Z] [D,B,C,Z] [D,B] q 4 q 4 q 3DFA 的状态转换图(1分)第三步(2分):将DFA 最小化:(1分)将状态划分终态与非终态两个集合:A={q0,q1,q2,q3},E={q4}根据A、E集合的情况,对A集合进行划分状态输入I 0 I 1q0—Aq1AAq2EAq3AA将状态集A划分为两个集合:A={q0,q1,q3},B={2}根据A、B集合的情况,对A集合进行划分状态输入I 0 I 1q0—Aq1BAq3BA将状态集A划分为两个集合:A={q0},C={q1,q3}根据A、C集合的情况,对C集合进行划分状态输入I 0 I 1q1BAq3BA最小DFA 的状态转换图(1分)3.(20分)给定文法 G[E] :E → E+T | TT → T*F | FF → (E) | i该文法是 LL(1) 文法吗?(要求给出详细过程,如果是LL(1),给出分析表)答:(1)该文法不是LL(1)文法,因为有左递归,消除左递归可获得一个LL(1)文法(2分)(2)消除左递归,得新文法 (3分)E → TE’E’→ +TE’| εT → FT’T’→ *FT’ |εF → (E) | i(3)求发生式右部的First集 (2.5分)First(TE’) = First(T)= First(F)={(,i}First(+TE’) = {+}First(FT’) = First(F)={(,i}First(*FT’) = {*}First((E)) = {(}First(i) = {i}(4)求所有非终结符的Follow集(2.5分)Follow(E) = {$,)}Follow(E’) = Follow(E) = {$,)}Follow(T) = First(E’)∪Follow(E)={+} ∪{$,)}={$,+,)} Follow(T’) = Follow(T) ={$,*,)}Follow(F) = First(T’)∪Follow(T)∪Follow(T’)= {$,*,)} (5)求所有发生式的Select集 (2.5分)Select(E → TE’)=First(TE’)= {(,i}Select(E’→ +TE’)=First(+TE’)= {+}Select(E’→ε)= Follow(E’) = {$,)}Select(T → FT’)=First(FT’)= {(,i}Select(T’→ *FT’)=First(*FT’)= {*}Select(T’→ε)= Follow(T’) ={$,+,)}Select(F → (E))=First((E))= {(}Select(F → i)=First(i)= {i}(6)对相同左部的所有Select 即求交集(2.5分) Select (E ’→ +TE ’)∩Select (E ’→ε)=Φ Select (T ’→ *FT ’)∩Select (T ’→ε)=Φ Select (F → (E))∩Select (F → i )=Φ所以,改造后的文法是LL (1)文法,其分析表如下 (7) LL(1) 分析表( 5 分)V NV T+ * i ( )$E E → TE ’ E → TE ’ E ’ E ’→ +TE ’ E ’→ε E ’→εT T → FT ’ T → FT ’ T ’ T ’→ε T ’→ *FT ’ T ’→ε T ’→εF F → (E) F → i1.(10分)对文法G :SaSbS|aS|d证明该文法是二义性文法.答:一个文法,如果存在某个句子有不只一棵语法分析树与之对应,那么称这个文法是二义性文法.(5分)句子aadbd 有两棵语法树(5分,划一棵树给3分).如下图:(6分)(1) (2)由此可知,SaSbS|aS|d 界说的文法是二义性文法.3.(20分)给定一个简单的算术表达式文法 G[E] :E → E+T | T T → T*F | F F → (E) | i该文法是 SLR(1) 文法吗?(要求给出详细过程,如果是SLR 文法,给出分析表) 答:(1) 该文法的拓广文法是: (2分) E ’→E (1)d SS ab S S a d Sa SS a b S ddE → E+T (2)E → T (3)T → T*F (4)T → F (5)F → (E) (6)F → i (7)(2)相应的LR(0)的DFA:(10分)(3)抵触与解决 (3分)① I1状态中有移进—规约抵触Follow(E’)={ $ } 不含{ + }可解决移进—规约抵触② I2状态中有移进—规约抵触Follow(E)={ +,),$ } 不含{ * }可解决移进—规约抵触③ I8状态中有移进—规约抵触Follow(E)={ +,),$ } 不含{ * }可解决移进—规约抵触(4) SLR分析表 (5分)二、单项选择题(每小题2分,共20分)1.语言是____C_A.终结符与非终结符的符号串的集合 B.非终结符符号串的集合 C.终结符符号串的集合 D.发生式的集合2.编译法式分两阶段工作,前阶段完成的工作是__C___A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析C.词法分析、语法分析、语义分析和中间代码生成D.词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左CA.句型 B.短语 C.直接短语 D.最左直接短语4.自念头识另外语言是 DA.0型语言 B.1型语言 C.2型语言 D.3型语言5.自念头所完成的任务是从字符串形式的源法式中识别出一个个具有自力含义的最小语法单元即 BA.字符 B.单词 C.句子 D.句型6.对应Chomsky四种文法的四种语言之间的关系是BA.L0L1L2L3 B.L3L2L1L0C.L3=L2L1L0 D.L0L1L2=L37.词法分析的任务是AA.识别单词 B.分析句子的含义 C.识别句子 D.生成目标代码8.经常使用的中间代码形式不含DA.三元式 B.四元式 C.逆波兰式 D.语法树9.代码优化的目的是CA.节省时间 B.节省空间 C.节省时间和空间 D.把编译法式进行等价交换10.代码生成阶段的主要任务是CA.把高级语言翻译成汇编语言 B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、填空题(每空2分,共20分)1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。
2.编译器常用的语法分析方法有自底向上和自顶向下两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。
5.对编译程序而言,输入数据是源程序,输出结果是目标程序。
1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。
2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。
4.一个LL(1)分析程序需要用到一张分析表和符号栈。
5.后缀式abc-/所代表的表达式是a/(b-c)。
二、单项选择题(每小题2分,共20分)1.词法分析器的输出结果是__C。
A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值2.正规式M 1 和M 2 等价是指__C_。
A.M1和M2的状态数相等 B.M1和M2的有向边条数相等C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_C____。
A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx*4.如果文法G是无二义的,则它的任何句子α_A____。
A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。
A.源程序B.目标语言C.编译方法D.以上三项都是6.四元式之间的联系是通过__B___实现的。
A.指示器B.临时变量C.符号表D.程序变量7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为__B___。
A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧D.A┐B∨∧CD∨8. 优化可生成__D___的目标代码。
A.运行时间较短 B.占用存储空间较小C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小9.下列___C___优化方法不是针对循环优化进行的。
A. 强度削弱B.删除归纳变量C.删除多余运算D.代码外提10.编译程序使用_B_区别标识符的作用域。
A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次 D. 标识符的行号三、判断题(对的打√,错的打×,每小题1分,共10分)2.一个有限状态自动机中,有且仅有一个唯一的终态。
x3.一个算符优先文法的每个非终结符号间都也可能存在优先关系。
X4.语法分析时必须先消除文法中的左递归。
X6.逆波兰表示法表示表达式时无须使用括号。
R9.两个正规集相等的必要条件是他们对应的正规式等价。
X1.编译程序是对高级语言程序的编译执行。
X2.一个有限状态自动机中,有且仅有一个唯一的初始态。
R3.一个算符优先文法的每个非终结符号间都不存在优先关系。
R4.LL(1)语法分析时必须先消除文法中的左递归。
R5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
R6.逆波兰表示法表示表达式时根据表达式会使用括号。
X7.静态数组的存储空间可以在编译时确定。
X8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
X9.两个正规集相等的必要条件是他们产生的符号串是相同的。
R10.一个语义子程序描述了一个文法所对应的翻译工作。
X1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系?S-属性文法是只含有综合属性的属性文法。
(2分)L-属性文法要求对于每个产生式A X1X2…Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:(1)产生式Xj的左边符号X1,X2…Xj-1的属性;(2)A的继承属性。
(2分)S-属性文法是L-属性文法的特例。
(1分)2.什么是LL(1)分析器2.什么是LR(0)分析器所谓LR(0)分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈当前已移进和归约出的全部文法符号,并至多再向前查看0个输入符号,就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作(是移进还是按某一产生式进行归约等)。
五、综合题(共40分)1.(10分)对于文法G[S] :S →1A | 0B | ε A →0S | 1AA B →1S | 0BB⑴(3 分) 请写出三个关于G[S] 的句子;⑵(4 分) 符号串11A0S 是否为G [S] 的句型?试证明你的结论。
⑶(3 分) 试画出001B 关于G [S] 的语法树。
答:(1)三个0 和1 数量相等的串(每个1分)(2)S => 1A => 11AA => 11A 0S(3)2.(10分)设有语言L={ α| α∈{0,1} + ,且α不以0 开头,但以00 结尾} 。
⑵3分)试写出描述L 的正规表达式;⑵(7分)构造识别L 的DFA (要求给出详细过程,并画出构造过程中的NFA 、DFA 的状态转换图,以及最小DFA的状态转换图) 。
答:(1 )(3分)正规表达式:1(0|1) * 00(2 )(7分)第一步(3分):将正规表达式转换为NFA第二步(2分):将NFA 确定化为DFA :(1分)状态输入I 0 I 1 t 0 1[S] —[A,D,B] q 0 —q 1[A,D,B] [D,B,C] [D,B] 重新命名q 1 q 2 q 3[D,B,C] [D,B,C,Z] [D,B] q 2 q 4 q 3[D,B] [D,B,C] [D,B] q 3 q 2 q 3[D,B,C,Z] [D,B,C,Z] [D,B] q 4 q 4 q 3DFA 的状态转换图(1分)第三步(2分):将DFA 最小化:(1分)将状态划分终态与非终态两个集合:A={q0,q1,q2,q3},E={q4}根据A、E集合的情况,对A集合进行划分状态输入I 0 I 1q0—Aq1AAq2EAq3AA将状态集A划分为两个集合:A={q0,q1,q3},B={2}根据A、B集合的情况,对A集合进行划分状态输入I 0 I 1q0—Aq1BAq3BA将状态集A划分为两个集合:A={q0},C={q1,q3}根据A、C集合的情况,对C集合进行划分状态输入I 0 I 1q1BAq3BA最小DFA 的状态转换图(1分)3.(20分)给定文法G[E] :E →E+T | TT →T*F | FF →(E) | i该文法是LL(1) 文法吗?(要求给出详细过程,如果是LL(1),给出分析表)答:(1)该文法不是LL(1)文法,因为有左递归,消除左递归可获得一个LL(1)文法(2分)(2)消除左递归,得新文法(3分)E →TE’E’→+TE’| εT →FT’T’→*FT’ |εF →(E) | i(3)求产生式右部的First集(2.5分)First(TE’) = First(T)= First(F)={(,i}First(+TE’) = {+}First(FT’) = First(F)={(,i}First(*FT’) = {*}First((E)) = {(}First(i) = {i}(4)求所有非终结符的Follow集(2.5分)Follow(E) = {$,)}Follow(E’) = Follow(E) = {$,)}Follow(T) = First(E’)∪Follow(E)={+} ∪{$,)}={$,+,)}Follow(T’) = Follow(T) ={$,*,)}Follow(F) = First(T ’)∪Follow(T) ∪Follow(T ’)= {$,*,)} (5) 求所有产生式的Select 集 (2.5分)Select (E → TE ’)=First(TE ’)= {(,i} Select (E ’→ +TE ’)=First(+TE ’)= {+} Select (E ’→ ε)= Follow(E ’) = {$,)} Select (T → FT ’)=First(FT ’)= {(,i} Select (T ’ → *FT ’)=First(*FT ’)= {*}Select (T ’→ ε)= Follow(T ’) ={$,+,)} Select (F → (E))=First((E))= {(} Select (F → i )=First(i)= {i} (6)对相同左部的所有Select 即求交集(2.5分)Select (E ’→ +TE ’)∩Select (E ’→ ε)= Φ Select (T ’ → *FT ’)∩Select (T ’→ ε)=Φ Select (F → (E))∩Select (F → i )=Φ所以,改造后的文法是LL (1)文法,其分析表如下 (7) LL(1) 分析表( 5 分)V NV T+ * i ( )$ E E → TE ’ E → TE ’E ’ E ’→ +TE ’ E ’→ ε E ’→ ε T T → FT ’ T → FT ’ T ’ T ’→ ε T ’ → *FT ’ T ’→ ε T ’→ εFF → (E) F → i1.(10分)对于文法G :S aSbS|aS|d证明该文法是二义性文法。
答:一个文法,如果存在某个句子有不只一棵语法分析树与之对应,那么称这个文法是二义性文法。
(5分) 句子aadbd 有两棵语法树(5分,划一棵树给3分)。
如下图:(6分) (1) (2)由此可知,S aSbS|aS|d 定义的文法是二义性文法。
SS a b S S adSaSS a bS dd3.(20分)给定一个简单的算术表达式文法G[E] :E →E+T | TT →T*F | FF →(E) | i该文法是SLR(1) 文法吗?(要求给出详细过程,如果是SLR文法,给出分析表)答:(1) 该文法的拓广文法是:(2分)E’→E (1)E →E+T (2)E →T (3)T →T*F (4)T →F (5)F →(E) (6)F →i (7)(2)相应的LR(0)的DFA:(10分)(3)冲突与解决(3分)①I1状态中有移进—规约冲突Follow(E’)={ $ } 不含{ + }可解决移进—规约冲突②I2状态中有移进—规约冲突Follow(E)={ +,),$ } 不含{ * }可解决移进—规约冲突③I8状态中有移进—规约冲突Follow(E)={ +,),$ } 不含{ * }可解决移进—规约冲突(4)SLR分析表(5分)ACTION GOTO+*i()$E T F0S5S41231S6接受2r3S7r3r33r5r5r5R5r5r54S5S49235r7r7r7r7r7r76S5S4837S5S4118r2S7r2r29S6S1010r6r6r6r6r6r611r4r4r4r4r4r4二、单项选择题(每小题2分,共20分)1.语言是____C_A.终结符与非终结符的符号串的集合B.非终结符符号串的集合C.终结符符号串的集合D.产生式的集合2.编译程序分两阶段工作,前阶段完成的工作是__C___A.词法分析、语法分析和代码优化B.代码生成、代码优化和词法分析C.词法分析、语法分析、语义分析和中间代码生成D.词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左CA.句型B.短语C.直接短语D.最左直接短语4.自动机识别的语言是DA.0型语言B.1型语言C.2型语言D.3型语言5.自动机所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即B A.字符B.单词C.句子D.句型6.对应Chomsky四种文法的四种语言之间的关系是BA.L0L1L2L3 B.L3L2L1L0C.L3=L2L1L0D.L0L1L2=L37.词法分析的任务是AA.识别单词B.分析句子的含义C.识别句子D.生成目标代码8.常用的中间代码形式不含DA.三元式B.四元式C.逆波兰式D.语法树9.代码优化的目的是CA.节省时间B.节省空间C.节省时间和空间D.把编译程序进行等价交换10.代码生成阶段的主要任务是CA.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言。