




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理概念总结编译原理概念总结编译原理概念总结 本文简介:第一章引论?为什么要用编译器?与编译器相关的程序?翻译步骤?编译器中的主要数据结构1、语言处理器1、简单的说,一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成一个等价的、用另一种语言(目标语言)编写的程序。2、编译器的重要任务之一就是报告它在翻译过程中发现的源程序。编译原理概念总结第一章引论?为什么要用编译器?与编译器相关的程序?翻译步骤?编译器中的主要数据结构1、语言处理器1、简单的说,一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成一个等价的、用另一种语言(目标语言)编写的程序。2、编译器的重要任务之一就是报告它在翻译过程中发现的源程序中的错误。3、使用编译器是为了提高编程的速度和准确度。4、与编译器相关的程序:解释程序(interpreter)、汇编程序(assembler)、连接程序(linker)、装入程序(loader)、预处理器(preprocessor)、编辑器(editor)、调试程序(debugger)、描述器(profiler)、项目管理程序(projectmanager)。ObjectProgram5、解释器是另一种常见的语言处理器。它并不通过翻译的方法生成目标程序。从用户的角度来看,解释器直接利用用户提供的输入执行源程序中指定的操作。TranslatorLoader,LinkerandRun-timeSystemOutputSourceProgram6、一个源程序可能被分割成多个模块,并存放于独立的文件中。把源程序聚合在一起的任务有时会由一个被称为预处理器(preprocessor)的程序独立完成。预处理器还负责把那些称为宏的缩写形式转换为源语言的语句。7、连接器(linker)能够解决外部内存地址的问题。8、加载器(loader)把所有的可执行目标文件放到内存中执行。2、一个编译器的结构LexicalAnalysisSyntaxAnalysisSemanticAnalysisControlflow/DataflowOptimizationCodeGenerationSourceProgramAssemblyCodeScannerParserHigh-levelIRtolow-levelIRconversionBuildhigh-levelIRContextSymbolTableCFGMachineindependentasmtomachinedependentFrontendBackend1、将编译器看成黑盒,则源程序映射为在语义上等价的目标程序,而这个映射由两部分组成:分析部分和综合部分。2、分析部分把源程序分解成多个组成要素,并在这些要素之上加上语法结构。3、综合部分根据中间表示和符号表中的信息来构造用户期待的目标程序。4、编译器的第一个步骤:词法分析(lexical)或扫描(scanning)。词法分析器读入组成源程序的字符流,并且将它们组成有意义的词素(lexeme)的序列。词法分析器产生词法单元(token)。5、分隔词素的空格会被词法分析器忽略掉。6、编译器的第二个步骤:语法分析(syntax)或解析(parsing)。语法分析器使用由词法分析器生成的各个词法单元的第一个分量来创建树形的中间表示。7、语义分析(staticsemanticanalysis):语义分析器使用语法树和符号表中的信息来检查源程序是否和语言定义的语义一致。它同时也收集类型信息,并把这些信息存放在语法树或符号表中,以便在随后的中间代码生成过程中使用。语义分析的一个重要部分是类型检查(typechecking)。编译器检查每个运算符是否具有匹配的运算分量。8、总的说,编译器的翻译步骤是:扫描程序-语法分析程序-语义分析程序-源代码优化程序-代码生成器-目标代码优化程序。3、编译器结构中的主要数据结构1、记号(token)2、语法树(syntaxtree)3、符号表(symboltable)4、常数表(literaltable)5、中间代码(intermediatecode)6、临时文件(temporaryfile)4、将编译器分成了只依赖于源语言(前端(frontend)的操作和只依赖于目标语言(后端(backend)的操作两部分。第二章词法分析?扫描处理?正则表达式?有穷自动机?从正则表达式到DFA?利用Lex自动生成扫描程序1、Tokens记号标记:identifiers、keywords、integers、floating-point、symbols、strings、comments1、使用正则表达式去描述程序语言tokens2、一个正则表达式是归纳确定3、一个正则表达式R描述一组字符串集合L(R)4、L(R)=thelanguagedefinedbyR5、所有的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、二义性:可生成带有两个不同分析树的串的文法称作二义性文法(ambiguousgrammar)有两个解决二义性的基本方法。其一是:设置一个规则,该规则可在每个二义性情况下指出哪一个分析树(或语法树)是正确的。另一种方法是将文法改变成一个强制正确分析树的构造的格式,这样就可以解决二义性了。第四章自顶向下的分析?使用递归下降分析算法进行自顶向下的分析?LL(1)分析?First集合和Follow集合1、使用递归下降分析算法进行自顶向下的分析2、LL(1)分析方法是这样得名的:第1个“L”指的是由左向右地处理输入(一些旧式的分析程序惯于自右向左地处理输入,但现在已不常用了)。第2个“L”指的是它为输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智算中心扩建项目施工方案
- 水库工程环境影响报告书
- 离职技术人员知识产权归属与离职后技术成果转化协议
- 大宗固废减量化处理系统建设方案
- 建筑民宅方案设计图
- 2025年小学二级试卷及答案
- 法制员专业面试题及答案
- 2025年华杯赛初一试题及答案
- DB65T 4394-2021 籽用南瓜高产栽培技术规程
- 新能源2025年危机公关处理案例:技术创新与策略实施指南报告001
- 无锡信捷校招笔试题目及答案
- 模具厂合伙协议合同协议
- 直播分成合同协议
- 【9化一模】2025年安徽省合肥市包河区中考一模化学试卷(含答案)
- (新版)中国心理卫生协会心理咨询师考试复习题库(浓缩400题)
- 塑料软包装质量安全管理制度2024.05
- 2025-2030中国妇科中成药市场营销趋势及投融资发展状况研究报告
- T-CNAS 12-2020 成人经口气管插管机械通气患者口腔护理
- 艾滋病防治知识宣传
- 危重患者肠内营养的护理
- 2024年全国职业院校技能大赛高职组(建筑工程识图赛项)考试题库(含答案)
评论
0/150
提交评论