- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理实践
实验项目名称:符号表管理程序的设计与实现+ PL/0编译器的整合
实验次数:1次实验课
实验目的、内容与要求:
实验目的:
1. 了解符号表的作用
2. 掌握符号表的内容设计
3. 掌握符号表的结构安排
4. 掌握符号表的相关操作
5. 完成PL/0编译器,体会整个编译过程。
实验内容:
1. 了解语义分析阶段需要进行哪些语义检查同时要掌握符号的作用域原则
2. 确定PL/0语言中有多少种符号,哪些符号需要填入符号表,这些符号都包含哪些属性,设计符号表项的数据结构,可采用统一的数据项结构,也可不同类别符号采用不同结构
3. 确定符号表的组织方式:由于标识符有作用域,在组织符号表时,应该保证标识符作用域的有效性。随着分析程序的运行,会不断地进入或退出一些作用域,当退出某个作用域时,应该让这个作用域内的符号表项都作废。一般地,有两种作废方法,真删除法和加标记法法。
4. 定义符号表上的操作:符号表的创建、查找和删除
5. 扫描程序生成符号表。假设符号表初始为空,在编译过程中,每当遇到对某个符号的定义,编译程序首先检查符号表,检查这个符号是否已经存在。若是属于重复定义,报告错误信息;若是一个新的名字,则填入符号表中。在编译过程中遇到对某个符号的使用时,编译器要检查符号表,检查该符号是否已经定义,并按照符号表中的定义来使用符号。
6. 将词法分析、语法分析、语义分析、符号表等各部分模块整合调试。
实验要求:
1. 了解符号表在编译过程中的重要作用
2. 掌握符号表应包含的符号的属性信息
3. 了解符号表的组织原则
4. 掌握符号表的操作
5. 掌握符号表的可见性问题
6. 完成并提交一个完整的PL/0编译器。
7. 注意:此次实验结束后整个编译原理的实验也就完成了,所以这次实验报告在最后写一下整体的实验总结,也就是整个PL/0编译器完成过程中的经验教训、个人感想之类的。
输入要求:一个PL/0文件。
示例(仅供参考),文件名称test.pl0,文件内容如下:
const a=10;
var b,c;
procedure p;
begin
c:=b+a;
end;
begin
read(b);
while b#0 do
begin
call p;
write(c);
read(b);
end
end.
输出要求:各模块的结果输出,以及最后程序运行的示例。
示例,test.pl0运行结果如下:
请输入PL/0文件: test.txt
0 error,Success!
是否输出汇编代码?(Y/N): y
汇编代码:
0 jmp 0 8
1 jmp 0 2
2 int 0 3
3 lod 1 3
4 lit 0 10
5 opr 0 2
6 sto 1 4
7 opr 0 0
8 int 0 5
9 opr 0 16
10 sto 0 3
11 lod 0 3
12 lit 0 0
13 opr 0 9
14 jpc 0 22
15 cal 0 2
16 lod 0 4
17 opr 0 14
18 opr 0 15
19 opr 0 16
20 sto 0 3
21 jmp 0 11
22 opr 0 0
是否输出符号表?(Y/N): y
符号表:
1 const a val=10
2 var b lev=0 addr=3
3 var c lev=0 addr=4
4 proc p lev=0 addr=2 size=3
运行程序:
输入程序中变量值(0:退出): 3
13
输入程序中变量值(0:退出): 5
15
输入程序中变量值(0:退出): 0
请按任意键继续. . .
实验详细设计说明:
符号表的作用:符号表是用来存放语言程序中出现的有关标识符的属性信息,这些信息
原创力文档


文档评论(0)