第一章 编译原理基础

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

编译程序在计算机系统中的所在层
来自计算机百科全书的定义
软件:计算机系统中的程序及其文档 系统软件:居于计算机系统中最靠近硬件的一层, 其他软件一般都通过系统软件发挥作用。他和具体 的应用领域无关,如编译系统和操作系统等。 语言处理系统:把软件语言书写的各种程序处理成 可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求 定义语言,功能性语言,设计性语言,程序设计语 言以及文档语言。
例:position:=initial+rate*10;
标识符:position 算符::= 标识符:initial 算符:+ 标识符:rate 算符:* 整数:10 界符:;
单词类型 单词值
保留字 int a ;
例:
标识符 界符
int a; a=a+2;
标识符
算符(赋值)
a
=
标识符
算符(加) 整数 界符
Assembly Language High-level Language
Translator
Target Program
Machine Code
Low-level Language
Assembler
Compiler

编译
– 专指由高级语言转换为低级语言

解释
– 接受某高级语言的一个语句输入,进行解释
细节变化过程,通过画图来加深理解 在理解的基础上记忆 理论结合实践

学习要求∶

成绩考核方法
平时成绩占40%
期末考试成绩占60%
平时成绩为:
课堂点名:20%
作业:20%
第一章 引论
课前思考

什么是编译程序
编译过程和编译程序的结构
为什么要学习编译程序

学习目标
◇ 明确编译程序的功能及其在计算机系统 中的作用。 ◇ 了解源语言程序被编译为目标程序的整 个过程,这个过程一般划分为哪些阶段。 ◇ 知道编译技术可用于哪类软件的设计和 开发。

什么是编译程序

编译程序是现代计算机系统的基本组成 部分之一,而且多数计算机系统都含有 不止一个高级语言的编译程序。对有些 高级语言甚至配置了几个不同性能的编 译程序。
编译程序作为一个语言翻译程序,也要在
翻译过程中检查源程序的语法和语义,报 告一些出错和警告信息,帮助程序员更正 源程序。
有关编译程序的术语

高级语言程序的处理过程
编译过程概述

先看自然语言的翻译
– 1.识别出句子中的一个个单词
– 2.分析句子的语法结构
– 3.根据句子的含义进行初步翻译
– 4.对译文进行修饰
– 5.写出最后译文
编译过程概述
① 词法分析Scanner
任务∶识别单词符号,是最初级的语 法分析。 依循的规则:语言的构词规则
便控制计算机执行,马上得到这句的执行结 果,然后再接受下一句
编译程序和解释程序的区别:
Date Source Program Translator Target Program Run Result
Date Source Program Interpreter Result (边解释边执行)
movf #2, b …
知识结构
程序设计语言与编译

程序设计语言
– 高级语言
– 汇编语言
– 机器语言

在计算机上如何执行一个高级语言程序?
– 把高级语言程序翻译成机器语言程序 – 运行所得的机器语言程序求得计算结果
翻译程序:就是把一种语言(称作源语言)书写 的程序,在不改变语义的条件下,翻译成另一 种语言(称作目标语言)的等价的程序。 Source Program

内容∶

介绍编译程序的工作原理与构造
方法;

详细介绍如何将一个用高级语言 编写的源程序翻译成机器指令程 序。
学习任务∶

掌握编译的理论基础和形式化系


了解编译的全过程及其具体实现 方法
学习方法∶

认真听讲,认真理解书中的基本概念、基
本原理与基本算法

弄懂书中的例题与习题
在看书或理解例题时,一定要画出相应的
– 编译程序的源语言(源程序)
– 编译程序的目标语言(目标程序) – 编译程序的实现语言 给出这些术语的英文:
-编译程序---compiler -源语言---source language -源程序---source program -目标语言---target or object language -目标程序---target or object program -实现语言---implementation language
学习指南

编译程序是现代计算机系统的基本组成部分 之一。编译程序一般由词法分析程序、语法 分析程序、语义分析程序、中间代码生成程 序、目标代码生成程序、代码优化程序、表 格管理程序和出错处理程序等成分构成。通 过课程的学习应掌握各个成分的功能和设计 原则,以及在编译阶段的逻辑关系。理解他 们怎样作为一个整体完成编译任务的。
b:=2;
a:=b+2; write a; …
编译程序
movf b , R1
addf #2, R1
mowenku.baidu.comf R1, a
直接将4的值输
解释程序
出(显示)

编译的转换过程
– 两阶段转换:编译——运行
源 程 序
编 译 程 序 编译时
目 标 代 码
初 始 数 据
运行 子程 序目 标代 码
计 算 结 果
编译技术
王颖
本课程的地位:

计算机专业的专业基础课 是软件技术的基础 是计算机专业的学生必修的一门主干课
作用:
编译原理是介绍如何将高级程序设计语 言变换成计算机硬件所能识别的机器语 言,以便计算机进行处理 它的理论基础坚实,其形式化系统不仅 应用于编译技术,还大量应用于人工智 能、多媒体技术及数据库等领域
a
+ 2 ;
识别右边程序中的单词

运行时
– 三个阶段转换:编译——汇编——运行
编 源 译 程 程 序 序
编译时
汇 编 语 言
汇 编 程 序
汇编时
目 标 代 码
初 始 数 据
运行 子程 序目 标代 码
计 算 结 果
运行时
解释执行
以源程序作为输入,不生成目标代码,一边解 释一边执行 能支持交互环境(同增量式编译系统)

优点:直观易懂,结构简单,节省空间,交互 方便,易于实现人机对话 。 缺点:效率低。因对源程序的循环语句部分要 反复解释执行。 共同点:都需进行词法、语法、语义分析。
相关文档
最新文档