- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课程设计读书工程报告
黑龙江大学“编译原理课程设计”读书报告学院计算机科学技术学院年级2013级专业计算机科学与技术学名报告日期2015/6/30成绩黑龙江大学计算机科学技术学院开发环境简介开发平台:Microsoft visual C++6.0.开发环境:是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它有软件工具和环境继承机制构成,前者用以支持软件开发的相关过程、活动和人物,后者为工具集成和软件的开发、维护及管理提供统一的支持。基本理论阐述、当前理论或实践应用现状㈠:编译程序1:定义:编译程序是将高级语言源程序转换成(用)低级语言描述的目标程序的翻译程序。2:功能:如图1.1所示图1.1 编译程序的功能预处理程序3:高级语言程序处理过程:源程序一个源程序有时可能分为几个模块存放在不同的文件里,通源程序编译程序过一个叫预处理程序的程序将这些源程序汇集在一起。如右图1.2中的编译程序生成的目标程目标汇编程序编译程序序是汇编代码,需要经由汇编程序翻译成可再装配的机器代码,再经由装配/连接编辑程序可再装配的机器代码装配/连接-编译程序与某些库程序连接成真正的能可再装配目在机器上运行的代码。标文件绝对机器代码 图1.2 高级语言程序的处理过程(二)编译过程概述编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上讲,一个编译程序的整体工作过程是划分成阶段进行的,主要划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。另外两个重要的工作:表格管理和出错处理与以上六个阶段都有联系。1:词法分析:词法分析是编译过程的第一阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。2:语法分析:词法分析是编译过程的第二阶段。语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“表达式”等。3:语义分析:语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。4:中间代码生成:在进行了2、3阶段的工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。5:代码优化:此阶段的任务是对上一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间。6:目标代码生成:这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。(三)编译程序的结构编译过程六个阶段的任务,再加上表格管理和出错处理的工作可分别由几个模块或程序完成,它们分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序和出错处理程序。从而可给出一个典型的编译程序结构框图,如下图1.3。 图1.3编译程序结构框图小型编译器系统架构本课程设计的小型编译器基于C/C++语言基础上,只能局限于C/C++源程序,另外由于语法的局限性,即只能编译本词法、语法所涵盖的小型源程序库。库之外的源程序无法识别。四、小型编译器主要功能模块与实现1.功能介绍⑴词法分析程序函数功能:Letter函数:用来判断所读入字符是否是字母;Number函数:用来判断所读入字符是否是数字;Keyword函数:用来判断一个字符串是否为关键字;⑵语法分析程序主要函数功能:Main()函数:调用主函数,运行程序;FirstVt()函数:构造FIRSTVT表;LastVt()函数:构造LASTVT表;OpPrioTable()函数:构造算符优先关系表;InputAnalyse()函数:分析输入串是否为文法中的句子,并给出规约过程。⑶中间代码生成-目标代码程序主要函数功能:IS_while()函数:处理while语句,将其转换成四元式;IS_if()函数:处理if语句,将其转换成四元式;Operate()函数:处理赋值语句,将其转换成四元式;Print()函数:打印四元式和相应的汇编程序并写入文件中;2.相关理论⑴词法分析程序语法分析程序的功能是读入源程序,输出单词符号。单词符号是一个程序设计语言的基本语法符号。程序设计语言的单词符号一般可分为下列5种:标识符:用来表示各种名字,如常量名、变量名和过程名等。关键字:也称基本字,如Pascal语言中begin,end,if,while和var等;常数:各种类型的常数,如25,3.1415,TRUE和“ABC”等。界符:如逗点、分号、括号等运算符:如+,*,/,=等。⑵语法分析程序(算符优先分析法)㈠定义三种优
文档评论(0)