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