编译原理基本知识.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理基本知识

编译原理基本知识基本概念程序生成过程源程序---用汇编语言或高级语言编写的程序称为源程序。 目标程序---用目标语言所表示的程序。可以是介于源语言和机器语言之间的“中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。翻译程序---将源程序转换为目标程序的程序称为翻译程序。它是指各种语言的翻译器,包括汇编程序和编译程序,是汇编程序、编译程序以及各种变换程序的总称。诊断编译程序优化编译程序交叉编译程序可变目标编译程序汇编程序:若源程序用汇编语言书写,经过翻译程序得到用机器语言表示的程序,这时的翻译程序就称之为汇编程序,这种翻译过程称为“汇编”(Assemble)。编译程序:若源程序是用高级语言书写,经加工后得到目标程序,这种翻译过程称“编译”(Compile)。编译器编译器就是一个程序,它读入用某种语言编写的源程序,并翻译成一个与之等价的另一种语言编写的源程序。编译过程的基本阶段编译过程是指将高级语言程序翻译为等价的目标程序的过程。其一般包含5个基本阶段:词法分析任务:分析和识别单词。描述:源程序是由字符序列构成的,词法分析扫描源程序(字符串),根据语言的词法规则分析并识别单词,并以某种编码形式输出。方法:词法分析依照词法规则,识别出正确的单词,转换成统一规格备用。转换: —对基本字,运算符,界符的转换 —标识符的转换 —常数的转换 —转换完成后的格式(类号,内码)工具:正规式和有限自动机例子1:X1 := ( 2.0 + 0.8 ) * C11 2 3 4 5 6 7 8 9例子2:Void jisuan( ){ int y, c, d;float x, a, b;x = a + b * 50;y = c + d * ( x + b);}基本字:Void,int,float标识符:a,b,c,d,x,y,jisuan常数:50运算符:*,+,=,-界限符:{ } ; , ( )例子3:position = initial + rate * 60第一步:识别出单词(关键字、标识符、常数、算符和界符)。position、=、initial、+ 、rate、*、60第二步:并用记号表示识别出的单词(记号表示逻辑上相关的字符序列,常用整数来表示)。id1、id2、id3表示position、initial、rate第三步:输出结果(得到记号流)。id1 = id2 + id3 * 60语法分析任务:根据语法规则(即语言的文法),分析并识别出各种语法成分,如表达式、各种说明、各种语句、过程、函数等,并进行语法正确性检查。方法:推导(derive)和归约(reduce)。过程:具体地说,语法分析是在记号流的基础上建立一个层次结构——建立语法树。例子1:X1:= ( 2.0 + 0.8 ) * C1赋值语句的文法:赋值语句→变量赋值操作符表达式 变量→简单标识符 赋值操作符→:= 表达式→ ……例子2:id1 = id2 + id3 * 60语法树 数据结构语义分析与生成中间代码任务:对识别出的各种语法成分进行语义分析,并产生相应的中间代码。主要工作包含(1)完成静态语义审查和处理;(2)上下文相关性审查;(3)类型匹配审查;(4)类型转换。中间代码:一种介于源语言和目标语言之间的中间语言形式。编译程序设计者可以自己设计,常用的有四元式、三元式、逆波兰表示等。四元式:四元式实际上是一种“三地址语句”的等价表示。它的一般形式为:(op,arg1,arg2,result)其中,op为一个二元 (也可是一元或零元)运算符;arg1,arg2分别为它的两个运算 (或操作)对象,它们可以是变量、常数或系统定义的临时变量名;运算的结果将放入result中。四元式还可写为类似于PASCAL语言赋值语句的形式:result ∶= arg1 op arg2。例子1:position = initial + rate * 60例子2:X1:= ( 2.0 + 0.8 ) * C1 运算符 左运算对象 右运算对象 结果 (1) + 2.0 0.8 T1(2) * T1 C1 T2(3) := X1 T2 其中T1和T2为编译程序引入的工作单元四元式的语义为: 2.0 + 0.8 → T1 T1 * C1→ T2 T2→ X1这样所生成的四元式与原来的赋值语句在语言的形式上不同,但语义上等价。目标代码优化任务:目的是为了得到高质量的目标程序。例子1:目的是为了得到高质量的目标程序。 优化前:(1)2.0 + 0.8 → T1 (2)T1 * C1→ T2 (3)T2→ X1前面的四元式中第一个四元式是计算常量表达式值,该值在编译时就可以算出并存放在工作单元中

文档评论(0)

119220 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档