- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理及实现(孙悦红)期末复习
编译原理期末复习
(1)简述编译程序的概念及其构成
答:1)编译程序:它特指把某种高级程序设计语言翻译成等价的低级程序设计语言的翻译程序。
2)构成:
标识符的各种属性是在编译的不同阶段填入符号表的。词法分析阶段只能分析出标识符名,语法分析阶段只能判断标识符在语句中出现是否合法,只有到了语义分析阶段,才能将标识符的各种属性填入符号表并使用这些属性生成中间代码。
(2)简述词法分析阶段的主要任务(也有可能问语法分析阶段主要任务)
答:词法分析的任务是输入源程序,对源程序进行扫描,识别其中的单词符号,把字符串形式的源程序转换成单词符号形式的源程序。
语法分析的主要任务是对输入的单词符号进行语法分析(根据语法规则进行推导或者归约),识别各类语法单位,判断输入是不是语法上正确的程序
即:检查这个符号串是否为该程序语言的句子。若是,输出该句子的分析树;若不是,则表示源程序存在语法错误,需要报告错误的性质和位置。
代码进行优化的目的:提高目标程序的执行效率。代码优化首先在中间代码上进行。代码优化不是编译程序的必要组成部分,不同的编译程序所进行的代码优化程度差别很大,能够完成代码优化的编译程序称为“优化编译程序”。
编译的最后一步是将中间代码生成特定机器上的低级语言代码。这部分与机器类型有关,对程序中的每个变量指定存贮单元,把中间代码的指令翻译成等价的某种类型机器的机器指令代码或汇编指令代码。目标代码的形式可以使绝对指令代码、可重定位的机器指令代码或汇编指令代码。
(3)高级语言的特点:
(4) 说明解释和编译的区别:
1)编译要程序产生目标程序,解释程序是边解释边执行,不产生目标程序;
2)编译程序运行效率高而解释程序便于人机对话。
解释:以源程序作为输入,输入一句解释执行一句,不产生完整的目标程序,相应的翻译程序称为解释程序(Interpreter) 。
编译:将源程序全部译为目标程序,该目标程序可在操作系统环境下直接执行,相应的翻译程序称为编译程序(Compiler)
(5)遍:所谓一“遍”是指编译程序在编译时把源程序或中间形式从头到尾扫描一遍,并做相关的处理,生成新的中间形式或目标代码。
单遍程序:只对源程序进行一遍扫描,就完成编译的各项任务,产生目标代码。在单遍编译程序中,不产生中间代码,往往以语法分析程序为中心,词法分析和语义分析作为语法分析的子程序。
多遍程序:把编译程序的五项任务分几遍来进行,每遍只完成部分任务。优点是:
可以减少内存容量的需求。
分遍后,以遍为单位分别调用编译的各个程序,各遍程序可以相互覆盖;
可使各遍的编译程序相互独立,结构清晰;
能够进行充分的优化,产生高质量的目标程序;
可将编译程序分为“前端”和“后端”,有利于编译程序的移植。
缺点:每遍都要读符号、送符号,增加了许多重复性工作,降低编译效率
(6)前端主要与源语言有关,包括词法分析、语法分析、语义分析和中间代码生成、符号表的建立以及相应的错误处理和符号表操作。后端主要与目标机器有关,包括代码优化、目标代码生成以及相应的错误处理和符号表操作。
(7)补充第一章的概念:
源程序:用程序设计语言书写的程序,称为源程序,该程序设计语言称为源语言。
目标程序:经翻译程序加工后用目标语言表示的程序。
翻译程序:将源程序译成逻辑上等价的目标程序的程序。
汇编程序:将汇编语言程序翻译成机器语言程序的程序。
(8)第二章的概念:
“字母表”:元素的非空有穷集合。典型的符号有字母、数字、各种标点符号和各种运算符。
“符号串”:由字母表上0个或多个符号所组成的任何有穷序列。(注意:ε也是字母表上的符号串,它由0个符号组成。显然,一个字母表上的全部符号串所组成的集合是无穷的。)
符号串的长度:指符号串x中所含符号的个数,记为|x|。如|abc|=3,|abc+*abc|=8,而|ε|=0
符号串相等:若x、y是字母表∑上的两个符号串,那么当且仅当组成x的各符号与组成y的各符号依次相等时,则符号串x与符号串y相等,记作x=y。
符号串的前(后)缀:指从符号串x的末尾(开头)删除0或多个符号后得到的符号串。如u、use都是use的前缀。如e、use都是use的后缀。
符号串的子串:指从符号串x的开头和末尾删除0或多个符号后得到的符号串,如ver是university的子串, 符号串的前缀、后缀都是它的子串。
符号串的连接:若x、y是两个符号串,则xy表示连接,是将符号串y连接在符号串x的后面。若x、y是字母表∑上的两个符号串,则xy也是字母表∑上的符号串。
(注意:连接没有交换率,即 xy ≠ yx 而对于空串ε有 εx=x ε=x)
集合的乘积运算:令A、B为两个符号串集合,A和B的乘积AB定义为:
文档评论(0)