当前位置:文档之家› 编译原理练习三

编译原理练习三

编译原理练习三
一、填空题
1.编译过程中,每当扫描器识别出一个名字后,编译程序就查阅,看该名字是否在其中。

如果该名字是一个新名字就将它添进。

2.在语义分析阶段,符号表所登记的信息将用于和;在目标代码生成阶段,符号表是的依据。

3.过程信息表中必须包括、和。

4.编译程序使用区别标识符的作用域。

5.编译程序在其工作过程中使用最多的数据结构是。

它记录着源程序中的各种信息,以便查询和修改。

在这些中,尤以最为重要,它的生存期最长,使用也最频繁。

6.过程与过程引用中信息交换的方法是和。

7.PASCAL语言中局部变量的作用域为。

8.将过程的每次执行和过程的相对应就解决了过程递归调用所引起的问题。

9.形式参数和实在参数之间的对应关系通常按来确定。

10.对于某个压缩了的上下文无关文法,当把每个文法符号联系于一组属性,且让该文法的规则附加以时,称该文法为属性文法。

11.文法符号的属性有两种,一种称为,另一种称为。

12.一个文法符号的继承属性是通过语法树中它的结点的相应文法符号的属性来计算的,而综合属性是通过语法树中它的结点的属性之值来计算的。

13.语法制导的编译程序能同时进行分析和分析。

14.在PASCAL中,由于允许用户动态申请与释放内存空间,所以必须采用存储分配技术。

15.静态区的分配对象是。

静态区分配的特点是。

二、选择题(单项和多项)
1.在编译过程中,符号表的主要作用是。

a.帮助错误处理
b.辅助语法错误的检查
c.辅助语义的(即上下文有关的)正确性检查
d.辅助代码生成
e.辅助对目标代码的优化
2.PASCAL中过程说明的局部量地址分配在。

a.调用者的数据区中
b.被调用者的数据区中
c.主程序的数据区中
d.公共数据区中
3.与PASCAL语言存储分配方式相似的语言是。

a.C语言
b.BASIC语言
c.FORTRAN-77
4.运行阶段的存储组织与管理的目的是。

a.提高编译程序的运行速度
b.提高目标程序的运行速度
c.为运行阶段的存储分配作准备
5.动态存储分配时,可以采用的分配方法有:。

a.以过程为单位的栈式动态存储分配
b.堆存储分配
c.最佳分配方法
6.过程调用时,参数的传递方法通常有。

a.传值
b.传地址
c.传结果
d.传名
7.过程调用的参数传递中,将出现的任一形蚕都代之以相应的实参的为,过程体对形参的任何引用或赋值都被处理成对形式单元的间接访问的为,像使用局部变量一样使用形式单元的为。

a.传值
b. 传名
c.传地址
d.传结果
8.FORTRAN编译中存储分配是。

a.静态存储分配
b. 动态存储分配
9.在编译方法中,动态存储分配的含义是什么?
a.在运行阶段对源程序中的量进行分配
b.在编译阶段对源程序中的量进行分配
c.在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要
改变
d.以上都不正确
9.名字就是标识符,标识符就是名字。

a.正确
b.不正确
10.在编译时有传名功能的语言是。

a.ALGOL 60
b.BASIC
c.FORTRAN
d.COBOL
三、在编译过程中为什么要建立符号表?符号表应包括那些内容?
四、试写出下面类型的内部表示:
array [1..5] of array [1..10] of record i: integer;
b: boolean
end
五、当前层数为L,可用偏移量Offset值为101,且有下面程序,写出本层符号
表的内容。

const m=333;
n=444;
type at=array[1..10] of real;
rt=record i,j:integer end;
V AR a,b:at; x,y:real;
六、试写出标识符表的平分查表算法
七、试写出二叉式局部符号表的管理程序(创建,填表,查表,撤消)
八、简述的基本思想。

静态存储分配对语言有何要求?
九、试比较静态存储分配方案和动态存储分配方案
十、一个活动记录包括哪些信息?各信息的作用?何时填写它们?
十一、表达式文法如下:
E→n
E→(E)
E→E+E
试给出定义表达式值的属性文法。

相关主题