![[计算机]编译原理概念总结.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/11/cb54c35a-b1cc-4b75-b082-effbe5ee3edd/cb54c35a-b1cc-4b75-b082-effbe5ee3edd1.gif)
![[计算机]编译原理概念总结.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/11/cb54c35a-b1cc-4b75-b082-effbe5ee3edd/cb54c35a-b1cc-4b75-b082-effbe5ee3edd2.gif)
![[计算机]编译原理概念总结.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/11/cb54c35a-b1cc-4b75-b082-effbe5ee3edd/cb54c35a-b1cc-4b75-b082-effbe5ee3edd3.gif)
![[计算机]编译原理概念总结.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/11/cb54c35a-b1cc-4b75-b082-effbe5ee3edd/cb54c35a-b1cc-4b75-b082-effbe5ee3edd4.gif)
![[计算机]编译原理概念总结.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/11/cb54c35a-b1cc-4b75-b082-effbe5ee3edd/cb54c35a-b1cc-4b75-b082-effbe5ee3edd5.gif)
已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 引论 为什么要用编译器 与编译器相关的程序 翻译步骤 编译器中的主要数据结构1、语言处理器1、简单的说,一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成一个等价的、用另一种语言(目标语言)编写的程序。2、编译器的重要任务之一就是报告它在翻译过程中发现的源程序中的错误。3、使用编译器是为了提高编程的速度和准确度。4、与编译器相关的程序:解释程序(interpreter)、汇编程序(assembler)、连接程序(linker)、装入程序(loader)、预处理器(preprocessor)、编辑器(editor)、调试程序(debugger)、描述器(profiler)、项目管理程序(project manager)。ObjectProgram5、解释器是另一种常见的语言处理器。它并不通过翻译的方法生成目标程序。从用户的角度来看,解释器直接利用用户提供的输入执行源程序中指定的操作。TranslatorLoader, Linkerand Run-timeSystemOutputSourceProgram6、一个源程序可能被分割成多个模块,并存放于独立的文件中。把源程序聚合在一起的任务有时会由一个被称为预处理器(preprocessor)的程序独立完成。预处理器还负责把那些称为宏的缩写形式转换为源语言的语句。7、连接器(linker)能够解决外部内存地址的问题。8、加载器(loader)把所有的可执行目标文件放到内存中执行。2、一个编译器的结构Lexical AnalysisSyntax AnalysisSemantic AnalysisControlflow/DataflowOptimizationCode GenerationSourceProgramAssemblyCodeScannerParserHigh-level IR to low-level IR conversionBuild high-level IRContextSymbol TableCFGMachine independent asm to machine dependentFront endBack end1、将编译器看成黑盒,则源程序映射为在语义上等价的目标程序,而这个映射由两部分组成:分析部分和综合部分。2、分析部分把源程序分解成多个组成要素,并在这些要素之上加上语法结构。3、综合部分根据中间表示和符号表中的信息来构造用户期待的目标程序。4、编译器的第一个步骤:词法分析(lexical)或扫描(scanning)。词法分析器读入组成源程序的字符流,并且将它们组成有意义的词素(lexeme)的序列。词法分析器产生词法单元(token)。5、分隔词素的空格会被词法分析器忽略掉。6、编译器的第二个步骤:语法分析(syntax)或解析(parsing)。语法分析器使用由词法分析器生成的各个词法单元的第一个分量来创建树形的中间表示。7、语义分析(static semantic analysis):语义分析器使用语法树和符号表中的信息来检查源程序是否和语言定义的语义一致。它同时也收集类型信息,并把这些信息存放在语法树或符号表中,以便在随后的中间代码生成过程中使用。语义分析的一个重要部分是类型检查(type checking)。编译器检查每个运算符是否具有匹配的运算分量。8、总的说,编译器的翻译步骤是:扫描程序-语法分析程序-语义分析程序-源代码优化程序-代码生成器-目标代码优化程序。3、编译器结构中的主要数据结构1、记号(token)2、语法树(syntax tree)3、符号表(symbol table)4、常数表(literal table)5、中间代码(intermediate code)6、临时文件(temporary file)4、将编译器分成了只依赖于源语言(前端( front end)的操作和只依赖于目标语言(后端( back end)的操作两部分。第二章 词法分析 扫描处理 正则表达式 有穷自动机 从正则表达式到D FA 利用L e x自动生成扫描程序1、 Tokens记号标记:identifiers、keywords、integers、floating-point、symbols、strings、comments1、 使用正则表达式去描述程序语言tokens2、 一个正则表达式是归纳确定3、 一个正则表达式R描述一组字符串集合L(R)4、 L(R) = the language defined by R5、 所有的token都能用正则表达式表示2、 正则表达式:1、 基本正则表达式:他们是字母比哦啊中的单个字符且自身匹配2、 正则表达式运算:1、 从各选择对象中选择,用元字符“|”表示2、 连结,由并置表示(不用元字符)3、 重复或“闭包”,由元字符“*”表示3、从各选择对象中选择:4、连结:正则表达式r和正则表达式s的连接可写作rs5、重复:正则表达式的重复有时称为Kleene闭包(Kleene)closure),写作r*6、运算的优先和括号的使用:前面的内容忽略了选择、连接和重复的优先问题。7、正则表达式的名字:为较长的正则表达式提供一个简化了的名字很有用处,这样就不再需要在每次使用正则表达式时书写常常的表达式本身了。3、有穷自动机(有穷状态机):是描述(或“机器”)特定类型算法的数学方法。1、确定性有穷自动机:下一个状态由当前状态和当前输入字符惟一给出的自动机。2、非确定性有穷自动机:由它产生的。4、从正则表达式到DFA1、构造一个个扫描程序的自动过程可分为3步2、从正则表达式到NFA3、从NFA到DFA4、将DFA中的状态最小化第三章 上下文无关文法及分析 分析过程 上下文无关文法 上下文无关语言的形式特性 分析树与抽象语法树 二义性1、分析过程:2、上下文无关文法:3、分析树与抽象语法树:4、二义性:可生成带有两个不同分析树的串的文法称作二义性文法( ambiguous grammar)有两个解决二义性的基本方法。其一是:设置一个规则,该规则可在每个二义性情况下指出哪一个分析树(或语法树)是正确的。另一种方法是将文法改变成一个强制正确分析树的构造的格式,这样就可以解决二义性了。第四章 自顶向下的分析 使用递归下降分析算法进行自顶向下的分析 LL(1)分析 First 集合和F o l l o w集合1、使用递归下降分析算法进行自顶向下的分析2、LL(1) 分析方法是这样得名的:第1个“L”指的是由左向右地处理输入(一些旧式的分析程序惯于自右向左地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惯性测量基本原理课件
- 情感配音基础知识培训课件
- 四川省南充市阆中中学2026届高二化学第一学期期末复习检测模拟试题含答案
- 患者安全知识培训课件
- 父亲节策划方案
- 秋期小班个人工作方案
- “好书伴我成长”主题班会活动的解决方案
- 学校常规管理活动方案
- 水利分类考试题及答案
- 护卫支队考试题及答案
- 医院综合门诊部综合管理体系建设
- 2025至2030年中国SCADA行业市场运行现状及投资规划建议报告
- 2025年中医师承出师考试题库
- 2025年宜昌市猇亭区招聘化工园区专职工作人员(6人)笔试备考试题及答案详解(夺冠)
- uom无人机考试题库及答案2025
- 预防接种基础知识课件
- 护栏生产及安装方案(3篇)
- 厂区参观流程规范
- 污水厂培训课件
- 科协单位涉密管理制度
- 夏季安全生产试题及答案
评论
0/150
提交评论