蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOCX文档下载
 

实验项目卡-符号表管理+综合PL0编译器

  • 资源ID:53172185       资源大小:14.76KB        全文页数:8页
  • 资源格式: DOCX        下载权限:游客/注册会员    下载费用:15积分 【人民币15元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要15积分 【人民币15元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

实验项目卡-符号表管理+综合PL0编译器

编译原理实践 试验项目名称符号表管理程序的设计与实现 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 a10; var b,c; procedure p; begin cba; end; begin readb; while b0 do begin call p; writec; readb; 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 val10 2 var b lev0 addr3 3 var c lev0 addr4 4 proc p lev0 addr2 size3 运行程序 输入程序中变量值0退出 3 13 输入程序中变量值0退出 5 15 输入程序中变量值0退出 0 请按随意键接着. . . 试验具体设计说明 符号表的作用符号表是用来存放语言程序中出现的有关标识符的属性信息,这些信息集中反映了标识符的语义特征属性。在词法分析及语法分析过程中不断积累和更新表中的信息,并在词法分析到代码生成的各阶段,按各自的须要从表中获得不同的属性信息。不论编译策略是否分趟,符号表的作用和地位是完全一样的。 符号表的设计规则 1) 符号名 符号表中设置一个符号名域,存放该标识符,该域通常就是符号表的关键字域。通常在语言程序中标识符字符串是一个变量、函数或过程的唯一标记,因此在符号表中符号名作为表项之间的唯一区分一般不允许重名。从而该符号名与它在符号表中的位置建立起一一对应之关系,使得我们可以用一个符号在表中的位置(通常是一个整数)来替换该符号名。通常把一个标识符在符号表中的位置的整数值称之谓该标识符的内部代码。在经过分析处理的语言程序中标识符不再是一个字符串而是一个整数值,这不但便于识别比较而且缩短了表达的长度。 2) 符号的类型 标识符中除过程标识符之外,函数和变量标识符都具有数据类型属性。对于函数的数据类型指的是该函数值的数据类型。基本数据类型有整型、实型、字符型、逻辑型(布尔型)等,符号的类型属性从程序中该符号的定义中得到。变量符号的类型属性确定了该变量的数据在存储空间的存储格式,还确定了在该变量上可以施加的运算。 3) 符号的作用域及可视性 一般来说,定义该符号的位置及存储类关键字确定了该符号的作用域。C语言中一个外部变量的作用域是整个程序,因此一个外部变量符号的定义在整个程序中只能出现一次。一般来说一个变量的作用域就是该变量可以出现的场合,也就是说在某个变量作用域范围内该变量是可引用的,这就是变量可视性的作用域规则。PL/0语言允许过程嵌套定义,即外层变量和程序对内层可见,内层变量和函数对外层不行见,其中内层函数或变量将使外层的同名函数或变量不行见。 4)符号表操作 在整个编译期间,对于符号表的操作大致可归纳为五类 对给定名字,查询名字是否已在表中; 往表中填入一个新的名字; 对给定名字,访问它的某些信息; 对给定名字,填写或更新它的某些信息; 删除一个或一组无用的项。 不同种类的表格所涉及的操作往往也是不同的。上述五个方面只是

注意事项

本文(实验项目卡-符号表管理+综合PL0编译器)为本站会员(18884755913)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开