编译原理期末考试试卷及答案
编译原理期末试题(三)含答案

编译原理期末试题(三)含答案《编译原理》期末试题(三)1、描述由正规式b*(abb*)*(a| ε)定义的语⾔,并画出接受该语⾔的最简DFA。
2、证明⽂法E → E + id | id是SLR(1)⽂法。
3、下⾯是表达式和赋值语句的⽂法,其中and的类型是bool ? bool → bool,+的类型是int ? int → int,=的类型是int ? int →bool,:= 要求id和E的类型都是int或者都是bool。
为该⽂法写⼀个语法制导定义或翻译⽅案,它完成类型检查。
S →id := EE → E and E | E + E | E = E |id4、对于下⾯C语⾔⽂件s.cf1(int x){long x;x = 1;}f2(int x){{long x;x = 1;}}某编译器编译时报错如下:s.c: In function ‘f1’:s.c:3: warning: declaration of ‘x’ shadows a parameter请回答,对函数f2为什么没有类似的警告错误。
5、下⾯C语⾔程序经⾮优化编译后,若运⾏时输⼊2,则结果是area=12.566360, addr=-1073743076经优化编译后,若运⾏时输⼊2,则结果是area=12.566360, addr=-1073743068请解释为什么输出结果有区别。
main(){float s, pi, r;pi=3.14159;scanf("%f", &r);printf("area=%f, addr=%d\n", s=pi*r*r, &r);}6、描述由正规式b*a(bb*a)*b*定义的语⾔,并画出接受该语⾔的最简DFA。
7、下⾯的⽂法产⽣代表正⼆进制数的0和1的串集:B → B 0 | B 1 | 1下⾯的翻译⽅案计算这种正⼆进制数的⼗进制值:B →B1 0 {B.va l := B1.val? 2 }| B1 1 {B.val := B1.val? 2 +1}| 1 {B.val := 1 }请消除该基础⽂法的左递归,再重写⼀个翻译⽅案,它仍然计算这种正⼆进制数的⼗进制值。
编译原理期末试题及答案

编译原理期末试题及答案1、试为表达式w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。
2、写出表达式a+b*(c-d)/e的逆波兰式和三元序列。
3、写出表达式a:=(b+c)*e+(b+c)/f的逆波兰式和三元序列。
4、已知文法G(S)及相应翻译方案S→aAb {print “1”}S→a {print “2”}A→AS {print“3”}A→c {print “4”}输入acab, 输出是什么?5、已知文法G(S)S→bAaA→(B | aB→A a)写出句子b(aa)b的规范归约过程。
6、已知文法G[S]S→S*aF | aF | *aFF→+aF | +a消除文法左递归。
1、设文法G(S):S→^ | a | (T)T→T,S | S⑴ 消除左递归;⑵ 构造相应的FIRST和FOLLOW集合;⑶ 构造预测分析表2.语句 if E then S(1) 改写文法,使之适合语法制导翻译;(2) 写出改写后产生式的语义动作。
4.设某语言的for语句的形式为for i:=E(1) to E(2) do S其语义解释为i:=E(1)LIMIT:=E(2)again: if i<=LIMIT thenBeginS;i:=i+1goto againEnd;(1)写出适合语法制导翻译的产生式;(2)写出每个产生式对应的语义动作。
7.已知文法G(S)S→a | ^ | (T)T→T,S | S(1) 给出句子(a,(a,a))的最左推导;(2) 给出句型((T,S),a)的短语, 直接短语,句柄。
8.对于 C 语言do S while E语句(1)改写文法,使之适合语法制导翻译;(2)写出改写后产生式的语义动作。
9.已知文法G(S)S→aAcBeA→Ab| bB→d(1)给出句子abbcde的最左推导及画出语法树;(2)给出句型aAbcde的短语、素短语。
10.设文法G(S):S→(T) | aS | aT→T,S | S⑴消除左递归和提公共左因子;⑵构造相应的FIRST和FOLLOW集合;⑶构造预测分析表。
编译原理期末考试试卷及答案24457

