欢迎来到天天文库
浏览记录
ID:48778962
大小:471.50 KB
页数:39页
时间:2020-01-23
《第1章 编译原理.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、11第1章编译系统介绍2TopicsOverviewofcompilers编译概述Lexicalanalysis(Scanning)词法分析Syntacticanalysis(Parsing)语法分析Context-sensitiveanalysis语义分析Typechecking类型检查Runtimeenvironments运行环境Symboltables符号表Intermediaterepresentations中间表示Intermediatecodegeneration中间代码生成Codeoptimization代码优化代码生成331.1编译程序编译器是什么?翻译一种语言(源语言)的
2、程序成为等价的另一种语言(目标语言)的程序,并能报告源语言中错误的一种程序。TargetProgram目标程序编译器Sourceprogram源程序Errormessages出错信息Diverse&Varied4程序设计语言程序设计语言:用来编写计算机程序的语言。程序设计语言高级语言低级语言:面向机器的语言过程式语言Fortran,Pascal,C函数式语言Lisp逻辑式语言Prolog对象式语言C++汇编语言机器语言55什么是解释程序?读入一个可执行的程序并产生执行该程序的结果的一种程序。编译和解释的例子CistypicallycompiledSchemeistypicallyinter
3、pretedJavaiscompiledtobytecodes,whicharetheninterpreted解释程序66编译器的结构SinglePass单遍MultiplePass多遍Load&Go装入并执行Debugging排错Optimizing优化Construction构造Functional功能77编译程序的分析与综合编译程序的工作分为两个基本部分:Analysis:分析词法、语法、语义分析把源程序转换成中间表示Synthesis:综合从中间表示生成目标程序88编译技术的应用编译并不限于程序设计语言的应用TextFormatters正文格式化程序LATEX&TROFFAreLa
4、nguagesWhoseCommandsFormatTextSiliconCompilers硅片编译程序Textual/Graphical:TakeInputandGenerateCircuitDesignDatabaseQueryProcessors数据库查询处理程序DatabaseQueryLanguagesAreAlsoaProgrammingLanguageInputiscompiledIntoaSetofOperationsforAccessingtheDatabase9编译程序的环境为了建立一个可执行的程序,除了编译程序本身之外还需要其他一些程序,它们构成编译程序正常工作的环境
5、,如下图所示。1010SourceProgramPre-Processor1Compiler2Assembler3RelocatableMachineCode4LoaderLink/Editor5ExecutableLibrary,relocatableobjectfiles111.2源程序的分析源程序的分析过程由如下过程组成:词法分析(线性分析过程)从左到右扫描构成源程序的字符流,并分组成有独立含义的token或单词语法分析(分层结构分析过程)将token或单词组合成一种嵌套的层次结构语义分析执行各种检查以确保程序的各部分有意义。1212编译器的结构框图源程序词法分析1语法分析2语义
6、分析3中间代码生成4代码优化5目标代码生成6目标程序符号表管理出错处理1,2,3:分析阶段4,5,6:综合阶段1313Phase1.词法分析字符流转变为单词流ForExample:字符流Allaretokens空格,换行符等.被过滤Position:=initial+rate*60;______________________1414Phase2.语法分析关于上页例子的分析树(ParseTree):identifieridentifierexpressionidentifierexpressionnumberexpressionexpressionexpressionassignments
7、tatementposition:=+*60initialrate树的结点是利用该语言的文法来建造的1515文法是规则的集合,它们支配了Tokens中的相互依赖和结构statement是assignmentstatement,orwhilestatement,orifstatement,or...assignmentstatementexpressionisanisanidentifier:=expression;(ex
此文档下载收益归作者所有