《编译原理与技术》练习题 13
练习 6
6.1 符号表的作用有哪些?
6.2 符号表的表项通常包括哪些属性,主要描述的内容是什么?
6.3 符号表组织的数据结构有哪些种?每种组织结构选取的主要依据是什么?
6.4 程序块是程序语言的主要构造元素,它允许以嵌套的方式确定局部声明。大多数语言规定,程序
块结构的声明作用域使最近嵌套规则,请按照这个规则写出下列声明的作用域。
main() {
/* 开始块B0 */
int a = 0; int b =0;
{ /* 开始块B1 */
int b = 1;
{ /* 开始块B2 */
int a = 2; ……
} /* 结束块B2 */ { /* 开始块B3 */
int b = 3; ……
} /* 结束块B3*/ ……
} /* 结束块B1*/ }
6.5 C语言中规定变量标识符可以定义为:extern、ertern static、auto、local static和register,请对这
5种变量分别说明其作用域。
6.6 设散列表为HT[13],哈希函数定义为hash(key)=key(整数除法取余运算),用链地址法解决
冲突对下列关键码12,23,45,57,20,3,31,15,56,78造表。
《编译原理与技术》练习题 14
练习 7
7.1 请考虑过程和活动记录的联系和区别。 7.2 请解释下列概念:
生存期,过程的活动,活动树,活动记录。
7.3 有哪些常见的参数传输方式,请分析和比较它们各自的特点。
7.4 对你熟悉的高级程序语言(如C、Pascal、C++、Java或C#),了解它们的参数传输机制。 7.5 执行下面Pascal程序的输出a结果分别是什么,如果参数的传递机制是: (1)引用调用方式; (2)值-结果调用方式;
program copyout (input, output); var a: integer;
procedure unsafe (var x: integer);
begin x := 2; a := 0 end;
begin
a := 1; unsafe (a); writeln (a)
end
7.6 执行下面程序时打印的a分别是什么,若参数的传递机制是: (1)按值调用方式; (2)引用调用方式; (3)值-结果调用方式; (4)换名调用方式。
procedure p(x, y, z); begin y := y +1; z := z+x; end p; begin a := 2;
《编译原理与技术》练习题 15
b := 3; p(a+b, a, a); print a; end;
7.7 设计存储分配时要考虑哪些主要因素?常见的存储分配策略有哪些?简单说明在什么情况下使
用哪种存储分配策略。
7.8 C++语言中关于变量的存储类型符有4个:auto、register、static和extern,请说明每个说明符所
表示的存储方式。
7.9 为下面FORTRAN程序的运行时环境构造出一个可能的组织结构,要保证对AVE的调用时存在
的一个存储器指针(参考7.4节)。
REAL A(SIZE), AVE INTEGER N, I 10 READ *, N
IF (N .LE. 0