您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 北京化工大学信息科学与技术学院计算机系
2019/8/2北京化工大学信息科学与技术学院计算机系1第2章编译简介2.1编译器2.2编译器的结构2.3编译器的实例2.4与编译相关的数据结构2.5编译器各阶段的分组2.6编译器的构造工具2019/8/2北京化工大学信息科学与技术学院计算机系22.1编译简介●程序设计语言程序设计语言低级语言:面向机器的语言机器语言汇编语言过程式语言Fortran,Pascal,C…函数式语言Lisp…逻辑式语言Prolog…对象式语言C++…高级语言CompilerSourceProgramTargetProgram2019/8/2北京化工大学信息科学与技术学院计算机系30011010010101010…0100101110110100目标模块0011010010101010……0100101110110100#includeiostream.hintmain(void){inta;…;cin…;…;return0;}源程序TextEditor文本编辑器Linker链接器Compiler编译Preprocessor预处理程序Translator翻译程序系统库●BuildingaProgram构建程序2019/8/2北京化工大学信息科学与技术学院计算机系4基础程序Interpreters解释程序Assemblers汇编程序Linkers连接程序Loaders装入程序Preprocessors预处理程序●编译相关程序IDE程序Editors编辑器Debuggers调试器Profilers描述器Projectmanagers项目管理器2019/8/2北京化工大学信息科学与技术学院计算机系5目标程序源程序编译程序初始数据计算结果功能工作结果实现技术上编译程序源程序的一个转换系统源程序的目标代码把中间代码转换成目标程序解释程序源程序的一个执行系统源程序的执行结果执行中间代码源程序解释程序初始数据计算结果●编译和解释程序2019/8/2北京化工大学信息科学与技术学院计算机系6翻译外文资料编译源程序分析阅读原文识别单词句子结构句子释义输入并扫描源程序词法分析语法分析语义分析综合修辞加工写出译文代码优化目标代码生成2.2编译器的结构翻译外文资料与编译源程序进行类比2019/8/2北京化工大学信息科学与技术学院计算机系7词法分析源程序目标程序语法分析语义分析文字表、符号表处理错误处理中间代码优化中间代码生成前端后端●Thephaseofacompiler编译程序的结构●Thephaseofacompiler编译程序的结构目标代码生成2019/8/2北京化工大学信息科学与技术学院计算机系8词法分析:Input:astreamofcharacters,Output:a,[,index,],=,4,+,2(Tokens)语法分析:Input:theformsoftokensOutput:aparsetreeorasyntaxtree例:a[index]=4+22.3编译器的实例2019/8/2北京化工大学信息科学与技术学院计算机系9expressionAssign-expressionexpression=expressionSubscript-expressionAdditive-expressiveexpression[expression]expressionexpressionIdentifieraIdentifierindexNumber4Number2+Assign-expressionSubscript-expressionAdditive-expressiveIdentifieraIdentifierindexNumber4Number2●分析树parsetree●语法树syntaxtree2019/8/2北京化工大学信息科学与技术学院计算机系10●语义分析Assign-expressionSubscript-expressionintegerAdditive-expressiveintegerIdentifieraArrayofintegerIdentifierindexintegerNumber4integerNumber2integer●源代码优化Assign-expressionSubscript-expressionintegerIdentifieraArrayofintegerIdentifierindexintegerNumber6integer2019/8/2北京化工大学信息科学与技术学院计算机系11●代码生成●目标代码优化MOVR0,indexMULR0,2MOVR1,&aADDR1,R0MOV*R1,6MOVR0,indexSHLR0MOV&a[R0],6Input:intermediatecodeorIROutput:machinecode,codeforthetargetmachine2019/8/2北京化工大学信息科学与技术学院计算机系122.4与编译相关的数据结构●枚举类型:记号(tokens)种类、语法单位等的命名;●结构体:分析树(parsertree)、语法树(syntaxtree)的结点,符号表(symboltable)等;●树型结构:分析树、语法树、注释树等;●线性表、哈希表:符号表、常数表(literaltable);●文件:输入、输出、临时文件(temporaryfiles)。2019/8/2北京化工大学信息科学与技术学院计算机系13编译程序的前端:与源语言有关,而与目标机无关的编译程序编译程序的后端:与目标机有关,而与源语言无关的编译程序遍(趟):是对源程序或源程序的中间结果从头到尾扫描一遍,并作有关加工处理,生成新的中间结果或目标程序。宿主机:运行编译程序的计算机称为宿主机。目标机:运行编译程序所产生的目标代码的计算机成为目标机。2.5编译器各阶段的分组2019/8/2北京化工大学信息科学与技术学院计算机系14要求:程序设计语言实现编译程序的开发2.6编译程序的构造工具预处理法移植法自展法工具法理论法●开发编译程序的途径●编译程序的构造工具分析器生成器扫描器生成器语法制导翻译引擎自动代码生成器数据流引擎源语言目标语言编译方法●设计和实现编译程序,必须精通Pascal编译程序C编译程序Fortran编译程序●经典的编译程序2019/8/2北京化工大学信息科学与技术学院计算机系15第2章编译简介2.1编译器2.2编译器的结构2.3编译器的实例2.4与编译相关的数据结构2.5编译器各阶段的分组2.6编译器的构造工具END2019/8/2北京化工大学信息科学与技术学院计算机系16Thankyou.BeijingUniversityofChemicalTechnologyBeijing,PRChina
本文标题:北京化工大学信息科学与技术学院计算机系
链接地址:https://www.777doc.com/doc-46477 .html