北大编译原理讲义Chapter1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19
6
经词法分析源程序被加工成单词流
<保留字,PROGRAM> <标识符,m> <分隔符, ; > <保留字,VAR> <标识符,a>
<标识符,b> <标识符,c>
<分隔符, : >
<标识符, real> <分隔符, ; > <保留字, BEGIN> …... <标识符,a> < 算符 , := > <标识符,b> < 算符, + > <标识符,c> <算符,* > <常数 ,60>…… <保留字, END> <分隔符, . >
编译程序
目 标 程 序
抽 目标 象
首先研究源程序的语法和语义及运行模
行,源是设计编译程序的出发点。 研究目标计算机,设计目标代码的指令 系统,它是由目标计算机扩充而成,扩 充后的计算机称作抽象计算机。目前的
通用计算机往往和源语言执行模型不一致。。
16
教和学的几个问题
重要性:处理字符串的一般方法;构造
仅依赖源程序
仅依赖目标计算机
遍(PASS): 对输入文件(源程序或其等价
的中间形式)从头到尾扫视,完成预定的处 理。
输入文件
遍
输出文件
14
把前端组织成一遍扫描
错误的诊查处理 语法分析 源 程 序 词法 分析
语义分析和
中间代码生成
中 间 代 码
15
符号表管理
设计编译程序应首先研究的问题
源 程 序
编译概述
什麽是编译 编译器的逻辑结构(工作阶段) 编译器各阶段的工作 编译器的组织 编译器的设计 学习本课程应注意的问题
教材和参考书
3
编译程序的功能
把高级语言程序翻译成等价的低级 语言 程序。 源 程 序 编译程序
目 标 程 序
4
编译系统:编译程序和运行程序
编译程序的逻辑结构
符
词 法 分 析 语 法 分 析
号
语 义 分 析
表
中 间 代 码 生 成
管
理
目 标 代 码 生 成
源 程 序
优 化
目 标 代 码
错 误
ຫໍສະໝຸດ Baidu
诊
查
处 理
3
5
源程序
PROGRAM
m; VAR a,b,c:real; BEGIN read(b,c); a:=b+c*60; write(a) END.
大程序的方法;实用;研究课题:新的 语言及实现技术;并行编译技术。 学习方法 :(1)源程序是源泉;(2) 把每个阶段放到整个编译程序背景中学 习;(3)认真做作业。 每周有一次答疑。 参于网上教材的修改与创新。
17
教材和参考书
教材: (1)编译程序设计原理 北京大学出版社, 杜淑敏等编著。 (2)网络版(软件工程中心资助)。
10
优
化
Temp1 :=c * 60.0 a := b+temp1 生成目标代码 movf c , r2 ; mulf #60.0 , r2 ; movf b , r1 ; addf r2 , r1 ; movf r1 , a ;
11
符号表
名 m a b c
字 种 过 变 变 变
类 类 程 量 real 量 量
18
参考书
(1)编译原理,清华大学出版社,吕映芝 等编著,1998。 (2)程序设计语言编译原理,国防工业出
版社,陈火旺等编著,1984。 (3)Alfred V.Aho, Ravi SethiJeffrey D .Ullman , Compilers:Principles,
Techniques, and Tools, AddisonWesly,1986 。 (4) Modern Compiler Implementation in C, ©Andrew W .Appel and Maia Ginsburg , 1998 19
7
赋值语句经语法分析生成分析树
赋值语句 变 量 := 表达式 项 因子 表达式
a
+
项 因子
项
* 因子 60
b
c
8
赋值语句经语义分析生成语法树
:=
a
b
+
* c inttoreal
60
9
生成中间代码
temp1:=inttoreal(60); temp2:=c * temp1; temp3:=b +temp2; a :=temp3;
型 层
0
次 偏移量
1 1 1
d d+4 d+8
real real
12
错误的诊查处理
编译程序在各个阶段应诊断和报告源程
序中的错误,包括词法错误,语法错误, 语义错误。 编译程序应报告出错地点,并给出简明 准确的提示信息。
13
编译程序(器)的组织
前端和后端
源程序
前 端
中间代码
后 端
目标代码