编译原理 第一章 总论
来源:互联网 发布:网络神话的缔造者 编辑:程序博客网 时间:2024/04/30 13:48
总论:下面是自己对编译原理整个过程中所用的一些重要术语的理解
编译原理就是研究编译器的原理
编译器(compiler)是完成将程序翻译成一种能够被计算机执行的形式的软件系统,而编译原理就是编写编译器的原理。
编译器是程序:用于阅读以某一种语言编写的程序,并翻译成另一种。编译的工作是找错。
解释器:用户输入直接输出,逐个语句执行。
对比:编译器的目标程序比解释器快,解释器的错误诊断效果好。
编译器构成
预处理器(preprocessor):把程序整合到一起(转化宏)
汇编器(assembler):处理汇编语言
链接器(linker):把文件整合成一个
加载器(loader):把目标文件放到内存中
编译器结构:
分析(analysis):程序的编译过程创建中间表示,并收集有关源程序信息放到符号表(symbol table)的数据结构中,和中间表示一起给后端。(前端front end)
综合(synthesis):生成目标程序。(后端back end)
编译原理的重要过程
词法分析lexical analysis:
例:position=initial+rate*60
词素(lexeme):position->词法单元<id,1> id标识符(identifier),1指符号表中position的条目,条目存放的是标识符信息
词素:=+* 60相应映射成词法单元
词素initial->词法单元<id,2> rate->词法单元<id,3>
空格过滤。
词法单元序列:<id,1><=><id,2><+><id,3><*><60>
语法分析syntax analysis:创建树形的中间表示,表示方式为语法树(syntax tree)
语义分析器semantic analyzer:检查源程序是否和语言定义的语义一致。其中需要做类型检查(type checking)(例如+两边的变量能不能+,数组下标是不是整型),自动类型转换(coercion)
代码优化(改进中间代码):更快、更短、能耗更低,优化编译器完成此工作。
符号表:记录变量的各个属性。
编译器的目的
优化编译器的目标:正确、性能、时间、设计和维护。
软件生成率(检查错误):类型检查、边界检查、内存管理。
例子:
摘录自龙书,初学者,有理解不到位的地方欢迎指正。
- 编译原理 第一章 总论
- 编译原理第一章简介
- 【编译原理】第一章 引论
- 编译原理答案--第一章
- 编译原理--第一章--引论
- 现代编译原理 第一章
- 会计原理--总论
- 编译原理第一章学习总结
- 编译原理 Chapter1 Introduction 第一章 简介
- 读《编译原理》(英文版)第一章
- 编译原理学习笔记--第一章 绪论
- 总论
- 《辛雷学习方法》读书笔记——第一章 总论
- Spark数据倾斜解决原理和方法总论
- [会计] 第一章 总论(未完成,先不要看,没有实质内容)
- 计算机网络原理 第一章
- 微机原理 第一章-----绪论
- 第一章,程序设计原理总结
- Opencv视频某一目标点坐标标定
- 中间语言和虚拟机漫谈
- 检测Linux内存使用情况的free命令的10个
- 倒计时持续震动,结束时停止震动 iOS
- web.py框架之db模块操作
- 编译原理 第一章 总论
- Linux下挂载/卸载光盘
- 毕设周记Ⅲ
- UEditor windows环境下的路径问题
- yii 随笔(二):创建第一个用户
- android sqlite 不存在插入,存在更新语句
- 如何在Linux上使用命令行查看硬件信息
- Redis+Spring缓存实例(windows环境,附实例源码及详解)
- ios-GPUImage框架中,图片保存后图片右偏90度