编译原理部分课后答案仅供参考Word文件下载.docx
- 文档编号:14564578
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:60
- 大小:478.05KB
编译原理部分课后答案仅供参考Word文件下载.docx
《编译原理部分课后答案仅供参考Word文件下载.docx》由会员分享,可在线阅读,更多相关《编译原理部分课后答案仅供参考Word文件下载.docx(60页珍藏版)》请在冰豆网上搜索。
答:
PL/0语言允许过程嵌套定义和递归调用,它的编译程序
在运行时采用了栈式动态存储管理。
(数组CODE存放的只读目
标程序,它在运行时不改变。
)运行时的数据区S是由解释程序定义的一维整型数组,解释执行时对数据空间S的管理遵循后
进先岀规则,当每个过程(包括主程序)被调用时,才分配数据空间,退出过程时,则所分配的数据空间被释放。
应用动态链和静态链的方式分别解决递归调用和非局部变量的引用问题。
问答第2题若PL/0编译程序运行时的存储分配策略采用栈式动态分配,并用动态链和静态链的方式分别解决递归调用和非局部变量的引用问题,试写岀下列程序执行到赋值语句b:
=10时运行栈的布局示意图。
varx,y;
procedurep;
vara;
procedureq;
varb;
begin(q)b:
=10;
end(q);
procedures;
varc,d;
procedurer;
vare,f;
begin(r)
callq;
end(r);
begin(s)callr;
end(s);
begin(p)
calls;
end(p);
begin(main)callp;
end(main).
答:
程序执行到赋值语句b:
=10时运行栈的布局示意图为:
问答第3题
写出题2中当程序编译到r的过程体时的名字表table的内容。
name
kind
level/val
adr
size
答题2中当程序编译到r的过程体时的名字表table的内容为:
evel/val
x
variable
dx
y
dx+1
p
procedure
过程p的入口(待填)
5
a
1
过程q的入口
4
s
过程s的入口(待填)
r
c
2
d
过程r的入口
3
注意:
q和s是并列的过程,所以q定义的变量b被覆盖。
问答第4题
指岀栈顶指针T,最新活动记录基地址指针B,动态链指针DL,静态链指针SL与返回地址RA的用途。
栈顶指针T,最新活动记录基地址指针B,动态链指针
DL,静态链指针SL与返回地址RA的用途说明如下:
T:
栈顶寄存器T指出了当前栈中最新分配的单元仃也是数组S的下标)。
B:
基址寄存器,指向每个过程被调用时,在数据区S中给
它分配的数据段起始地址,也称基地址。
SL:
静态链,指向定义该过程的直接外过程(或主程序)运行时最新数据段的基地址,用以引用非局部(包围它的过程)变量时,寻找该变量的地址。
DL:
动态链,指向调用该过程前正在运行过程的数据段基地址,用以过程执行结束释放数据空间时,恢复调用该过程前运行栈的状态。
RA返回地址,记录调用该过程时目标程序的断点,即调用过程指令的下一条指令的地址,用以过程执行结束后返回调用过程时的下一条指令继续执行。
在每个过程被调用时在栈顶分配3个联系单元,用以存放
SL,DL,RAo
问答第5题
PL/0编译程序所产生的目标代码是一种假想栈式计算机的汇编语言,请说明该汇编语言中下列指令各自的功能和所完成
的操作。
•INT0A
•OPR00
•CALLA
PL/0编译程序所产生的目标代码中有3条非常重要的
特殊指令,这3条指令在code中的位置和功能以及所完成的操作说明如下:
INT0A
在过程目标程序的入口处,开辟A个单元的数据段。
A为局
部变量的个数+3o
OPR00
在过程目标程序的岀口处,释放数据段(退栈),恢复调用
该过程前正在运行的过程的数据段基址寄存器B和栈顶寄存器T
的值,并将返回地址送到指令地址寄存器P中,以使调用前的
程序从断点开始继续执行。
CALLA
调用过程,完成填写静态链、动态链、返回地址,给岀被调用过程的基地址值,送入基址寄存器B中,目标程序的入口
地址A的值送指令地址寄存器P中,使指令从A开始执行。
问答第6题
给出对PL/0语言作如下功能扩充时的语法图和EBNF的语
法描述。
(1)扩充条件语句的功能使其为:
if〈条件〉then〈语句〉[else〈语句〉]
(2)扩充repeat语句为:
repeat〈语句〉{;
〈语句〉}until〈条件〉
对PL/0语言作如下功能扩充时的语法图和EBNF的语
法描述如下:
(1)扩充条件语句的语法图为:
EBNF的语法描述为:
〈条件语句〉:
:
=if〈条件〉then
〈语句〉[else〈语句〉]
(2)扩充repeat语句的语法图为:
〈重复语句〉:
=repeat〈语句〉{;
第三章:
词法分析程序
问答第1题
构造正规式1(0|1)*101相应的DFA.
先构造NFA
用子集法将NFA确定化
X
A
AB
AC
ABY
B
C
r\C
D
S
VQ
QU
VZ
解:
初始分划得
将下图的(日)和(b)分别确定化和最小化:
(a)
除X,A外,重新命名其他状态,令AB为B、AC为CABY为D,因为D含有Y(NFA的终态),所以D为终态。
V
QUZ
Z
V二
重新命名状态子集,令VQ为AQU为B、VZ为C、V为DQUZ为E、Z为Fo
E
F
DFA的状态图:
no:
终态组{0},非终态组{1,2,3,4,5}
对非终态组进行审查:
{1,2,3,4,5}a二{0,1,3,5}
而{0,1,3,5}既不属于{0},也不属于{1,2,3,4,5}
丁{4}a匚{0},所以得到新分划
ni:
{0},{4},{1,2,3,5}
对{1,2,3,5}进行审查:
■•{1,5}b匸{4}
{2,3}b,-{1,2,3,5},故得到新分划
n2:
{0},{4},{1,5},{2,3}
{1,5}a二{1,5}
{2,3}a匚{1,3},故状态2和状态3不等价,得到新分划
n3:
{0},{2},{3},{4},{1,5}
这是最后分划了
最小DFA
可将该DFA最小化:
终态组为{1,2,4},非终态组为{3},{1,2,4}0{1,2,4}
{1,2,4}1{3},所以1,2,4为等价状态,可合并。
第四章文法和语言
写一文法,使其语言是偶正整数的集合。
要求:
(1)允许0打头;
(2)不允许0打头。
(1)允许0开头的偶正整数集合的文法
E^NT|D
T^NT|D
NRD|1|3|5|7|9
D^0|2|4|6|8
(2)不允许0开头的偶正整数集合的文法
问答第4题
构造一个DFA它接收2={0,1}上所有满足如下条件的字符串:
每个1都有0直接跟在右边。
并给岀该语言的正规式。
解:
按题意相应的正规表达式是(0*10)*0*,或0*(0|10)*0*构
造相应的DFA首先构造NFA为
用子集法确定化:
I0
I1
{X,0,1,3,Y}
{0,1,3,Y}
{2}
{1,3,Y}
重新命名状态集:
T—FT|G
D^2|4|6|8
F—N|0
G^D|0
问答第2题
证明下述文法G[〈表达式〉]是二义的。
〈表达式〉:
:
=a|(〈表达式〉)|〈表达式〉
〈运算符〉〈表达式〉〈运算符〉:
=+|-|*|/
可为句子a+a*a构造两个不同的最右推导:
最右推导1〈表达式〉=,<表达式〉〈运算符〉〈表达式〉
=>
〈表达式〉
a+a*a
〈运算符〉
*a
+a*a
a*a
最右推导2〈表达式〉
■〈表达式〉
〈运算
符〉
令文法G[E]为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 部分 课后 答案 仅供参考