编译原理 —— 编译器各阶段工作

发布者:lqs1975最新更新时间:2013-11-06 来源: eefocus关键字:编译器  词法分析器  语法分析 手机看文章 扫描二维码
随时随地手机看文章

 1. 词法分析

词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。

2. 语法分析

语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。

3. 语义分析

语义分析器根据语义规则对语法树中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。

4. 中间代码生成

中间代码生成器根据语义分析器的输出生成中间代码。中间代码可以有若干种形式,它们的共同特征是与具体机器无关。最常用的一种中间代码是三地址码,它的一种实现方式是四元式。三地址码的优点是便于阅读、便于优化。

5. 中间代码优化

优化是编译器的一个重要组成部分,由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间上有很大浪费。当需要生成高效目标代码时,就必须进行优化。

6. 目标代码生成

目标代码生成是编译器的最后一个阶段。在生成目标代码时要考虑以下几个问题:计算机的系统结构、指令系统、寄存器的分配以及内存的组织等。编译器生成的目标程序代码可以有多种形式:汇编语言、可重定位二进制代码、内存形式。

7 符号表管理

符号表的作用是记录源程序中符号的必要信息,并加以合理组织,从而在编译器的各个阶段能对它们进行快速、准确的查找和操作。符号表中的某些内容甚至要保留到程序的运行阶段。

8 出错处理

用户编写的源程序中往往会有一些错误,可分为静态错误和动态错误两类。所谓动态错误,是指源程序中的逻辑错误,它们发生在程序运行的时候,也被称作动态语义错误,如变量取值为零时作为除数,数组元素引用时下标出界等。静态错误又可分为语法错误和静态语义错误。语法错误是指有关语言结构上的错误,如单词拼写错、表达式中缺少操作数、begin和end不匹配等。静态语义错误是指分析源程序时可以发现的语言意义上的错误,如加法的两个操作数中一个是整型变量名,而另一个是数组名等。

关键字:编译器  词法分析器  语法分析 引用地址:编译原理 —— 编译器各阶段工作

上一篇:基于TMS320LF2407A的模块化直流电源设计
下一篇:电子系统热管理方案

推荐阅读最新更新时间:2024-03-16 13:30

PGI编译器瞄准AMD的四核Opteron皓龙处理器
Portland Group优化的多核处理器开发工具使开发人员能够在AMD皓龙四核处理器平台上迁移、调整应用软件 中国,2007年8月7日 — 高性能计算机技术(HPC)编译器的主要供应商、意法半导体的全资子公司Portland Group今天发布了新的PGI编译器及开发工具,这套命名为“巴塞罗纳”的新产品是PGI专门为AMD的Opteron皓龙四核处理器定制的。针对那些有意向把应用程序迁移到AMD即将推出的四核处理器以及针对这个处理器平台准备调整现有应用程序的独立软件开发商和客户,PGI和AMD合作推出了这些编译器。 PGI公司是高性能并行C/C++编译器、Fortran编译器、应用调试工具和性能评估工具的开发商和销售商,
[新品]
C51编译器-语言扩展(2)-数据类型
Data Types数据类型 数据类型 位数 字节数 值域 bit 1 0-1 Signed char 8 1 -128-+127 Unsigned char 8 1 0-255 enum 8/16 1or 2 -128-+127 or -3
[单片机]
Portland Group发布新的PGI 编译器和开发工具
64位高性能并行Fortran、C和C++开发工具支持Mac OS X Leopard 中国,2007年10月29日 — 意法半导体(纽约证券交易所代码:STM)旗下全资子公司及世界领先的高性能计算(HPC)编译器供应商Portland Group今天宣布该公司为基于英特尔处理器的Mac操作平台开发的64位高性能并行编译器及开发工具 PGI Workstation套件全面上市,这套软件的运行环境为Mac OS X操作系统,包括新的完全64位的Mac OS X Leopard平台。 PGI公司开发并销售高性能C/C++编译器、Fortran编译器和开发工具,其产品深得高性能技术计算机工程师和科学家的青睐。技术计算涉及复杂过程的
[新品]
MicroChip C18编译器上手及环境设置
C18是MCHP老早针对PIC18高端片子自己出的编译器环境,可能是用户覆盖面的原因,个人感觉比PIC16上的Hi-tech PICC要难用很多。 针对不同的单片机要安装不同升级包,因为官方的头文件支持一直在更新;使用较新的单片机时,建议安装最新的C18 upgrade installation升级包。 下面说说不同之处和比较难配置的关键的几个点: ------------------------------------------------------------------------------------- #pragma指令: 这个C/C++语言常见的预处理指令,是用来定位代码区域的,定位到R
[单片机]
MicroChip C18<font color='red'>编译器</font>上手及环境设置
arm-linux-gcc 常用参数讲解 gcc编译器使用方法
我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。 在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为 今后的调试做好准备。和其它常用的编译器一样,GCC也提供了
[单片机]
Freestanding C与交叉编译器的生成原理分析
0 问题由来 以前也用过C51写过简单的裸机程序,但是并没有认真的考虑过其与Linux环境下一般C语言程序的不同,只是想当然地认为C是跨平台的语言,并没有考虑过C语言的标准问题。 今天在编译GCC交叉编译器时,遇到了种种问题,不得不重新考虑C语言的实现标准,否则很难清晰的了解交叉编译器的编译过程。 1 C编译器的两种实现要求 C语言标准的正式文档中明确提出了C编译器的两种实现标准: 1.1 conforming freestanding implementation 所谓的Freestanding,C编译器只需提供C语言语句的编译,外加 float.h limits.h stdarg.h stdint.h
[单片机]
华为方舟编译器只是工具,让安卓程序编译更快
华为方舟编译器,并不是一个系统,只是安卓上的工具,它可以让安卓程序编译的效率更高,安装程序的速度、运行的速度更快,让程序降低对用户设备的电量消耗,同时还可以在一定程度上减低程序对硬件的要求。 8月5日消息,对于即将开幕的开发者大会,华为已经表示,将在8月9日宣布一项重大计划,那就是方舟编译器开源,他们希望和广大合作伙伴、应用开发者一起加入“方舟朋友圈”,一起打造终端生态的方舟,共建公平、公开、健康、共赢的全球生态。 其实今年6月份的时候,华为战略与产业发展副总裁肖然在中国开源峰会2019上就提前预告了,方舟编译器将于今年8月正式开源,而从官方公布的开发者大会议程看,8月9日开幕式上,余承东将正式宣布这个消息。 “方舟”
[嵌入式]
华为方舟<font color='red'>编译器</font>只是工具,让安卓程序编译更快
禁止C51编译器编译出上电清零代码
单片机看门狗复位或低电压复位(也称掉电复位)时,RAM数据保持不变。只有在上电复位时才会改变。如果在电路中加入一大容量电容,可使单片机既复位,又不会改变RAM数据,利用这一特性,可以使通断电成为一种输入方式。但是C51编译器编译时往往会在程序中加入一段上电清零代码。如何禁止C51编译器编译出上电清零代码呢?网上很多介绍修改STARTUP.A51文件中IDATALEN值的修改方法。但是我百试不行。为什么呢?最后在书本上看到,要将STARTUP.A51调入到C51工程中修改后才生效。真郁闷啊。为什么所有人都不掉要将文件调入C51工程中的呢?我还以为是直接修改就行了。 在这里要向单片机爱好者推荐一本书《Keil Cx51 V7.0单
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved