编译原理样题1(有答案)

合集下载

01-编译原理课程测试第一套卷(附解析)-编译原理试题-中国科技大学

01-编译原理课程测试第一套卷(附解析)-编译原理试题-中国科技大学

编译原理课程测试第一套卷(附解析)

1.(20分)写出字母表∑ = {a, b}上语言L = {w | w中a的个数是偶数}的正规式,并画出接受该语言的最简DFA。

2.(15分)考虑下面的表达式文法,它包括数组访问、加和赋值:

E → E[E] | E + E | E = E | (E) | id

该文法是二义的。请写一个接受同样语言的LR(1)文法,其优先级从高到低依次是数组访问、加和赋值,并且加运算是左结合,赋值是右结合。

3.(10分)下面是产生字母表∑ = { 0, 1, 2}上数字串的一个文法:

S → D S D | 2

D → 0 | 1

写一个语法制导定义,它打印一个句子是否为回文数(一个数字串,从左向右读和从右向左读都一样时,称它为回文数)。

4.(10分)教材上7.2.1节的翻译方案

P →{offset := 0}

D

D →D ; D

D →id : T { enter(, T.type, offset); offset := offset + T.width }

T →integer {T.type := integer; T.width := 4 }

T→real{T.type := real; T.width := 8 }

使用了变量offset。请重写该翻译方案,它完成同样的事情,但只使用文法符号的属性,而不使用变量。

5.(5分)一个C语言程序如下:

void fun(struct {int x; double r;} val) { }

main()

