admin 管理员组

文章数量: 1086019


2025年1月1日发(作者:html标签可以交叉嵌套吗)

编译原理自测一

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

分,共5分)

1、算符优先关系表不一定存在对应的优先函数。正确

2、数组元素的地址计算与数组的存储方式有关。.正确

3、仅考虑一个基本块,不能确定一个赋值是否真是无用的。正确

4、每个文法都能改写为LL(1)文法。不正确

5、对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。不正确

二、填空题

1、 从功能上说,程序语言的语句大体可分为(执行性)语句和(说明性)语句两大类。

2、扫描器的任务是从(源程序)中识别出一个个(单词符号)。

3、所谓最右推导是指:(任何一步αβ都是对α中最右非终结符进行替换的)。

4、语法分析最常用的两类方法是(自上而下)和(自下而上)分析法。

5、一个上下文无关文法所含四个组成部分是(一组终结符号,一组非终结符号、一

个开始符号、一组产生式)。

6、所谓语法制导翻译方法是(为每个产生式配上一个翻译子程序,并在语法分析的

同时执行这些子程序)。

7、符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、?)等

等。

8、一个过程相应的DISPLAY表的内容为(现行活动记录)。

9、常用的两种动态存贮分配办法是(栈式)动态分配和 (堆式)动态分配。

10、产生式是用于定义(语法范畴)的一种书写规则。

三、名词解释

1.遍--指编译程序对源程序或中间代码程序从头到尾扫描一次。

2.无环路有向图(DAG)--如果有向图中任一通路都不是环路,则称庐有向图为

无环路有向图,简称DAG。

3.语法分析--按文法的产生式识别输入的符号串是否为一个句子的分析过程。

4.短语--令G是一个文法。S划文法的开始符号,假定αβδ是文法G的一

个句型,如果有SαAδ且AB,则称β是句型αβ相对非终结符A的短语。

5.后缀式--一种把运算量写在前面,把算符写在后面的表示表达式的方法。

编译原理自测二

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

5分)

1、一个LL(1)文法一定是无二义的。.正确

2、逆波兰法表示的表达式亦称前缀式。.不正确

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

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

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

正确

二、填空题

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

义)规则进行的 。

2、程序语言的单词符号一般可以分为(基本字、标识符、常量、算符、界符)

等等。

3、语法分析器的输入是 (单词符号串),其输出是 (语法单位)

4、所谓自上而下分析法是指(从开始符号出发,向下推导,推出句子)。

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

的)。

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

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

8、一个名字的属性包括 (类型)和(作用域)。

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

采用 (动态存储分配)策略。

10、所谓优化是指(对程序进行各种等价变换,使得从变换后的程序出发,能生

成更有效的目标代码)。

三、名词解释

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

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

3.最右推导——指对于一个推导序列中的每一步直接推导,被替换的总是当前

符号串中的最右非终结符号。

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

进行翻译的办法叫做语法制导翻译。

5.基本块——指程序中一个顺序执行的语句序列,其中只有一个入口,一个出

口,入口即第一个语句。出口即最后一个语句。

编译原理自测三

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

1、文法 G 产生的 ⑴ 的全体是该文法描述的语言。D

A.句型 B.终结符集 C. 非终结符集 D. 句子

2、若文法 G 定义的语言是无限集,则文法必然是 ⑵ :A

A.递归的 B.前后文无关的 C.二义性的 D.无二义性的

3、Chomsky 定义的四种形式语言文法中, 0 型文法又称为 ⑶A 文法; 1 型文法又称为 ⑷

C文法; 2 型语言可由 ⑸ G识别。

A.短语结构文法

E.图灵机

A.短语结构文法

E.图灵机

A.短语结构文法

E.图灵机

B.前后文无关文法

F.有限自动机

C.前后文有关文法 D.正规文法

G.下推自动机

C.前后文有关文法 D.正规文法 B.前后文无关文法

F.有限自动机 G.下推自动机

C.前后文有关文法 D.正规文法 B.前后文无关文法

F.有限自动机 G.下推自动机

4、一个文法所描述的语言是 ⑹ A;描述一个语言的文法是 ⑺B 。

A.唯一的

A.唯一的

B.不唯一的

B.不唯一的

C.可能唯一,可能不唯一

C.可能唯一,可能不唯一

5、数组的内情向量中肯定不含有数组的 ⑻A 的信息

A.维数 B.类型 C.维上下界 D.各维的界差

6、在下述的编译方法中,自底向上的方法有 ⑼ F,自顶向下的分析方法有 ⑽A 。

①简单优先分析 ②算符优先分析 ③递归下降分析 ④预测分析技术

⑤LR(K)分析 ⑥ SLR(k)分析 ⑦ LL(k)分析 ⑧LALR(K)分析

A.③④⑦

B. ③④⑧ C.①②⑧ D.③④⑤⑥⑦

E.①②⑤⑥⑦

A.③④⑦

F. ①②⑤⑥⑧

C.①②⑧ D.③④⑤⑥⑦ B. ③④⑧

E.①②⑤⑥⑦ F. ①②⑤⑥⑧

二、简答题

1 . LL ( 1 )分析法对文法有哪些要求?

对于 G 中的每个产生式 A →γ 1 | γ 2 | … | γ m ,其各候选式均应满足:

(1)不同的候选式不能推出以同一终结符号打头的符号串,即FIRST( γ

i ) ∩ FIRST( γ j )= φ( 1 ≤ i , j ≤ m ; i ≠ j )

(2)若有γ j ε,则其余候选式γ i 所能推出的符号串不能以

FOLLOW(A) 中的终结符号开始,即有

FIRST( γ i ) ∩ FOLLOW(A)= φ( i ≤ 1,2, … ,m ; i ≠

j )

2 .常见的存储分配策略有几种?它们都适合于什么性质的语言?

有三种分配存储空间的方式:

( 1 ) 静态分配 若在编译阶段就能确定源程序中各个数据实体的存

储空间大小,则可以采用较简单的静态存储管理。适合静态管理的语言应具备条

件: 数组上下界是常数、过程调用不允许递归、不允许动态建立数据实体。

( 2) 栈式分配 适用于允许递归调用的程序设计语言 ;

( 3 ) 堆式分配 对于允许程序在运行时为变量 动态申请和释放存储

空间 的语言 ,采用 堆式分配 是最有效的解决方案 。

3 .常见循环优化都有哪些项目?

不变运算外提;运算强度削弱;消除归纳变量;下标变量地址计算优化。

4 .什么是活动记录?它主要由哪些内容构成?

一个过程的一次执行所需信息的管理,是通过称为 活动记录 的连续存储块来实

现的。活动记录的主要内容有:

( 1) 临时变量域 存放目标程序临时变量的值;

( 2 )局部数据域 存放过程本次执行时的局部数据、简单变量及数组内情向量等;

( 3 )机器状态域 保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返

回地址等;

( 4 )存取链 为访问其它活动记录中所存放的非局部数据所提供的链地址;

( 5 )控制链 指向主调过程的活动记录;

( 6 )实参 存放主调过程为被调用过程所提供的实参信息;

( 7 )返回值 为主调过程存放被调过程的返回值


本文标签: 文法 过程 分配 变量 程序