编译原理资料

编译原理资料

ID:20676069

大小:4.43 MB

页数:51页

时间:2018-10-14

编译原理资料_第1页
编译原理资料_第2页
编译原理资料_第3页
编译原理资料_第4页
编译原理资料_第5页
资源描述:

《编译原理资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理资料第一章n1.编译器概念:从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言-sourcelanguage)书写的程序翻译成另一种语言(称作目标语言-targetlanguage)书写的等价的程序。n2.编译的逻辑过程:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、机器代码优化。n3.词法分析(又称线性分析或扫描)功能:从左至右读源程序(字符流),识别单词符号(又称记号token)源程序字符序列→单词符号序。例:position:=initial+rate*60单词类型单词值单词类型单词值标识符1(id1)position

2、标识符3(id3)rate算符(赋值):=算符(乘)*标识符2(id2)initial整数60算符(加)+n4.语法分析(又称解析)功能:层次分析依据:源程序的语法规则(例:P6-7[3])单词符号序列→分析树(或语法树-)分析树语法树(分析树的压缩示)n5.语义分析功能:语义检查,即验证语法结构合法的程序是否在语义上正确(程序的各个组成部分组合在一起是否有意义)。收集代码生成阶段需要的语义信息类型检查与类型转换分析树→带语义(注释)的树n6.中间代码生成功能:生成源程序的中间表示。三地址代码(threeaddress-code)带语义(注释)的树→中间代码7.代码优化功能:对

3、中间代码进行优化(提高时间与空间效率)8.代码生成功能:生成目标代码机器代码、可重定位的机器代码、汇编语言代码n9.符号表管理(占编译的大部分时间)功能:管理分析过程中得到的源程序中的标识符的各种信息记录源程序中使用的标识符收集每个标识符的各种属性信息,包括类型、作用域、存储分配信息n10.出错处理功能:检查错误的位置、、检查错误的性质(词法、语法、语义…)、错误恢复n11.一个例子语句的完整编译过程书本P4页n12.前端与后端(把编译程序分成前端和后端两部分)前端:只依赖于源程序,独立于目标机器.生成中间代码后端:依赖于目标机器,与源程序无关,只与中间语言有关.从中间代码生成

4、目标代码好处:提高开发编译器的效率:(1)取一个编译器的前端,重写它的后端以产生同一源语言在另一机器上的编译器;(2)不同的前端使用同一个后端,从而得到一个机器上的几个编译器(采用同一中间语言).n13.遍(Pass)对源程序或源程序中间表示的一次扫描,每一遍读入一个文件,执行一个或几个阶段的编译操作,并输出源程序的一个中间表示。每一遍的输入是上一遍的输出,第一遍的输入是源程序正文,最后一遍的输出是目标代码。遍数多:编译器结构清晰,但时间效率不高;遍数少:编译速度快,但对机器的内存要求高。n14.其他(1世界上第一个编译器是用机器语言开发的。(2词法分析器自动生成程序—LEX(

5、3预处理器:删除注释、宏展开、处理包含文件、语言扩充。(4一个语言处理系统书本P2页(5汇编器:处理汇编语言代码,产生可重定位的机器代码(6装配器和连接编辑器:将多个可重定位机器代码文件连接装配成一个可执行机器代码文件。第二章:n1.主要章节内容:串和语言、文法和语言的定义、文法和语言的分类、分析树与句型n2.字母表:字母表是符号的非空有穷集合,用∑表示;符号:可以相互区别的记号(元素);不同的语言有不同的字母表:汉语——汉字;英语——26个英文字母.n3.符号串:符号串是由字母表中的符号所组成的有穷序列.例如:Σ={a,b}a,b,aa,ab,aabba…都是Σ上的符号串;ε

6、是任何Σ上的符号串在语言理论中,符号串又称为:句子、字。(1符号串的长度:符号串中包含符号的个数;符号串s的长度记为

7、s

8、。例:对于字母表{a,b,c},aab是其上的一个符号串,

9、aab

10、=3注意:空符号串ε,

11、ε

12、=0(2符号串的前缀、后缀、子串:前缀:移走符号串s尾部的零个或多于零个符号得到的符号串例如:b是符号串banana的一个前缀后缀:删去符号串s头部的零个或多于零个符号得到的符号串例如:nana是符号串banana的一个后缀子串:从s中删去一个前缀和一个后缀得到的符号串例如:ana是符号串banana的一个子串*对于每个符号串s,s和ε两者都是符号串s的前缀,后缀

13、和子串符号串的真前缀、真后缀和真子串——非空。n4.语言:某个字母表上的符号串的集合。例:汉语——所有符合汉语语法的句子构成的集合;PASCAL语言——所有合法的PASCAL程序构成的集合;注意:空集{}、F和{ε}的不同(1串的运算:1.连接:符号串x、y的连接,是把y的符号写在x的符号之后得到的符号串xy。如x=ab,y=cd则xy=abcd注:εα=αε=α2.方幂:符号串自身连接n次得到的符号串αn定义为αα…ααn个αα1=α,α2=αα,注:α0=ε(2语言的运算:语言是符号串的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。