版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理n第一章 概述n第二章 PL/0编译系统n第三章词法分析程序的自动构造n第四章文法和语言n第五章自顶向下语法分析LL(1)文法n第六章自底向上语法分析LR分析程序及其自动构造n第七章 语法制导翻译和中间代码生成n第八章 运行时的存储组织和管理 n第九章 代码优化n第十章代码生成第一章 概述n1.1什麽是编译程序n1.2编译过程和编译程序的结构n1.3 编译技术的发展和应用n 参考书什么是编译程序(compiler)编译程序是现代计算机系统的基本组成部分.从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序. 1.
2、1n功能术语术语编译程序的源语言(源程序)编译程序的目标语言(目标程序)编译程序的实现语言S OI 高级语言书写的程序 编译程序低级语言程序S TI 什么是编译程序n分类 软件 系统软件 语言处理系统操作系统编译系统裸机分类n软件:计算机系统中的程序及其文档n系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。他和具体的应用领域无关,如编译系统和操作系统等。n语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。n软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。n预处理器编译器汇编器装配连接编辑骨
3、架程序 源程序 目标汇编程序 可重定位机器代码 绝对机器码可重定位目标文件库语言处理过程语言处理过程什么是编译程序n语言转(变)换系统C+编译器C+CJavaBytecodeJava编译器术语n编译程序(compiler)n编译程序的源语言(源程序) (source language)(source program)n编译程序的目标语言(目标程序) (object or target language)(object or target program) n编译程序的实现语言(implementation language)n语言处理程序(language processor)n语言转(变)换
4、(language transformation)1.2 编译过程和编译程序的结构n编译逻辑过程词法分析语法分析语义分析中间代码生成代码优化目标代码生成词法分析n从左至右读字符流的源程序、识别(拼)单词例: position := initial + rate * 60;词法分析position := initial + rate * 60;单词类型单词类型单词值单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符(加) + 标识符3(id3) rate 算符(乘) * 整数 60 分号 ;又如一个C源程序片断: int a; a = a
5、+ 2;词法分析后可能返回:单词类型单词类型单词值单词值 保留字 int标识符(变量名) a界符 ;标识符(变量名) a算符(赋值) =标识符(变量名) a 算符(加) +整数 2界符 ;有关术语n词法分析(lexical analysis or scanning) -The stream of characters making up a source program is read from left to right and grouped into tokens,which are sequences of characters that have a collective meani
6、ng.n单词-tokenn保留字-reserved wordn标识符 -identifier(user-defined name)语法分析n功能:层次分析.依据依据源程序的语法规则语法规则把源程序的单词序列组成语法短语(表示成语法树).position := initial + rate * 60 ;规则规则 :=“:=” :=“+” :=“*” :=“(”“)” := := := 赋值语句标识符表达式表达式+表达式表达式标识符整数标识符:=表达式*id1:=id2+id3*N:=+N 60*id1 Positionid2 initialid3 rate术语n语法分析(syntax analy
7、sis or parsing)The purpose of syntax analysis is to determine the source programs phrase structure.This process is also called parsing.The source program is parsed to check whether it conforms to the source languages syntax,and to construct a suitable representation of its phrase structure.n语法树(推导树)
8、(parse tree or derivation tree)语义分析语义审查(静态语义) 上下文相关性 类型匹配 类型转换例:Program p();Var rate:real;procedure initial;position := initial + rate * 60 /* error */ /* error */ /* warning */;又如: n int arr 2,abc;n abc = arr * 10;nProgram p();nVar rate:real;n Var initial :real;n Var position :real ;n n position :=
9、 initial + rate * 60语义分析60:=+*Id1 positionId2 initialId3 rateinttoreal术语n语义分析(semantic analysis) The parsed program is further analyzed to determine whether it conforms to the source languages contextual constraints:scope rules, type rulese.g. To relate each applied occurrence of an identifier in th
10、e source program to the corresponding declaration. 中间代码生成源程序的内部(中间)表示三元式、四元式、P-Code、C-Code、U-Code、bytecode( * id3t1t2)t2 = id3 * t1t2 := id3 * t1中间代码生成id1:= id2 + id3 * 60(1)(inttoreal,60-t1)(2)(*,id3t1t2)(3)(+,id2t2t3)(4)(:=,t3-id1)中间代码生成(intermediate code generation)This is where the intermediate
11、representation of the source program is created.We want this representation to be easy to generate,and easy to translate into the target program.The representation can have a variety of forms,but a common one is called three-address code or 4- tuple code.代码优化id1:= id2 + id3 * 60(1)(inttoreal60-t1)(2
12、)( * id3t1t2)(3)( +id2t2t3)(4)( :=t3-id1) 变换变换 (1) ( *id360.0t1) ( 2)( + id2 t1id1)代码优化t1 = b* c t1 = b* c t2 = t1+ 0 t2 = t1 + t1t3 = b* c a = t2t4 = t2 + t3a = t4代码优化(code optimization)nIntermediate code optimizationThe optimizer accepts input in the intermediate representation and output a versio
13、n still in the intermediate representation .In this phase,the compiler attempts to produce the smallest,fastest and most efficient running result by applying various techniques.nObject code optimization目标代码生成(*,id360.0t1)(+,id2t1id1)movfid3,R2mulf#60.0,R2movfid2,R1addfR2,R1movfR1,id1符号表管理n记录源程序中使用的名
14、字n收集每个名字的各种属性信息 类型、作用域、分配存储信息Const1常量值:35Var1变量类型:实层次:2符号表(symbol table)nSymbol table is a data structure which is employed to associate identifiers with their attributes .nAn identifiers attribute consists of information relevant to contextual analysis,and is obtained from the identifiers declarati
15、on.出错处理n检查错误、报告出错信息、排错、恢复编译工作出错处理(error handling)(error reporting and error recovery)nThe compiler should report the location of each error,together with some explanation. The major categories of compile-time error: syntax error, scope error, type error.nAfter detecting and reporting an error,the co
16、mpiler should attempt error recovery,means that the compiler should try to get itself into a state where analysis of the source program can continue as normally as possible.编译程序结构(components)n词法分析程序n语法分析程序n语义分析程序n中间代码生成程序n代码优化程序n目标代码生成程序n符号表管理程序n出错处理程序出错处理语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表格管理
17、编译阶段的组合n分析,综合(synthesis) 源程序的分析 线性分析 层次分析 语义分析 目标程序的综合n编译的前端(front end)n编译的后端(back end)n遍(趟)遍(趟)从头到尾扫描源程序(各种形式)一遍遍(pass)高级语言解释系统(interpreter)n功能 让计算机执行高级语言(basic,lisp,prolog)n与编译程序的不同 1)不生成目标代码n 2)能支持交互环境n (同增量式编译系统) n源 程 序 n n初始数据 解释程序计算结果 解释系统n直接对源程序中的语句进行分析,执行其隐含的操作。n如: n b := 2 ;n a := b+2 ; 编译程
18、序n write a ; n n解释程序直接将4的值输出(显示)Int 2St bLd badd 2St a生成代码 编译阶段和运行阶段存储结构 n 编译时 运行时 名字表目标代码缓冲区编译用源程序中间表示各种表格目标代码区数据区源程序缓冲区解释系统存储结构解释系统源程序工作单元名字表标号表缓冲区(输入输出)栈区1.3 编译技术的发展和应用n功能:程序 集成环境n实现方式 手工 机器语言 汇编 系统程序设计语言 自动构造工具lex yacc gccS OI 编译程序的发展Human-orientedlanguageComputer-orientedlanguage计算模式,语言范式语言应用领域
19、编译程序万诺曼机体系结构并行体系结构嵌入系统 编译程序的发展n语言范型(paradigms) 命令式(imperative language) 应用式(applicative) 基于规则的(rule-based) 面向对象的(object-oriented)n编译程序执行环境 批处理 交互环境 嵌入系统环境 语言范型(支持的计算模式)n 命令式:n程序特点: 语言执行的解释: 编译技术发展快:n语句1; 改变机器状态 系统语言n语句2; 内存 自动化生成技术n语句3; 各种寄存器 的内容 n 外存 与万诺曼机的 体系结构一般 应用式(函数式):程序特点: Function n(funetion
20、2(funetion1(data)程序执行: 执行一个个函数施用在数据上的变换最终得到的结果编译: 语法分析容易; 语义处理复杂; 基于规则的语言(prolog,yacc):程序特点: 使能条件1 动作1 使能条件2 动作2 使能条件3 动作3 面向对象语言: 抽象数据类型,继承机制编译: 动态绑定; 执行环境n批处理环境:将源程序作为整体处理n 排除程序错误不能依靠用户的外部帮助n交互环境:解释n 增量式编译n嵌入式系统环境:交叉编译n分布并行环境:并行编译n程序创建和测试环境: 独立编译n 编译和调试同时设计考虑 编译技术的发展和应用n结构化编译器n程序分析工具 静态分析n 动态分析n 度
21、量工具 结构度量n 模块接口复杂度n c分析工具(source insight) n广泛的语言领域 数据库系统查询n 脚本语言n 置标语言(SGML.HTML.XML)研究领域n并行编译技术n交叉编译技术n硬件描述语言及其编译技术 并行化编译技术n目的:提高并行计算机体系结构的性能。n超大规模计算的日益增长的需求 高性能计算机n 并行软件并行体系结构单机速度 并行体系结构途径1途径2 并行体系结构 编译技术支持 串行程序并行化编译技术支持 并行程序设计语言编译 依赖于目标机的优化(低层) 性能发挥 并行算法复杂,难掌握,难编程 开发并行 软件的困难 并行程序的不确定行为,难调试,验证设计新的并
22、行算法 修改已有串行程序尽量(直接用并行程序 并行化(研究算法和设计语言和并行程 应用的人同时工作)序库实现。).HPF.Occom. PVM 途径12 嵌入式 嵌入式操作系统 宿主机操作系统及支撑环境编辑器连接器交叉调试器仿真器下载器交叉编译器代码优化器嵌入式应用交叉编译器由于目标机指令系统与宿主机的指令系统不同,编译由于目标机指令系统与宿主机的指令系统不同,编译时将应用程序的源程序在宿主机上生成目标机代码,时将应用程序的源程序在宿主机上生成目标机代码,称为交叉编译。称为交叉编译。SOIOAB硬件描述语言及其编译技术n电路设计依据 n验证结果 如:VHDL 第一章 小结n内容n1 什么是编译程序n2 编译过程和编译程序的结构n3 为什么要学习编译程序n本章没有难以理解的内容,重点对编译程序的功能和结构做一综述,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青岛市化工职业中等专业学校 (青岛市石化高级技工学校)公开招聘建设考试参考题库及答案解析
- 岚图汽车招聘智能驾驶2026届春招及2027届招聘建设笔试参考题库及答案解析
- 2026北京大学材料科学与工程学院招聘劳动合同制工作人员1人建设笔试备考试题及答案解析
- 雅安消防2026年上半年面向社会招录政府专职消防队员和消防文员(31人)建设笔试模拟试题及答案解析
- 2026吉林长春市东北师范大学工程技术系列专业技术人员招聘2人建设考试备考题库及答案解析
- 2026贵州安顺经济技术开发区市场监督管理局招聘公益性岗位人员1人建设考试参考试题及答案解析
- 2026上半年重庆市南岸区从后备人选库中招录社区工作者60人建设笔试模拟试题及答案解析
- 2026江西赣州市赣县区城市建设投资集团有限公司招聘3人建设笔试备考试题及答案解析
- 2026江西国企大气环保技术服务岗位招聘1人建设考试参考题库及答案解析
- 202福建福州市晋安区岳峰镇房地产开发公司招聘2人建设考试备考题库及答案解析
- 【真题】2023年徐州市中考道德与法治试卷(含答案解析)
- 护患沟通与护患纠纷防范课件
- 孕妇的护理家庭护理
- 人教新课标五年级数学下册教材解读PPT
- 客服经理资质考前练习题库(327道)
- 产品五金外观检验标准
- 贵州事业单位考试事业单位考试模拟考试试卷(含答案)
- GB/T 16886.18-2022医疗器械生物学评价第18部分:风险管理过程中医疗器械材料的化学表征
- GB/T 1870-1995磷矿石和磷精矿中水分的测定重量法
- 民法学全套精美课件
- 质量管理基本知识培训教材课件
评论
0/150
提交评论