编译原理第一章课件计算机编译原理.ppt
编译原理,第一章 总论1.编译程序与程序设计语言1.1 高级程序设计语言的引进 机器语言1000 58 20 1020 C(1020)=reg 2 1004 59 20 1024 C(reg 2)C(1024)1008 47C0 1014 当 10281010 47 F0 101C goto 101C 1014 58 20 1024 C(1024)=reg 21018 50 20 1028 C(reg 2)=1028 101C,汇编语言 L 2,x x=reg 2 C 2,y reg 2(x)y BNG LESS 当 max B EXIT goto EXITLESS L 2,y y=reg 2 ST 2,max reg 2(y)=maxEXIT 高级程序设计语言 If(xy)max=x;else max=y;,1.2 高级程序设计语言程序的执行 程序:计算任务的处理对象与处理规则的描述 例 main()int x,y,t;t=x;x=y;y=t;解释执行方式:逐个语句地模拟执行 翻译执行方式:把程序设计语言程序翻译成等价的目标程序术语:汇编程序:把汇编语言程序翻译成 等价的机器语言程序 编译程序:把高级语言程序翻译成 等价的低级语言程序 源程序 目标程序 源语言 目标语言 运行子程序,源程序 编译程序 目标程序 输入数据 目标程序 输出结果 运行子程序 3 编译程序与编译原理 高级程序设计语言是一种符号语言 编译程序是符号处理的工具 编译原理讨论:编译程序构造的基本原理、技术和方法 编译原理=形式语言理论+编译技术,编译原理课程内容程序设计语言相关概念:认识编译程序的结构与功能形式语言理论基本概念:为第三部分的讨论打下良好基础编译程序构造原理 编译原理课程的基本内容,2.程序设计语言和程序2.1 程序及其结构 程序的概念:计算机能执行的指令序列 进一步,计算任务的处理对象和处理规则 的描述 程序=算法+数据结构 程序与程序设计语言相联系,依据语言写程序 高级程序设计语言程序按一定的构架构成 语法成分的层次:基本符号符号量表达式 语句函数定义程序,归根到底,程序由一连串的基本符号组成。不同的程序设计语言有不同的基本符号集C语言基本符号(字符):字母 数字+-*/%=(),:;?#等C语言符号:标识符、常量、字符串、标号、关键字,以及运算符、标点符号等专用符号,2.2 程序设计语言的定义2.2.1 程序设计语言的四个方面 语法 语义 语用 语境2.2.2 语法定义 语法图 BNF表示法 口语,语法图:函数定义 类型 函数标识符(形参表列)函数体+简单表达式 项-+-项 BNF表示法::=():=|,2.2.3 高级程序设计语言程序的执行 编译方式 源程序 编译程序 目标程序 输入数据 目标程序 输出结果 运行子程序,3.编译程序构造及相关概念3.1 编译程序的构造3.1.1 任务编译程序的性质:符号处理的工具编译程序的作用:把高级程序设计语言源程序 翻译成等价的低级语言目标程序 分析:词法分析 语法分析 语义分析 综合:目标代码生成 代码优化3.1.2 构造 前端:分析 后端:综合,词法分析程序:功能:输入输出:语法分析程序:功能:输入输出:语义分析程序:功能:输入输出:目标代码优化:功能:输入输出:目标代码生成:功能:输入输出:,3.2 趟的概念 编译程序分成若干阶段,每一阶段以前一阶段的输出作为输入,对源程序或中间表示从头到尾地扫描处理的过程称为一趟。分成几趟,编译程序便称为几趟的编译程序。一趟编译程序:,3.3 编译程序分类诊断型优化型可重定位型交叉型增量型3.4 实际应用中的编译程序 1.程序开发支持环境 2.预处理 3.非标准版本,