- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计报告
( 2011--2012年度第一学期)
名 称:编译技术课程设计
题 目:变量检查工具
院 系:
班 级:
学 号:
学生姓名:
指导教师:
设计周数:一
成 绩:
2012 1 3
日期: 年 月 日
课程设计报告
1 课程设计的目的和要求
1.1 课程设计的目的
进一步培养自己对编译器设计的思想的了解,加深对编译原理和应用程序的理解,针对
编译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时强调好
的程序设计风格。
1.2 课程设计的要求
实现对C语言中全局变量和共享变量的检查。
要求:
检查全局变量是否是必须的。包括:该全局变量是否被引用过;全局变量是否只在 1 个
函数内被引用。
若某一全局变量从来没有被引用过,则可以将其删除
若某一全局变量只在一个函数内被引用和定值,是否可以将其修改为局部变量
当全局变量仅用于1个文档中,是否可以将其修改为静态全局变量
提示:可以通过符号表对变量的存储类别的定义,来讨论变量的使用点,从而确定这些
变量是否应该为局部变量、静态全局变量或全局变量。
2 系统描述
本次实验在win 7 环境下利用vs2010 开发实现,通过Ribbon 界面编程,利用文件列表和
输出面板模拟VC++编译器。通过单次扫描源程序,在一趟便利过程中完成对符号表的创建、
登陆、查找等操作,最后遍历符号表,通过综合分析某一ID的相关变量(如:声明位置、首
次使用位置、再次使用位置)等,给出综合处理意见,如删除不未使用过的全局变量。
在程序中,通过在可编辑区域输入源程序(或直接打开)后,点击编译单个文件,开始
对当前活文件进行变量检查,检查结束后,结果自动出现在程序窗口下方输出面板的列表中。
若当前应用程序窗口中有多个文档,点击编译全部文件,在各各文档中惊醒变量检查,
如某些全局变量只用于一个文档中,则提示改为静态全局变量。
2.1 符号表的描述
编译程序在执行的过程中,为了完成源程序到目标代码的翻译,需要不断收集、记录和
使用源程序中一些语法符号的类型、特征和属性等相关信息。通常这些信息利用一些表格来
保存,如常数表、变量名表、数组名表、过程或子程序名表以及标号表等。习惯上,将这些
表格统称为符号表。
符号表的每一登记项,将填入名字标识符以及与该名字相关联的一些信息。这些信息全
1
课程设计报告
面反映了各个符号的属性及它们在编译过程中的特征。在编译程序工作的全部过程中,都需
要频繁对符号表进行访问。有时填写信息,有时是查找信息。
为完成本次实验要求,设计如下符号表。
表2-1 符号表
ID 定义位置 首次使用位置 定义文件 再次定义位置 局部? 静态?
各对于符号表中各项的说明:
� ID :变量名;
� 定义位置 :为空表示全局变量;
� 首次使用位置 :为空表示未使用;
� 定义文件 :定义改变量的文件,全局变量有效;
� 再次定义位置 :全局变量与局部变量重名时使用;
� 是否变为局部 :默认为真,当前函数与首次使用位置不等时为假;
� 是否变为静态 :默认为真,当前文件与定义文件不等时为假;
2.2 符号表的使用
在编译过程中,通过不断登记、查找、修改符号表完成对相关信息的记录。在结束时,
通过遍历符号表,给出处理意见。
表2-2 处理结果对照
处理结果
文档评论(0)