- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理_复习重难点
第一章
从本质上来说,程序设计语言是按一定规则排列的符号集合,而编译程序就是把这些符号集合变成机器指令的转换器,编译程序又称为编译器。
程序设计语言【高级语言,低级语言(机器语言和汇编语言)】
编译过程:词法分析,语法分析,中间代码生成,优化,目标代码产生。
三元式定义为如下形式:(op, a1, a2)
其中op为操作码或运算符,a1和a2为操作数或运算分量。
编译 : 将高级语言程序翻译成另一种语言的等价程序。
解释:翻译一句执行一句,边翻译边执行,直到程序结束。
与编译的区别:不生成等价的目标代码程序。
优点:解释方式便于程序的调试。(编译方式只需翻译一次,且目标程序的执行速度快)
词法分析
主要任务:从左到右扫描源程序,逐一读入构成源程序的字符流,识别出
其中的一个个单词,识别出的单词称单词符号,也简称符号。
单词是高级语言程序中有实际意义的最小语法单位。
语法分析
任务“组词成句”,根据单词分析出组成源程序的各类语法单位,
并指出其中的语法错误。
语法单位——由源程序的单词构成(如表达式、语句、……乃至整个程序。)
语法单位的构成规则——语法规则。
一个语言的词法规则和语法规则定义了一个程序的形式结构。
语法单位的表示——语法树
语义分析和中间代码生成
任务:分析出语法单位具体的动作意义,进行初步翻译,生成与源程序等价的中间代码程序。
语义: 定义一个程序所表示的意义,用语义规则描述。
中间代码:指令应结构简单、含义明确,易于实现源程序——中间代码
——目标代码三者之间的转换。
中间代码常用形式: 逆波兰式、三元式、四元式等。
四元式: (运算符,对象1,对象2,结果)
例:z=x+a%3*y
(1)( % a 3 t1 ) (2) ( * t1 y t2 ) (3) (3) ( + x t2 t3 )(4) ( = t3 _ z )
代码优化
任务: 对中间代码进行等价的加工变换,以便生成更有效更节省时间和空间的目标代码。
例:z=x+a%3*y 的四元式序列: (1)% a 3 t1 ) (2) ( * t1 y t2 )
(3)( + x t2 z )
(5)目标代码生成 任务:将中间代码程序变换成目标代码程序。
按“遍”组合方式
“遍”:对源程序或等价的中间语言程序从头到尾扫描,完成规定的
任务,并生成新的中间结果或目标程序,称一“遍”。
编译程序的构造与三个方面有关 :源语言 ,目标语言,编译方法。
第二章 形式语言与自动机理论基础
主要内容:语言和文法、有限自动机、正则表达式。
语言:符号串的集合。
元素—— 符号串——该语言的一个句子。
字母表——符号串中符号的来源。
【例2-1】 Σ={a,b,c,……,z},x =“laugh”,则 |x|=5
Σ={I,you,he,am,is,are,a,student},
y=“I am a student”,空格不计算长度,则 |y|=4。
空符号串:无任何符号的串,简称空串,用ε表示,|ε|=0
【例2-4】 若 U = { a,b }, V = { c,d }
则 UV = { ac,ad,bc,bd }
闭包: 若指定字母表Σ,则Σ*表示Σ上的所有有穷长的串的集合。
Σ* =Σ0∪Σ1∪Σ2∪……∪Σn∪……
Σ* 称为集合Σ的闭包。
Σ+
原创力文档


文档评论(0)