编译原理速成

第一章 绪论

1.1 语言处理过程

预处理——>编译——>汇编——>装配连接(适配机器)

源程序——>汇编程序——>可重定位机器代码——>绝对机器码(无需加工就能看懂——>运行

1.2 什么是编译

翻译程序:源语言程序——等价转换——>目标语言程序

编译程序:高级语言程序——>低级语言程序(汇编,机器语言 (c pascal

解释程序:源语言写的源程序作为输入——边解释边执行——不产生目标程序(也不需要目标代码

编译过程:

词法分析——>语法分析——>语义分析和中间代码生成——>代码优化——>目标代码生成

词法分析

任务:扫描源程序,对字符串进行分解,识别出单词符号

依据:构词规则

描述:正规式和有限自动机

语法分析

任务:单词符号串——>各类语法单位

依据:语法规则

描述:上下文无关文法

语义分析和中间代码生成

任务:对各类不同的语法范畴(语句,过程,表达式,函数),按语义翻译

依据:语义规则

中间代码:三元式,四元式,逆波兰式,树形结构

代码优化

任务:对中间代码进行加工变换——>生成更高效的目标代码

依据:提取公共子表达式,合并已知量,删除无用语句,循环优化

原则:等价变换规则

目标代码生成

任务:中间代码——>目标代码(特定机器

依赖:硬件系统结构,机器指令

生成:绝对指令代码——>可直接运行

           可重定位指令代码——>装配连接

           汇编指令代码——>需要汇编

           (见图1.1)

1.3 编译程序结构

1)结构图

2)表格管理

常见表格:符号名表,常数表,标号表,入口名表,过程引用表。

格式:名字——>信息

start——>标号 类似于goto

3)出错处理

发现错误(语法语义)并发送给客户

检测不出逻辑错误

 1.4 遍

对输入文件(源程序或者中间程序)从头到尾扫视,完成预定的处理。

阶段和遍:一遍可以由若干段组成,一个阶段也可以分成若干遍

1.5 编译前端和编译后端

编译前端:源语言有关,词法分析,语法分析,语义分析,中间代码生成,和目标机无关的优化

编译后端:与目标机有关的优化,目标代码生成

源语言——前端>中间语言——后端>目标语言

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值