编译原理与技术练习题汇总(4)

2019-08-30 16:42

《编译原理与技术》练习题 16

int y [5]; ...... }

(1)使用标准C参数传递约定,利用7.5.1所描述的活动记录结构判断以下的fp的偏移:c,s[7]和

y[2](假设数据大小为:整型=2个字节,字符=1个字节,双精度=8个字节,地址=4个字节) (2)假设所有的参数都是按值传递(包括数组),重做(1); (3)假设所有的参数都是引用传递(包括数组),重做(1)。

7.11为下面C程序的运行时环境构造出一个可能的组织结构(参考7.5.1节)。

(1) 在进入函数f中的块A之后; (2) 在进入函数g中的块B之后。

int a[10]; char *s = ‘hello’; int f ( int i, int b[] ) { int j = 1; A: { int i = j; }

void g (char *s) { char c = s[0]; } main () { int x = 1; x = f (x, a); g (s); return 0; }

B: { int a[5]; ...... }

char c = b[i]; ......

} return 0;

《编译原理与技术》练习题 17

7.12 使用访问链(参考7.5.2节)分别画出下面Pascal程序执行到 (1) 第1次调用r之后的运行时栈的内容; (2) 第2次调用r之后的运行时栈的内容;

program pascal1; procedure p; var x: integer; procedure q;

procedure r; begin

x := 2; ...... if ... then p;

end; { r }

begin

r;

end; { q } begin q; end; { p } begin { pascal1 } p; end.

7.13 使用显示表display重做练习7.12。

7.14 对下面的Pascal程序,分别画出程序执行到点(1)和(2)时刻的运行时栈的内容。

program pascal2 (input, output); var i: integer; d: integer; procedure a ( k: real );

var p: char; procedure b;

var c: char;

《编译原理与技术》练习题 18

begin

...(1)...

end: {b}

procedure c;

var t: real; begin

...(2)...

end: {c}

begin

...... b; c; ......

end; {a}

begin { pascal2 }

...... a (d); ......

end.

7.15 使用显示表display重做练习7.14。

7.16 实现栈式动态存储管理的一个问题是,如何分配空闲块。请考虑有几种空闲块的分配策略,并比

较每个策略的优缺点。

7.17 了解面向对象语言(如面向对象Pascal、C++、C#、Java)是如何实现垃圾搜集任务的。 7.18 存储紧缩有时也称为“单空间复制”,以区别双空间复制,请指出两者的相同之处和差异。 7.19 为以下的C++类画出对象的存储器框架和虚拟函数表(参考7.6.3节):

class A { public: int a;

virtual void f(); virtual void g();

《编译原理与技术》练习题 19

}

};

class B: public A { public: int b;

virtual void f(); void h(); };

class C: public B { public: int c;

virtual void g();

《编译原理与技术》练习题 20

练习 8

8.1 语义分析的基本任务是什么?请简单说明它们可以在编译的哪些阶段或者由编译的哪些模块完

成?

8.2 考虑下列无符号数的简单语法:

number ? digit number | digit digit ? 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

写出计算number整数值的属性规则。

8.3 根据下列文法,给出求十进制浮点数的值的语义规则(提示:用属性count表示小数点后的数字

数目):

num ? num.num num ? num digit | digit

digit ? 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

8.4 考虑下面的简单的Pascal风格的声明:

decl ? var-list:type

var-list ? var-list,id | id

type ? integer | real

(1)为它设计一个计算变量类型的属性文法; (2)为每个产生式对应的属性文法划一个依赖图; (3)为声明a, b, c: real画出属性依赖图。

8.5 修改例8.4中的文法G8.3,使之只用综合属性就可以计算based-num的值。 8.6 考虑下列属性文法:

文法规则

S ? ABC

B.u := S.u A.u := B.v + C.v S.v := A.v

A ? a B ? b C ? c

A.v := 2*A.u B.vl := B.u C.v := 1

语义规则


编译原理与技术练习题汇总(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:地铁施工钢支撑轴力计及油压技术交底

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: