编译原理概述
来源:互联网 发布:数据录取 编辑:程序博客网 时间:2024/04/30 23:10
介绍编译和解释基本概念,和编译的基本步骤。
一、编译和解释
计算机不能直接理解 高级语言 ,只能直接理解 机器语言 ,所以必须要把高级语言“翻译”成机器语言,计算机才能执行高级语言编写的程序。
我们可以粗略地把编程语言分为两类: 编译型语言 和解释型语言(常用的C/C++,Pascal和最近流行的Go语言都是编译型语言,而Python、Ruby等则是解释型语言,解释型语言也被称作”脚本语言“) 。
对于它们的“翻译”,则分别称之为“编译”和“解释”。
解释:解释型语言在程序运行时有一个专门的解释器,将代码翻译为机器语言,一边翻译一边执行。
编译:而编译型语言写的程序,在执行之前都必须有一个“编译”的过程,将源码编译为机器语言的文件(比如windows下的exe文件),运行的时候直接运行编译后的文件。
二、编译步骤
编译是个相当复杂的过程,我们可以大概将编译过程分为两部分:源代码的分析和目标程序的生产。而为了方便理解编译过程,我们可以按照编译的逻辑过程,一步一步来看:1、词法分析
编译器将源码看作一个很长的字符串,首先对它进行从左到右的扫描,然后对其做初步分析,识别出代码中的单词(称作Token),分为基本字、标识符、常数、运算符和界符等,方便编译的后续步骤。
在该过程中如果发现不符合词法规则的token,将做出错处理。
2、语法分析
语法分析是对词法分析得到的单词流,按语法规则做进一步的分析,识别出语法单位,如表达式、短语、子句、句子和程序等,从而形成一颗“语法树”。
在该过程中如果发现不符合语法规则的单词流,将做出错处理。
3、语义分析
经过词法分析和语法分析,程序如果没有错误,就可以按照语义要求对其进行“翻译”,形成被称为“四元式”的中间代码。
4、优化
语义分析生成的中间代码不依赖于实际的硬件,便于优化和移植,针对实际状况做一些等效变换,使程序占用内存更小,执行更快。
5、目标代码生成
根据优化后的中间代码,可生成有效的目标代码。而通常编译器将其翻译为汇编代码,此时还需要将汇编代码经汇编器汇编为目标机器的机器语言。
6、出错处理
编译的各个阶段都有可能发现源码中的错误,尤其是语法分析阶段可能会发现大量的错误,因此编译器需要做出错处理,报告错误类型及错误位置等信息。
- 编译原理 编译概述
- 编译原理概述
- 编译原理之概述
- 编译原理 - 概述
- 编译原理概述
- 编译原理概述
- 编译原理课堂笔记(1)编译概述
- 编译原理-0-编译过程概述
- 【学习笔记】编译原理:编译程序概述
- 《编译原理》笔记一之编译程序概述
- 【编译原理】概述总结(一)
- fping概述及源码包编译原理
- [编译原理]学习笔记(一)——编译概述
- (转)【学习笔记】编译原理:编译程序概述
- 自学编译原理(一)——概述
- 微机原理概述
- GPS定位原理概述
- 单片机原理概述
- 无法连接到 ADMINISTRATOR\SQLEXPRESS/连接数据库失败处理办法
- ehcache jgroups 集群配置
- PhoneGap Eclipse 分别在虚拟机和手机上进行调试
- 欢迎使用CSDN-markdown编辑器
- 牛腩新闻发布系统(2)——大战CSS
- 编译原理概述
- 如何停止一个正在运行的java线程?
- MSQL优化基础(SQL执行过程,链接方式案例)
- cif安装错误异常处理过程记录
- 蛮力法求解旅行商
- 150.按规定输出
- 2015.6.27_记录自己学到的和自己容易忘记的有关编写MapReduce程序的要点
- 2015062706 - EffactiveJava笔记 - 第39条 必要时进行保护性拷贝
- Spring过滤器filter拦截服务