编译原理课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

返回
1.2 编译程序的逻辑结构

表 格 管 理 优化器 中间代码 目标代码生成器 目标代码 词法分析器 单词符号 出
语法分析器
语法单位 语义分析与中间代码产生 中间代码



一个pascal源程序

• • • • • • • • • • progam source; { this little source program is used to illustrate compiling procedure.} Var x,y,z:integer; a:integer Begin {this program has only four executable statements} X:=23+5; Z:=x div-3; Y:=z+18*3; A:=x+(y-2) div 4; End.
1.2.1词法分析程序
• 任务:
1、识别出源程序中的各个基本语法单位; 2、删除无用的空白字符、回车字符以及其他以及其他与 输入介质相关的非实质性字符。 3、删除注释 4、进行语法检查,报告所发现的错误。
前一程序词法分析结果
• #program#source#;#var #x#,#y#,#z#:#integer#;#a#:#integer# ;#begin#x#:=#23#+#5#;#z#:=#x#div ##3#;#y#:=#z#+#18#*#3#;#a#:=#x# +#(#y#-#2#)#div#4#;#end#.# • 更为规整的形式是使用二元式 (1,‘programm’)…..

按编译方式工作的高级语言分两个阶段: 编译阶段 运行阶段
返回
利用翻译的运行
返回
利用解释程序的程序运行
返回
1.1 编译过程概述

进行外文翻译要做的工作:
分析:阅读原文、识别单词、分析句子 综合:修辞加工、代码优化

编译器的工作:
编译器的组成部分

• • • • • • • 词法分析程序 语法分析程序 语义分析程序 中间代码生成程序 代码优化程序 目标代码生成 错误检查和处理程序 各种信息表格的管理程序
别于其中插入一些程序段落,来进行有关程序诊断方面的
工作。
1.2.8 信息表管理程序
• 在编译程序中,造表和查表的工作系由一组专用
的程序来完成,它们被分别安插在编译程序的有
关部分,这一组程序组成了相应编译程序的表格
管理程序。
返回
1.3 编译程序的组织
• 遍的概念:
是对源程序或其内部表示从头到尾扫视一次
之间的中间代码。
1.2.5代码优化程序
• 目标程序质量的衡量标准:
目标程序所占用存储空间的大小 目标程序运行时所需要的时间
1.2.6 目标代码生成程序
• 目标代码的形式:
具有绝对抵制的机器指令代码
汇编语言形式的目标程序
模块结构的机器指令
1.2.7 错误检查和处理程序
• 一般做法:
在编译系统的各个部分,视编译工作的进程和需要,分
编译原理
第一章绪论
授课教师 吴艳玲
内容提要
• 引言
• 1.1 编译过程概述
• 1.2 编译程序的逻辑结构
• 1.3 编译程序的组织
引言

高级语言编程的优点:
算法能力较强 编程效率高

高级语言编程遇到的问题:
机器不能直译程序:
如果一个翻译程序的源语言是某种高级语言,其目标语言是相应于某一计算机的汇编 语言或机器语言称为编译程序或编译器。
• 某些程序语言象pascal和c需要多遍扫描。 • 编译程序前端:
从对源程序的词法分析开始到中间代码生成,编译程序 所完成的处 理工作只依赖于源语言与运行目标程序的计算机无关,上述环节叫编 译前端
• 编译程序后端:
属于综合部分的代码优化和目标代码生成,一般只依赖于目标语言叫 编译程序后端。
返回
1.2.2语法分析程序
• 功能: • 输入: • 输出:
1.2.3语义分析程序
• 语义特征:规定各语法成分的含义和功能,即规定他们的 属性或在执行时应进行的运算或操作。 • 语义决定程序的运行
1.2.4中间代码生成
• 中间语言代码:
为了便于代码的优化处理,通常在语义分析后不直接产生
机器语言或汇编语言而是产生一种介于源语言和目标语言
相关文档
最新文档