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 )返回值 为主调过程存放被调过程的返回值
版权声明:本文标题:编译原理自测一二三及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735767445a1689609.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论