{

struct {int x; double r;} val;

编译原理试题及答案(1)

编译原理试题及答案(1)

<编译原理>历年试题及答案

一.(每项选择2分,共20分)选择题

1.将编译程序分成若干个“遍”是为了_b__。

a.提高程序的执行效率

b.使程序的结构更加清晰

c.利用有限的机器内存并提高机器的执行效率

d.利用有限的机器内存但降低了机器的执行效率

2.构造编译程序应掌握__d__。

a.源程序

b.目标语言

c.编译方法

d.以上三项都是

3.变量应当c_。

a.持有左值

b.持有右值

c.既持有左值又持有右值

d.既不持有左值也不持有右值

4.编译程序绝大多数时间花在_d___上。

a.出错处理

b.词法分析

c.目标代码生成

d.管理表格

5.词法分析器的输出结果是_c___。

a.单词的种别编码

b.单词在符号表中的位置

c.单词的种别编码和自身值

d.单词自身值

6.正规式MI和M2等价是指__c__。

a. MI和M2的状态数相等

b.Ml和M2的有向弧条数相等。

C.M1和M2所识别的语言集相等 d. Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—c。

a.语法规则 b.词法规则 c.语义规则 d.等价变换规则

8.后缀式ab+cd+/可用表达式__b_来表示。

a.a+b/c+d b.(a+b)/(c+d) c.a+b/(c+d) d.a+b+c/d

9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。

a.动态存储

b.栈式存储

c.静态存储

d.堆式存储

10.堆式动态分配申请和释放存储空间遵守___d_____原则。

a.先请先放

b.先请后放

c.后请先放

d.任意

二(每小题10分,共80分)简答题

编译原理考试试题1

编译原理考试试题1

编译原理

一、(5×6分)回答下列问题:

1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系? 2.什么是句柄?什么是素短语?

3.划分程序的基本块时,确定基本块的入口语句的条件是什么? 4.运行时的DISPLAY 表的内容是什么?它的作用是什么? 5.对下列四元式序列生成目标代码:

A:=B*C D:=E+F G:=A+D H:=G*2

其中,H 是基本块出口的活跃变量, R0和R1是可用寄存器

二、(8分)设∑={0,1}上的正规集S 由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA 。 三、(6分)写一个文法使其语言为L(G)={ a n b m a m b n | m,n ≥1}。 四、(8分)对于文法G(E):

E →T|E+T T →F|T*

F F →(E)|i

1. 写出句型(T*F+i)的最右推导并画出语法树。

2. 写出上述句型的短语,直接短语、句柄和素短语。 五、(12分)设文法G(S):

(

|*)B B |B A A A |SiA S A →+→→ 1.构造各非终结符的FIRSTVT 和LASTVT 集合; 2.构造优先关系表和优先函数。

六、(9分)设某语言的do-while 语句的语法形式为 S → do S (1) While E

其语义解释为:

真 假

S (1)的代码 E 的代码

针对自下而上的语法分析器,按如下要求构造该语句的翻译模式:

(1) 写出适合语法制导翻译的产生式;

(2) 写出每个产生式对应的语义动作。

七、(8分)将语句if (A<X) ∧ (B>0) then while C>0 do C:=C+D; 翻译成四元式。

编译原理期末试题8套含答案大题集

编译原理期末试题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是无二义的,则它的任何句子α_____。

编译原理练习一附答案

编译原理练习一附答案

编译原理练习一附答案

一、单选题(每题2分,共20分)

1.编译器的()阶段可将源程序的字符流收集到若干记号中。

A. 语法分析

B. 语义分析

C. 代码生成

D. 词法分析

2. 文法A→aA | b属于正则文法,正则文法在乔姆斯基层次中对应于()文法。

A. 1型

B. 2型

C. 3型

D. 0型

3. 某C语言源代码文件包含#include <stdio.h>,()将对源代码进行处理,把文件stdio.h包含进去。

A.编译器

B.解释器

C.汇编器

D.预处理器

4. LL(1)文法的充要条件是()。

A.对于文法中的每条产生式U→α1|α2|…|αn,要求FIRST(αi)∩FIRST(αj)=Φ(i≠j)

B.该文法对应的LL(1)分析表中每个项目最多只有一条产生式。

C.A和B

D.都不是

5. 以下说法中正确的是()。

A.任何语言都可以描述为一个正则表达式。

B.对于任何一个NFA M,都存在一个DFA M’,满足L(M)= L(M’)。

C.任何一个DFA只有一个终态。

D.NFA的弧上标记只含输入字母表中的元素。

6.合成属性的计算可以通过对语法树进行()遍历进行。

A. 前序

B.中序

C.后序

D.任意

7.乔姆斯基的2型文法是这样一种语言,其产生式限制为()。

A. α->β

B. P->β

C. P->a或P->aβ

D. αPγ->αβγ

8. 正则式的“*”读作()。

A. 并且

B.连接

C.正则闭包

D.闭包

9. 编译程序中的语义分析器接受以()为单位的输入,并产生信息供以后各阶段使用。

编译原理样题(含答案)

编译原理样题(含答案)

二 判断题 1、最左归约也称为规范归约。(第3章) 2、逆波兰法表示的表达式把运算对象放在运算符的后面。(第8章) 3、同心集的合并有可能产生“归约/归约”冲突。(第7章) 4、DFA可以通过多条路径识别一个符号串。(第4章) 5、动态数组的存储空间在编译时就可完全确定。(第10章) 三 填空题 1、文法 进项目 3、句柄 语义 2、待约项目 4、词法 移
六、写一个2型文法G,使得L(G)={ai+2bi|i>=0} ∪{aibi+2|i>=0}。(第3章) 解:文法G(S): S aSb S aa S bb 七、设文法G(S):(第5章) S → S+aF|aF|+aF F → *aF|*a (1)消除左递归和左因子; (2)构造相应的FIRST和FOLLOW集合; (3)构造预测分析表。 (1)(消除左递归,提公因左因子) S→aFS'|+aFS' S'→+aFS'|ε F→*aF' F'→F|ε (2) FIRST(S)={a,十} FIRST(50)={+,ε } FIRST(F)={*} FIRST(F')={*,ε} (3) FOLLOW(S)={#} FOLLOW(S')={#} FOLLOW(F)=(+,#) FOLLOW(+,#}
答案 二 判断题 √×√×× 三 四 填空题
五 解:用子集法确定化如下表 I {X,0,1,3} {0,1,3}.. {2,3,Y}.. {1,3}.... {2,Y}.... {Y}.... 确定化后如下图 Ia {0,1,3} {0,1,3} {1,3} {1,3} Ib {2,3,Y} {2,3,Y} {Y}.... {2,Y}.. {Y}.... 状态 -X 1 +2 3 +4 +Y

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案

一、选择题

1. 编译器的主要功能是什么?

A. 将高级语言代码翻译成机器语言代码

B. 进行程序调试

C. 进行代码优化

D. 管理程序运行时的内存分配

答案:A

2. 词法分析器的主要任务是什么?

A. 将源代码分解成多个语句

B. 将源代码分解成多个词素

C. 检查源代码的语法正确性

D. 将词素转换为相应的语法单位

答案:B

3. 下列哪个是自顶向下的语法分析方法?

A. LL(1)分析法

B. LR(1)分析法

C. LALR(1)分析法

D. GLR分析法

答案:A

4. 语义分析的主要任务是什么?

A. 检查程序的语法正确性

B. 检查程序的类型正确性

C. 将源代码转换为目标代码

D. 进行程序的优化

答案:B

5. 代码生成阶段的主要任务是什么?

A. 将语法树转换为目标代码

B. 进行程序的优化

C. 检查程序的类型正确性

D. 将源代码分解成多个词素

答案:A

二、简答题

1. 简述编译过程的主要阶段。

答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分

析和代码生成。词法分析将源代码分解成词素,语法分析检查源代码

的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码

转换为目标代码。

2. 什么是中间代码?它在编译过程中起到什么作用?

答案:中间代码是一种介于源代码和目标代码之间的代码形式,它

通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。中

间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生

成更加方便和高效。

三、论述题

1. 论述编译器优化的几种常见方法。

答案:编译器优化主要包括以下几种方法:常量折叠、死代码消除、公共子表达式消除、循环优化、代码内联、寄存器分配等。这些优化

编译原理教程课后习题答案——第一章

编译原理教程课后习题答案——第一章

第一章绪论

1.1 完成下列选择题:

(1) 构造编译程序应掌握。

a. 源程序

b. 目标语言

c. 编译方法

d. 以上三项都是

(2) 编译程序绝大多数时间花在上。

a. 出错处理

b. 词法分析

c. 目标代码生成

d. 表格管理

(3) 编译程序是对。

a. 汇编程序的翻译

b. 高级语言程序的解释执行

c. 机器语言的执行

d. 高级语言的翻译

【解答】

(1) d (2) d (3) d

1.2 计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?

【解答】计算机执行用高级语言编写的程序主要有两种途径:解释和编译。

在解释方式下,翻译程序事先并不采用将高级语言程序全部翻译成机器代码程序,然后执行这个机器代码程序的方法,而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能的机器代码语句串并执行,而所翻译的机器代码语句串在该语句执行后并不保留,最后再读入下一条源程序语句,并解释执行。这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行的,如果一语句处于一循环体中,则每次循环执行到该语句时,都要将其翻译成机器代码后再执行。

在编译方式下,高级语言程序的执行是分两步进行的:第一步首先将高级语言程序全部翻译成机器代码程序,第二步才是执行这个机器代码程序。因此,编译对源程序的处理是先翻译,后执行。

从执行速度上看,编译型的高级语言比解释型的高级语言要快,但解释方式下的人机界面比编译型好,便于程序调试。

这两种途径的主要区别在于:解释方式下不生成目标代码程序,而编译方式下生成目标代码程序。

1.3 请画出编译程序的总框图。如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题?

《编译原理》考试试题及答案

《编译原理》考试试题及答案

《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)

⼀、判断题:

1.⼀个上下⽂⽆关⽂法的开始符,可以是终结符或⾮终结符。( X )

2.⼀个句型的直接短语是唯⼀的。( X )

3.已经证明⽂法的⼆义性是可判定的。(X )

4.每个基本块可⽤⼀个DAG表⽰。

(√)

5.每个过程的活动记录的体积在编译时可静态确定。(√)

型⽂法⼀定是3型⽂法。(x )

7.⼀个句型⼀定句⼦。

( X )

8.算符优先分析法每次都是对句柄进⾏归约。(应是最左素短语) ( X )

9.采⽤三元式实现三地址代码时,不利于对中间代码进⾏优化。(√)

10.编译过程中,语法分析器的任务是分析单词是怎样构成的。( x )

11.⼀个优先表⼀定存在相应的优先函数。( x )

12.⽬标代码⽣成时,应考虑如何充分利⽤计算机的寄存器的问题。( )

13.递归下降分析法是⼀种⾃下⽽上分析法。( )

14.并不是每个⽂法都能改写成LL(1)⽂法。( )

15.每个基本块只有⼀个⼊⼝和⼀个出⼝。

( )

16.⼀个LL(1)⽂法⼀定是⽆⼆义的。( )

17.逆波兰法表⽰的表达试亦称前缀式。

( )

18.⽬标代码⽣成时,应考虑如何充分利⽤计算机的寄存器的问题。( )

19.正规⽂法产⽣的语⾔都可以⽤上下⽂⽆关⽂法来描述。( )

20.⼀个优先表⼀定存在相应的优先函数。

( )

型⽂法⼀定是2型⽂法。( )

22.如果⼀个⽂法存在某个句⼦对应两棵不同的语法树,则⽂法是⼆义性的。( )

⼆、填空题:

1.( 最右推导)称为规范推导。

2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码⽣成),(代码优化)和(⽬

编译原理第一章练习和答案

编译原理第一章练习和答案

编译原理第一章练习和答案

例1设有文法G[S]:

S →a|(T )| T →T,S|S (1)试给出句子(a,a,a)的最左推导。(2)试给出句子(a,a,a)的分析树(3)试给出句子(a,a,a)的最右推导和最右推导的逆过程(即最左规约)的每一步的句柄。【解】(1) (a,a,a)的最左推导

S=>(T) =>(T,S) =>( T,S,S) =>( S,S,S) =>(a,S,S) =>(a,a,S) =>(a,a,a) (2)(a,a,a)的分析树

S

( T ) T , S S T ,

S a

a

(3) (a,a,a)最右推导最左规约每一步的句柄

S=>(T) 句柄为:(T) =>(T,S) 句柄为:T,S =>(T,a) 句柄为:a =>(T,S,a) 句柄为:T,S =>(T,a,a) 句柄为:第一个a =>(S,a,a) 句柄为:S

=>(a,a,a) 句柄为:第一个a

例2已知文法G[Z]:

Z →0U|1V U →1Z|1 V →0Z|0

(1)请写出此文法描述的只含有4个符号的全部句子。(2) G [Z]产生的语言是什么?(3)该文法在Chomsky 文法分类中属于几型文法?【解】(1)0101,0110,1010, 1001

(2)分析G[Z]所推导出的句子的特点:由Z 开始的推导不外乎图1所示的四种情形。

图 1文法G[Z]可能的几种推导

Z

1

U Z U

Z

1

Z

1

Z

1

V

由Z 推导出10或01后就终止或进入递归,而Z 的每次递归将推导出相同的符号串:10或

编译原理习题1

编译原理习题1

※<习题一>

填空题:

1、编译阶段按前后端组合,可分为编译前端和编译后端,其中与目标机有关的阶段一般属于分析阶段,而与源语言相关的阶段一般属于综合阶段。

2、设文法G =(V N,V T,P,S),若P中的每一个规则A→β满足:A∈V N,β∈(V N∪V T)* ,则称此文法为 0 型文法。

3、已知M为一个确定的有穷自动机,M=(Q,∑,q0,F,δ),则Q表示一个有穷的状态集合 ; ∑表示字母表,δ表示状态转换函数,q0是唯一的初始状态。

4、规范推导是指最右推导,每步推导只变换符号串中最右边的非终结符,其逆过程即最左规约,称为规范归约。

5、LR(0)项目集规范族中的项目可分为四类,即移进项目、待约项目、归约项目和接受项目,其中归约项目和归约项目或移进项目共存于一个项目集中会引起冲突。

6、表达式s:=a+b*c/d+(b-d)的逆波兰式表示为sabc*d/bd-++:= 。

判断题:

1、从功能上看,一个编译程序就是一个语言翻译程序。T

2、LEX是一个语法分析程序的生成系统。F

3、一个句型的最左(直接)简单短语称为句柄。T

4、已证明文法的二义性是可判定的。F

5、一个NFA一定能转换为DFA。T

6、递归下降分析法是一种不确定的自顶向下分析法。F

简答:

1、文法G是LL(1)文法的充要条件是什么?

答:(1).不能有左递归;

(2). LL(1)文法的分析表不出现多重定义

即:对于文法G的每个非终结符A的任何两条不同规则A→α|β,下面条件成立:•FIRST(α)∩FIRST(β)=φ即头符号集不相交。

编译原理样题(含答案)

编译原理样题(含答案)
+
解:用子集法确定化如下表 I {X,0,1,3} {0,1,3}.. {2,3,Y}.. {1,3}.... {2,Y}.... {Y}.... 确定化后如下图 Ia {0,1,3} {0,1,3} {1,3} {1,3} Ib {2,3,Y} {2,3,Y} {Y}.... {2,Y}.. {Y}.... 状态 -X 1 +2 3 +4 +Y
1、词法分析所依循的是语言的 ;而中间代码生成所依 循的是 。(第4,8章) 2、在LR(0)分析法中,若,βV*且a则称“S .A”为 项 目,称“S .aβ”为 项目。(第7章) 3、规范规约每次规约的是句型的______________。 (第6章) 4、无符号常数的识别和计算该常数的工作,通常在____________阶 段完成的。(第4章) 四、设字母表为{a,b}的语言L的句子是满足下述条件的串:每个a都有 b直接跟在右边。构造该语言的正则式。(第4章) (b|ab)* 五、将下图的NFA确定化为DFA,图中初态为X,终态为Y。(第4章)
六 解:文法G(S): S aSb S aa S bb 七 解: (1)(消除左递归,提公因左因子) S→aFS'|+aFS' S'→+aFS'|ε F→*aF' F'→F|ε (2) FIRST(S)={a,十} FOLLOW(S)={#} FIRST(50)={+,ε } FOLLOW(S')={#} FIRST(F)={*} FOLLOW(F)=(+,#)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第⼀章

1、将编译程序分成若⼲个“遍”是为了。

b.使程序的结构更加清晰

2、构造编译程序应掌握。

a.源程序b.⽬标语⾔

c.编译⽅法

3、变量应当。

c.既持有左值⼜持有右值

4、编译程序绝⼤多数时间花在上。

d.管理表格

5、不可能是⽬标代码。

d.中间代码

6、使⽤可以定义⼀个程序的意义。

a.语义规则

7、词法分析器的输⼊是。

b.源程序

8、中间代码⽣成时所遵循的是- 。

c.语义规则

9、编译程序是对。

d.⾼级语⾔的翻译

10、语法分析应遵循。

c.构词规则

⼆、多项选择题

1、编译程序各阶段的⼯作都涉及到。

b.表格管理c.出错处理

2、编译程序⼯作时,通常有阶段。

a.词法分析b.语法分析c.中间代码⽣成e.⽬标代码⽣成

三、填空题

1、解释程序和编译程序的区别在于是否⽣成⽬标程序。

2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码⽣成、代码优化和⽬标代码⽣成。

3、编译程序⼯作过程中,第⼀段输⼊是源程序,最后阶段的输出为标代码⽣成程序。

4、编译程序是指将源程序程序翻译成⽬标语⾔程序的程序。

⼀、单项选择题

1、⽂法G:S→xSx|y所识别的语⾔是。

a. xyx

b. (xyx)*

c. x n yx n(n≥0)

d. x*yx*

2、⽂法G描述的语⾔L(G)是指。

a. L(G)={α|S+?α , α∈V T*}

b. L(G)={α|S*?α, α∈V T*}

c. L(G)={α|S*?α,α∈(V T∪V N*)}

d. L(G)={α|S+?α, α∈(V T∪V N*)}

3、有限状态⾃动机能识别。

编译原理第一章作业完整答案版

编译原理第一章作业完整答案版

01-普通作业一(第一章)

一、选择题(从备选项中选出一个或多个正确答案)。

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. 词组

二、判断题(对于下列陈述中正确的说法选择回答“对”,否则选择回答“错”)。

1. 编译程序是一种常见的应用软件。

2. C语言的编译程序可以用C语言编写。

3. 编译方式与解释方式的区别之一在于是否生成目标程序。

4. 中间代码生成是编译程序不可或缺的部分。

5. 含有优化的编译程序执行效率高。

三、解释下列术语:

(1)编译程序

(2)源程序

(3)目标程序

(4)编译程序的前端

(5)后端

(6)遍

四、一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

五、何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系?

参考答案:

一、选择题

1. D

2. A

3. AC

4. C

5. B

二、判断题

1.错

2.对

3.对

4.错

5.错

三、

(1)把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序。

01-编译原理课程测试第一套卷(附解析)-编译原理试题-中国科技大学

01-编译原理课程测试第一套卷(附解析)-编译原理试题-中国科技大学

编译原理课程测试第一套卷(附解析)

1.(20分)写出字母表∑ = {a, b}上语言L = {w | w中a的个数是偶数}的正规式,并画出接受该语言的最简DFA。

2.(15分)考虑下面的表达式文法,它包括数组访问、加和赋值:

E → E[E] | E + E | E = E | (E) | id

该文法是二义的。请写一个接受同样语言的LR(1)文法,其优先级从高到低依次是数组访问、加和赋值,并且加运算是左结合,赋值是右结合。

3.(10分)下面是产生字母表∑ = { 0, 1, 2}上数字串的一个文法:

S → D S D | 2

D → 0 | 1

写一个语法制导定义,它打印一个句子是否为回文数(一个数字串,从左向右读和从右向左读都一样时,称它为回文数)。

4.(10分)教材上7.2.1节的翻译方案

P →{offset := 0}

D

D →D ; D

D →id : T { enter(, T.type, offset); offset := offset + T.width }

T →integer {T.type := integer; T.width := 4 }

T→real{T.type := real; T.width := 8 }

使用了变量offset。请重写该翻译方案,它完成同样的事情,但只使用文法符号的属性,而不使用变量。

5.(5分)一个C语言程序如下:

void fun(struct {int x; double r;} val) { }

main()

{

struct {int x; double r;} val;

编译原理试卷一

编译原理试卷一

编译原理试卷一

窗体顶端一、选择

1.一个正规语言只能对应()?

A 一个正规文法;

B 一个最小有限状态自动机;

2.文法G[A]:A→ε A→aB B→Ab B→a是():

A 正规文法

B 二型文法

3.下面说法正确的是():

A 一个SLR(1)文法一定也是LALR(1)文法

B 一个LR(1)文法一定也是LALR(1)文法

4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的():

A 必要条件

B 充分必要条件

窗体底端窗体顶端二、多项选择

1.PL/0语言的目标程序解释执行时用到的数据对象有():

A 目标代码CODE

B 符号表TABLE

C 数据栈S

D 关键字表WORD

2.PL/0语言编译时产生或使用的数据对象有():

A 目标代码CODE

B 符号表TABLE

C 数据栈S

D 关键字表WORD

窗体底端窗体顶端三、问答题问答第1题

(5分)将文法G[S] 改写为等价的G′[S],使G′[S]不含左递归和左公共因子。

G[S]:S→bSAe | bA

A→Ab | d

问答第2题

(10分) 判断下面文法是否为LL(1)文法,若是,请构造相应的LL(1)分析表。

S→aH

H→aMd | d

M→Ab | ε

A→aM | e

问答第3题

给出与正规式R=(ab)*(a|b*)ba等价的NFA。

问答第4题

将下图的NFA确定化为DFA。

问答第5题

(7分)

(1)给出下列PL/0示意程序中当程序执行到X过程调用Z过程后(即执行Z过程体时)的栈式存储分配布局和用Display显示表时Z过程最新活动记录的内容。

(2)说明Display表和DL(老SP),RA,TOP及全局Display的作用。 PL/0示意程序为:const a=80;

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理

一、是非题(下列各题你认为正确的,请在题干的括号内打“√”,错的打“×”。每题1分,共5分)

l、一个LL( l)文法一定是无二义的。…………………………………………… ( )

2、逆波兰法表示的表达式亦称前缀式。……………………………………………()

3、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。……………()

4、正规文法产生的语言都可以用上下文无关文法来描述。………………………()

5、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。

……………………………………………………………………………………()

二、填空题(每题2分,共5分)

1、语法分析是依据语言的( )规则进行的,中间代码产生是依据语言的( )规进行的。

2、程序语言的单词符号一般可以分为( )等等。

3、语法分析器的输入是( ),其输出是( )。

4、所谓自上而下分析法是指( )。

5、如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( )。

6、对于文法G,仅含终结符号的句型称为( )。

7、逆波兰式ab十c+d*e—所表达的表达式为( )。

8、一个名字的属性包括( )和( )。

9、对于数据空间的存贮分配,FORTRAN采用( )策略,PASCAL采用( )策略。

10、所谓优化是指( )。

三、名词解释题(每题2分,共10分)

l、词法分析器:

2、语法:

3、最右推导:

4、语法制导翻译:

5、基本块:

四、简述题(每题4分,共24分)

l、考虑下面的程序:

…………

Var i:integer;

a:array[1··2] of integer;

prncedure Q( b);

Var b:integer;

Begin

i:=1;b:=b十2;

i:=2;b:=b+3

End;

Begin

a[1]:=5;a[2]:=6;

i:=1;

Q(a[i]);print(a[l],a[2])

End.

试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出a[l],a[2]的值是什么?

2、画出识别pascal中实常数(可带正负号,但不含指数部分)的状态转换图。

3、已知文法G(S):

S→a|(A)

T→T,S|S

的优先关系如下:

4、写出表达式(a+b)/(a-b)-(a+b*c)的三元序列及四元序列。

5、符号表的作用是什么?符号表的查找和整理技术有哪几种?

6、何谓DISPLAY表?其作用是什么?

五、计算题(10分)

1、写一个文法使其语言为偶数集,且每个偶数不以0开头。(5分)

2、已知文法G(S):

S→a|(T)

T→T,S|S

(1)给出句子(a,(a,a))的最左推导并画出语法树;

(2)给出句型((T,s)a )的短语、直接短语、句柄。(8分)

3、把语句

if x>0 y>0 then z:=x+y

else Begin

x:=x+2

y:=y+3

End;

翻译成四元式序列。(6分)

4、设某语言的for语句的形式为

for i:=E(1) to E(2) do S

其语义解释为

i:=E(1)

LIMIT:=E(2)

again: if i<=LIMIT then

Begin

S;

i:=i+1

goto again

End;

(1)写出适合语法制导翻译的产生式;

(2)写出每个产生式对应的语义动作。(6分)

5、设文法G(S):

S→S+aF|aF|+aF

F→*aF|*a

(1)消除左递归和回溯;

(2)构造相应的FIRST和Follow集合;

(3)构造预测分析表。(10分)

6、对以下基本块

T1=2

T2:=A一B

T3=A+B

T4=T2*T3

T5=3*T1

T6=A-B

T:=A+B

T7=T6+L

T8=T5*4

M:=T8+T7

L:=M

(1)画出DAG图;

(2)假设只有L在基本块出口之后还被引用,请写出优化后的四元式序列。(6分)

编译原理答案

一、是非题(下列各题你认为正确的,请在题干的括号内打“√”,错的打“×”。每题1分,共5分)

1.√

2.×

3. √

4.√

5.×

二、填空题(每题2分,共5分)

1.语法;语义

2.基本字、标识符、常量、算符。界符

3.单词符号串;语法单位

4.从开始符号出发,向下推导,推出句子

5.二义的

6.句子

7.(a+b+c)*d-e 8.类型;作用域

9.静态存储分配

10.对程序进行各种等价变化,使得从变换后的程序出发,能生成更有效的目标代码

三、名词解释题(每题2分,共10分)

1.指执行词法分析的程序。

2.是一组规则,用它可以形成和产生一个合法的程序。

3.指任何一步α推出β都是α中的最右非终结符替换。

4.在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译。

5.指程序中一个顺序执行的语句序列,其中只有一个入口,一个出口,入口即第一个语句。出口即第二个语句。

四、简述题(每题4分,共24分)

1. 答:传地址:a=l0,b=6

传值:a=5,b=6 (每个值1分)

2. 答:

3.

4.(1)(三元式2分)

①(+,a,b)

②(-,a,b)

相关文档
最新文档