编译器工作过程

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

目标代码生成
目标代码
序号 0 op * arg1 x arg2 10 result T1
目标代码生成
1
+
T1
y
x
LD R,x MUL R,10 ADD R,y ST R,x
id
, 变量序列
算 id id
id
1 2
num
符号表
关键字表
序号 …..
2 …. int …..
界符表
序号 0
1 ….
算符表
序号 …… name ……
name ……
name ;
, …..
2
3 4
*
= + …..
中间代码表
序号 0 1 2 op * + = arg1 x T1 T2 arg2 result 10 T1 y T2 x
词法分析后的结果
语法分析
句子 语法分析 int
语法分析后的结果
(key,2) (id,0)(sep,1) (id,1)(sep,0) (id,0)(op,3) (id,0)(op,2) (num,0)(op,4) (id,1)
句子

句子
变量序列
id
=

id
, 变量序列 算 id id

*
+


id
标识符表
序号 0 1 …. name x y ….. int int
…. type
常数表
序号 0 name 10
….
…..
优化
中间代码表
序号 0 1 2 op * + = arg1 x T1 T2 arg2 10 y result T1 T2 x 序号 0 1 op * + arg1 x T1 arg2 10 y result T1 x 优化
词法分析
in.cpp
界符表
序号 0 1 …. name ; , …..
词法分析后的结果
int x,y; x=x*10+y
关键字表
序号 ….. name ……
(key,2) (id,0)(sep,1) 词法分析 (id,1)(sep,0) (id,0)(op,3) (id,0)(op,2) (num,0)(op,4) 标识符表(id,1)
编译过程
编译过程
英→汉 编译的工作过程 1) 识别单词……………………………………………词法分析 2) 分析句子语法结构…………………………………语法分析 3) 根据句子含义初步翻译…………语义分析与中间代码产生
4) 修饰译文…………………………………………………优化
5) 写出最后译文…………………………………目标代码生成
num
百度文库
语义分析 语义分析后的结果
标识符表
序号 句子 句子 ; 句子 0 name x type int int ….. offset 0
1
….
y
…..
4
…..
int
变量序列
id
= 算 *
算 + 算
中间代码表
算 序号 0 op * + = arg1 x T1 T2 arg2 10 y result T1 T2 x
序号 0 1 …. name x y …..
算符表
序号 …… 2 3 4 …. name …… * = + …..
常数表
0
序号
name 10
2
….
int
…..
….
…..
语法分析
• 语法规则
• • • • 句子->句子;句子 句子->int 变量序列|id=算术表达式 变量序列->id,变量序列|id 算术表达式->算+算|算*算|id|num
相关文档
最新文档