资源描述:
《北京化工大学信息科学与技术学院计算机系教学文稿.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、北京化工大学信息科学与技术学院计算机系0011010010101010…0100101110110100目标模块0011010010101010……0100101110110100#includeintmain(void){inta;…;cin>>…;…;return0;}源程序TextEditor文本编辑器Linker链接器Compiler编译Preprocessor预处理程序Translator翻译程序系统库●BuildingaProgram构建程序10/6/20212北京化工大学信息科学与技术学院计算机系基础程序In
2、terpreters解释程序Assemblers汇编程序Linkers连接程序Loaders装入程序Preprocessors预处理程序●编译相关程序IDE程序Editors编辑器Debuggers调试器Profilers描述器Projectmanagers项目管理器10/6/20213北京化工大学信息科学与技术学院计算机系目标程序源程序编译程序初始数据计算结果功能工作结果实现技术上编译程序源程序的一个转换系统源程序的目标代码把中间代码转换成目标程序解释程序源程序的一个执行系统源程序的执行结果执行中间代码源程序解释程序初始数据计算结果●编译和解释
3、程序10/6/20214北京化工大学信息科学与技术学院计算机系翻译外文资料编译源程序分析阅读原文识别单词句子结构句子释义输入并扫描源程序词法分析语法分析语义分析综合修辞加工写出译文代码优化目标代码生成2.2编译器的结构翻译外文资料与编译源程序进行类比10/6/20215北京化工大学信息科学与技术学院计算机系词法分析源程序目标程序语法分析语义分析文字表、符号表处理错误处理中间代码优化中间代码生成前端后端●Thephaseofacompiler编译程序的结构●Thephaseofacompiler编译程序的结构目标代码生成10/6/20216北京化工
4、大学信息科学与技术学院计算机系词法分析:Input:astreamofcharacters,Output:a,[,index,],=,4,+,2(Tokens)语法分析:Input:theformsoftokensOutput:aparsetreeorasyntaxtree例:a[index]=4+22.3编译器的实例10/6/20217北京化工大学信息科学与技术学院计算机系expressionAssign-expressionexpression=expressionSubscript-expressionAdditive-expressive
5、expression[expression]expressionexpressionIdentifieraIdentifierindexNumber4Number2+Assign-expressionSubscript-expressionAdditive-expressiveIdentifieraIdentifierindexNumber4Number2●分析树parsetree●语法树syntaxtree10/6/20218北京化工大学信息科学与技术学院计算机系●语义分析Assign-expressionSubscript-expressio
6、nintegerAdditive-expressiveintegerIdentifieraArrayofintegerIdentifierindexintegerNumber4integerNumber2integer●源代码优化Assign-expressionSubscript-expressionintegerIdentifieraArrayofintegerIdentifierindexintegerNumber6integer10/6/20219北京化工大学信息科学与技术学院计算机系●代码生成●目标代码优化MOVR0,indexMULR
7、0,2MOVR1,&aADDR1,R0MOV*R1,6MOVR0,indexSHLR0MOV&a[R0],6Input:intermediatecodeorIROutput:machinecode,codeforthetargetmachine10/6/202110北京化工大学信息科学与技术学院计算机系2.4与编译相关的数据结构●枚举类型:记号(tokens)种类、语法单位等的命名;●结构体:分析树(parsertree)、语法树(syntaxtree)的结点,符号表(symboltable)等;●树型结构:分析树、语法树、注释树等;●线性表、哈
8、希表:符号表、常数表(literaltable);●文件:输入、输出、临时文件(temporaryfiles)。10/6/202111北