一. 填空题(每空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 中存在一个句子,当其满足下列条件( )之一时,则称该文法是二义文法. A . 其最左推导和最右推导相同 B . 该句子有两个不同的最左推导C . 该句子有两个不同的最右推导D . 该句子有两棵不同的语法树E . 该句子对应的语法树唯一8. 下面( )语法制导翻译中,采用拉链-回填技术.A. 赋值语句B. 布尔表达式的计算 C 。
编译原理期末考试试卷及答案

一. 填空题(每空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中存在一个句子,当其满足下列条件()之一时,则称该文法是二义文法。
编译原理期末试题(四)含答案

《编译原理》期末试题(四)1、 从优化的范围的角度,优化可以分哪两类?对循环的优化可以有哪三种? 答:从优化的范围的角度,优化可以分为局部优化和全局优化两类; 对循环的优化有三种:循环不变表达式外提、归纳变量删除与计算强度削减。
2、写出表达式a=b*c+b*d 对应的逆波兰式、四元式序列和三元式序列。
答:逆波兰式: abc*bd*+:= 四元式序列:三元式序列: OP ARG1 ARG2 (1) (*, b , c , t 1) (1) (* b , c ) (2) (*, b , d , t 2) (2) (* b , d ) (3) (+, t1, t 2,t 3) (3) (+ (1), (2)) (4) (:=, t3, /, a)(4) (:= (3), a)3、对于文法G(S):)Ma L a |(L M bMb S →→→答:1) b Ma b Lb b bMb S )((⇒⇒⇒ 2) 短语: Ma), (Ma), b(Ma)b 直接短语: Ma) 句柄: Ma)三、 设有字母表{a ,b}上的正规式R=(ab|a)*。
解:(1)((3)对(2)得到的DFA 化简,合并状态0和2 为状态2:(4)令状态1和2分别对应非终结符B 和AG: A →aB|a|ε; B →aB|bA|a|b|ε;可化简为:G: A →aB|ε;B →aB|bA|ε四、 设将文法G 改写成等价的LL(1)文法,并构造预测分析表。
G :S→S*a T|aT|*aT ; T →+a T|+a解:消除左递归后的文法G ’: S →aTS ’|*aTS ’S ’→*aTS ’|εT →+aT|+a提取左公因子得文法G ’’: S →aTS ’|*aTS ’S ’→*aTS ’|ε T →+aT ’T ’→T|ε Select(S →aTS ’)={a} Select(S →*aTS ’)={*}Select(S →aTS ’)∩Select(S →*aTS ’)=Ф Select(S ’→*aTS ’)={*}Select(S ’→ε)=Follow(s ’)={#}Select(S ’→*aTS ’)∩Select(S ’→ε)= Ф Select(T →+aT ’)={+}Select(T ’→T)=First(T) ={+}Select(T ’→ ε)=Follow(T ’)={*,#}Select(T ’→T)∩Select(T ’→ε)= Ф 所以该文法是LL(1)文法。
《编译原理》期末考试题库含答案.docx

《编译原理》模拟试题一一、是非题(请在括号内,正确的划错误的划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. _________________________________________ 解释程序处理语言时,大多数采用的是 ___________________________________ 方法。
编译原理期末试题及答案
编译原理期末试题及答案一、选择题(每题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.利用有限的机器内存但降低了机器的执行效率2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法d.以上三项都是3、变量应当。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4、编译程序绝大多数时间花在上。
a.出错处理b.词法分析c.目标代码生成d.管理表格5、不可能是目标代码。
a.汇编指令代码b.可重定位指令代码c.绝对指令代码d.中间代码6、使用可以定义一个程序的意义。
a.语义规则b.词法规则c.产生规则d.词法规则7、词法分析器的输入是。
a.单词符号串b.源程序c.语法单位d.目标程序8、中间代码生成时所遵循的是- 。
a.语法规则b.词法规则c.语义规则d.等价变换规则9、编译程序是对。
a.汇编程序的翻译b.高级语言程序的解释执行c.机器语言的执行d.高级语言的翻译10、语法分析应遵循。
a.语义规则b.语法规则c.构词规则d.等价变换规则解答1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
4、编译程序打交道最多的就是各种表格,因此选d。
5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。
6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。
因此选a。
7、b 8、c 9、d 10、c二、多项选择题1、编译程序各阶段的工作都涉及到。
a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成解答1.b、c 2. a、b、c、e三、填空题1、解释程序和编译程序的区别在于。
[高命中]编译原理期末试题及答案
《编译原理》期末试题(一) 一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______。 A.( )源程序 B.( ) 目标语言 C.( ) 编译方法 D.( ) 以上三项都是 6.四元式之间的联系是通过_____实现的。 A.( ) 指示器 B.( ) 临时变量 C.( ) 符号表 D.( ) 程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。 A. ( ) ┐AB∨∧CD∨ B.( ) A┐B∨CD∨∧ C.( ) AB∨┐CD∨∧ D.( ) A┐B∨∧CD∨ 8. 优化可生成_____的目标代码。 A.( ) 运行时间较短 B.( ) 占用存储空间较小 C.( ) 运行时间短但占用内存空间大 D.( ) 运行时间短且占用存储空间小 9.下列______优化方法不是针对循环优化进行的。 A. ( ) 强度削弱 B.( ) 删除归纳变量 C.( ) 删除多余运算 D.( ) 代码外提 10.编译程序使用_____区别标识符的作用域。 A. ( ) 说明标识符的过程或函数名 B.( ) 说明标识符的过程或函数的静态层次 C.( ) 说明标识符的过程或函数的动态层次 D. ( ) 标识符的行号 三、填空题(每空1分,共10分) 1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。 2.扫描器是__词法分析器___,它接受输入的__源程序___,对源程序进行___词法分析__并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
编译原理期末测试练习题及答案
一、单选题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集合均是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试卷第 1 页 共 10 页 期末考试试卷 (A)卷
一、填空题(每小题2分,共20分)
1、字母表∑,用∑* 表示∑上所有有穷长的串集合,∑*称为∑的 ① 。 2、设z=abc,则z的固有头是 ① . 3、如何由语言基本符号组成程序中各个语法成分(包括程序)的一组规则叫 ① . 4、设={a,b}, 上的正规式(a|b)(a|b) 相应的正规集为 ① 5、NFA的映象f是从”状态×字”映射到"状态子集",f为 ① 值函数。 6、LR分析是按规范句型的 ① 为可归约串。 7、结点的 ① 属性值由该结点的兄弟结点和父结点的属性值计算。 8、如果分析树中一结点的属性b依赖于属性c,那么这个结点的属性b的语义规则的计算必须在定义属性c的语义规则的计算 ① 。 9、对于栈式符号表,引入一个显示嵌套层次关系表- ① 表,该表总是指向当前正在处理的最内层的过程的子符号表在栈符号表中的起始位置。 10、任一有向边序列n1 → n2,n2 → n3,…,nk-1 → nk为从结点n1到结点nk的一条通路。如果n1=nk,则称该通路为 ① 。 二、单项选择(每小题2分,共14分) 1、乔姆斯基把文法分成4种类型,即0型、1型、2型和3型。其中3型文法也称为( ). A.上下无关文法 B.正规文法 C.上下文有关文法 D。无限制文法 2、生成非0开头的正偶数集的文法是( )。 A. Z::=ABC B. Z::=ABC C::=0|2|4|6|8 C::=0|2|4|6|8 B::=BA|B0|ε B::=BA|B0|0 A::=1|2|3|…|9 A::=1|2|3|…|9 C. Z::=ABC|2|4|6|8 D。 Z::=ABC|2|4|6|8 C::=0|2|4|6|8 C::=0|2|4|6|8 B::=BA|B0|0 B::=BA|B0|ε 试卷第 2 页 共 10 页
A::=1|2|3|…|9 A::=1|2|3|…|9 3、简单优先分析法从左到右扫描输入串,当栈顶出现( )时进归约。 A。素短语 B。直接短语 C。句柄 D。最左素短语 4、同心集合并有可能产生新的( )冲突。 A。归约 B.移进/移进 C。移进/归约 D。归约/归约 5、在编译中,动态存储分配的含义是( )。 A.在运行阶段对源程序中的量进行存储分配 B。 在编译阶段对源程序中的量进行存储分配 C. 在说明阶段对源程序中的量进行存储分配 D. 以上都不正确 6、活动记录中的连接数据不包含( )。 A.老SP B。返回地址 C。全局DISPLAY地址 D形式单元 7、有一语法制导翻译如下: S→bAb {printer(“1”)} A→(B {printer(“2”)} A→a {printer(“3”)} B→Aa) {printer(“4")} 若输入序列为b(((aa)a)a)b,且采用自下而上的分析法,则输出序列为( )。 A.32224441 B.34242421 C.12424243 D.34442212 三、写出条件语句 IF a>0 THEN x:=x+1 ELSE x:=4*( x— 1) 的四元式序列(6分) 四、设有基本块 (8分)
五、将下图DFA最小化,并写出最小化后DFA的正规式。(10分)
六、对下面的文法进行改写,并判断改写后是否是LL(1)文法。(15分) S Aa|b
1 6 c 3 2 4 5
7 a a b b b c b b d d a
b
B1: B:=3 D:=A+C E:=A*C F:=D+E G:=B*F H:=A+C I:=A*C J:=H+I K:=B*5 L:=K+J M:=L
(1) 画出DAG图; (2) 假设只有L在基本块后被引用,请写出优化后的四元序列。 试卷第 3 页 共 10 页
A SB B ab 七、已知文法: SS;G|G GG(T)|H Ha|(S) TT+S|S 求句型#a;(T+S);H;(S)#短语、句柄、素短语、最左素短语(12分) 八、【注意】计算机061/062班和计教061/062请做第1、2题,计算机063(海外班)请做第3题,做错题得0分.(15分) 【计算机061/062班和计教061/062班做】 1、给出文法G[S]的LR(1)项目集规范族中I0项目集的全体项目。(5分) G[S]为: (1) E E+T (2) E T (3) T T*F (4) T F (5) F (E) (6) F a 2、文法G[M]及其LR分析表如下,请给出对串dbba#的分析过程。(10分) G[M]: 1) M →VbA 2) V →d 3) V →ε 4) A →a 5) A →Aba 6) A →ε ACTION GOTO b d a # M A V 0 r3 S3 1 2 1 acc 2 S4 3 r2 4 r6 S5 r6 6 5 r4 r4 6 S7 r1 7 S8 8 r5 r5 【计算机063海外班做】 3、判断下列各题所示是否为LR类文法,若是请说明是LR(0),SLR(1),LALR(1)试卷第 4 页 共 10 页
或LR(1)的哪一种,并构造相应分析表。(15分) SaAdeBdaBreAr Aa Ba 答案:
一、填空题(每空2分,共20分) 1、 闭包 2、 ε, a, ab 3、 语法 4、 {aa,bb,ab,ba} 5、 多 6、 句柄 7、 继承 8、 之后 9、 DISPLAY 10、 环路 二、单项选择(每小题2分,共14分)
题号 1 2 3 4 5 6 7 答案 B D C D A D B 三、写出条件语句 IF a>0 THEN x:=x+1 ELSE x:=4*( x— 1) 的四元式序列(6分) 解: ① (j〉,a ,0 ,③ ) 评分标准:标号对给1分, ② (j, , , ⑥) 四元式格式对给1分, ③ (+,x ,1 ,T1) 每2条四元式序列对给1分。 ④ (:= ,T1, , T2 ) ⑤ (j , , , ⑨ ) ⑥ (- ,x, 1,T3) ⑦ (*,4,T3, T4 ) ⑧ (:= ,T4 , , x) ⑨ 四、 设有基本块 (8分) (1) 画出DAG图; (2) 假设只有L在基本块后被引用,请写出优化后的四元序列。 评分标准:DAG图正确给4分,代码每条1分. 解:(1)对于B1其DAG图: 试卷第 5 页 共 10 页
若只有L活跃,则代码为 D:=A+C E:=A*C F:=D+E L:=F+15 五、将下图DFA最小化,并写出最小化后DFA的正规式。(10分) 解:P0=({6,7},{1,2,3,4,5}) P0=({6,7},{1,2},{3,4,5}) 输入b进入不同状态. P0=({6,7},{1,2},{3,4},{5}) 3,4对d有定义,5没有定义 最小化DFA如下:
正规式为:b*a(c|da)*bb* 评分标准:划分状态集过程给3分,图对得5分,图部分对根据对的多少给2-4分,正规上式对给2分。 六、对下面的文法进行改写,并判断改写后是否是LL(1)文法.(15分) S Aa|b A SB B ab 【解法1】 first(S)={b} first(A)={b} first(B)={a} follow(S)={#,a} follow(A)={a} follow(B)={a} select(SAS)=first(AS)={b} select(Sb)=first(b)={b}
L,M n1 n9 n3 n4 n2 n7 n6 n5 n8 15 3 K B A C
+ G * +
F,J
D,H E,I + *
1 6 c 3 5
a b b
d a
b 试卷第 6 页 共 10 页
select(SAS)∩select(Sb)={b}≠φ 所以该文法不是LL(1)文法 改写为: S Aa|b S SBa|b A SB A SB B ab B ab 消除左递归: S bS’ 化简得: S b S’ S Ba S’|ε S’ Ba S’|ε A SB (多余) B ab B ab first(S)={b} first(S’)={a,ε} first(B)={a} follow(S)={#} follow(S’)={#} follow(B)={a} select(SbS')=first(bS’) ={b} select(S’BaS’)=first(BaS')={a} select(S'ε)=first(ε)Ufollow(S')={#, ε}
select(S’BaS’)∩select(S’ε)=φ 所以改写后是LL(1)文法. 评分标准:改写前判断LL(1)全对4分,改写正确4分,改写后判断LL(1)正确得6分,最后结论1分。 【解法2】 first(S)={b} first(A)={b} first(B)={a} follow(S)={#,a} follow(A)={a} follow(B)={a} select(SAS)=first(AS)={b} select(Sb)=first(b)={b} select(SAS)∩select(Sb)={b}≠φ 所以该文法不是LL(1)文法 用S的产生式右部代替A的产生式右部的S得: S→Aa|b A→AaB|bB B→ab 消除左递归后文法变为: 0) S→A a 1) S→b 2) A→b B N 3) N→a B N 4) N→ε 5) B→a b 非终结符 FIRST集 FOLLOW集 S {b} {#} A {b} {a} B {a} {a} N {a,ε} {a} SELECT(S→A a)∩SELECT(S→b) ={ b }∩ { b }={ b }≠φ SELECT(N→a B N)∩SELECT(N→ε) ={ a }∩ { a }={ a }≠φ 所以文法不是LL(1)的。 评分标准:改写前判断LL(1)全对4分,改写正确4分,改写后判断LL(1)正确得6分,最后结论1分. 七、已知文法: SS;G|G