- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理实验》指导书
作者:周波
单位:软件学院
2012年2月
实验教学目标
“编译原理”是一门研究设计和构造编译程序原理和方法的课程,是计算机各专业的一门重要专业基础课。该课程蕴含着计算机学科中许多重要的解决问题的思路和方法,如:有限自动机、正则表达式等,对应用软件和系统软件的设计与开发有一定的启发和指导作用。编译程序构造的原理和技术在软件工程、逆向工程、软件再工程、语言转换及其他领域中都有着广泛的应用。
通过本课程的实验教学,使学生加深对编译系统的结构、工作流程及编译程序各组成部分设计原理的理解,使他们能够掌握和应用常用的编译技术和方法,为今后从事应用软件和系统软件的开发打下一定的理论和实践基础。
编译原理实验指导书围绕着实验教学目标,详细阐述了各实验的原理和步骤。希望同学们能够充分利用实验条件,认真完成实验,从实验中得到应有的锻炼和培养。
实验教学主要内容
实验时间组织:学生在学院机房集中,实验教师在机房采用辅导结合的方式进行指导。 20 考勤4分,设计与实现8分,程序检查4分,文档4分 词法分析 20 考勤4分,设计与实现8分,程序检查4分,文档4分 语法树设计与实现 20 考勤4分,设计与实现8分,程序检查4分,文档4分 语法分析 20 考勤4分,设计与实现8分,程序检查4分,文档4分 语义分析 20 考勤4分,设计与实现8分,程序检查4分,文档4分
实验项目
实验一 符号表设计与实现
实验目的
了解符号表的作用、组织和数据结构,设计和实现一个符号表。
实验要求
合理有效地设计符号表可存储程序语言中的各种标识符(变量、常量、数组、结构、指针、函数和过程)及其属性和作用域信息
列出关键算法的具体实现的思路
实验原理及内容
(1)符号表的作用
符号表用于登录名字(标识符)、相应对象的种类(常量、变量、数组、结构、文件、标号、指针、函数与过程等)、属性(整型、实型、字符型、布尔型与枚举型等)和作用域信息。
由于在编译的各个阶段都要对符号表进行频繁操作(查表和填表),在整个编译时间中占了较大比例,因此如何有效合理地组织符号表并选择好的填表和查表方式,对于提高编译器的工作效率有很大影响。
(2)符号表的组织
源程序中的每个标识符在符号表中都有1个条目,一般由两部分组成:名字栏和信息栏。
如果一个语言对标识符的最大长度有限制,可设计名字栏的域大小为最大长度来容纳整个标识符;若该语言对标识符最大长度无限制或最大长度较大(如:32),为节省存储空间,可另用一个字符数组存储标识符,在名字栏域中存储其起始地址和长度(字符个数)。
源程序中的标识符种类繁多,不同种类的标识符所需要存储的信息不同。如:变量需存储其类型、存储地址等,数组应存储其数组维数m、数组元素类型T、各维元素个数 di、起始地址base等,指针应存储其指向对象类型的位置,函数应存储其参数及类型、返回值类型等……
源程序中的说明将标识符与具有某种类型属性的数据对象相关联。同一个标识符在不同程序位置被说明时代表不同的数据对象。当出现对一个标识符的引用时,需根据作用域规则查符号表获取正确的符号表条目。C语言采用静态作用域规则,按最近嵌套原则确定作用域。
(3)符号表的数据结构
由于线性表的访问复杂度为O(n),效率较低,符号表常采用效率更高的哈希技术进行实现: 当出现标识符id的定义时,计算哈希函数H(id),获取其在哈希表的存储位置,如该位置为空,则直接存储,否则应用冲突消解方法来获取其存储位置;当出现对标识符id的引用时,计算哈希函数H(id),获取其在哈希表的存储位置。
实验软硬件环境
C++
Microsoft Visual Studio 6.0
实验预习要求
编译原理方法和技术
评分标准
考勤4分,设计8分,程序检查4分,文档4分
实验报告
体现设计和主要算法的描述,并附上关键源程序的分析思路,同时回答思考题
【思考题】
如何有效设计符号表,其思路是什么?
在实现过程中遇到了哪些技术问题,你是如何解决的。
实验二 词法分析
实验目的
(1)理解词法分析在编译程序中的作用
(2)加深对有穷自动机模型的理解
(3)掌握词法分析程序的实现方法和技术
实验要求
(1)待分析的简单语言的词法
1) 关键字
begin if then while do end
2) 运算符和界符
:= + - * / = = = ; ( ) #
3) 其他单词是标识符(ID)和整形常数(NUM),通过以下正规式定义:
ID=letter(letter|digit)*
NUM=digitdigit*
4) 空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。
(2)各种
您可能关注的文档
最近下载
- 肛管直肠周围间隙的解剖.ppt
- 新人教版(2022新课标)七年级上册英语教学课件 Starter Unit 2第3课时(Section A Pronunciation 1-4)第3课时(Section A Pronunciation 1-4) .pptx VIP
- 工商储能项目的电网接入与协调方案(参考).docx
- 孤独症教育康复—孤独症儿童康复之感觉统合训练.pptx
- 2025年《网络传播法规》考试复习题库资料(含答案).pdf VIP
- 祥生PC装配整体式工程管控标准(试行版).pdf VIP
- 景区物业服务投标方案(技术标).doc
- 高手接话:高情商的讲话方法.pdf VIP
- 文学理论童庆炳.doc VIP
- 网络系统集成考试复习题库..doc VIP
文档评论(0)