当前位置:文档之家› 常用单片机编译环境及下载工具的使用

常用单片机编译环境及下载工具的使用

常用单片机编译环境及下载工具的使用
常用单片机编译环境及下载工具的使用

常用单片机编译环境及下载工具的使用

二、环境使用简介说明

1.AVR Studio 4

打开软件,进入欢迎界面。显示出最近打开过的工程文件,选择一个,按“Open”

或双击可直接进入工程。

如果想新建一个工程,选择“New Project”。

在“Location”处,按右侧的按钮可选择工程存放的路径。在“Project name”

处可输入工程名,“Initial file”默认和工程名称相同。

按“Next”

在此处选择器件,“Debug platform”选择“AVR Simulator”,“Device”选择“ATmega8”或“ATmega128”。此时不选择,也可以在进入工程后,选择“Debug”菜单下的“Select Platform and Device”更改。

选择好后,按“Finish”完成。进入工程,编辑“avrsudio.asm”工程文件,按“Build”进行编译。

还有编译出来的程序,占用的空间大小。

如果编译出错,会显示红灯,在此显示出错信息,双击显示红灯的行,可直接定位出错的位置,黄灯提示是无错误,只有告警。

常见错误:

改过程序后,要保存后再编译,否则编译出的程序为上次保存的代码。

2. ICC AVR

打开软件后,一般都会打开上次退出时打开的工程,如果是第一次打开,可以选择“Project”下的“New”来新建一个工程

在此处选择路径和工程名称,点“保存”。

点击第一个工具图标,新建一个文件,鼠标放在上面会出现,“New File”的提示。现在可以写程序了,保存为.c的文件。

在右侧“file”处,单击鼠标右键,选择“Add File(s)”,把刚才的文件加入工程里。选择“Options”或工具图标的“Project Options”,“STOP”图标后面的一个。

在“Device Configuraion”里选择使用的器件。点“OK”确定。点击红色的工具图标,“STOP”图标前面的一个,进行编译。

编译通过会显示“Device X% full. Done.”

X表示编译后,程序空间占用整个芯片的百分比。

编译出错后左侧会有红灯提示,点击红灯所在行,会以、直接定位错误的位置。

常见问题:

如果从另一台电脑上拷过来的一个工程,打开后不能正常编译,需要在“Options”里

点“Path”选项卡。

确认你安装ICC的盘符,如果你的软件安在D盘,把“Include Path”和“Library Path”中的C改为D,把你拷过来的文件所在的路径加入第一项。

3.PonyProg2000

PonyProg2000用来下载AVR系列ATmega8和ATmega128的程序,硬件需要用25针AVR下载头。

打开软件,点击“确定”

第一次使用点击“设置”中的“接口设置”

选择“并行”,“Avr ISP I/O”“LPT1”,点“确认”。

右侧选择器件,“AVR micro”“ATmega8”或“ATmega128”

将鼠标放在工具图标上有该图标的功能提示。

第一排第二个工具图标可以打开文件。

第二排第一个工具图标为读器件内容,第二个为读FLASH,第三个为读EEPROM。

第四个工具图标为写器件内容,第五个为写FLASH,第六个为写EEPROM。

第七个可以擦除器件上的内容。

第八个可以读出和设置器件的熔丝位。

烧写完成后会有相应的成功或失败的提示。

常见问题:

如果烧错熔丝位后,可能会有芯片无法启动的情况,是因为烧的熔丝位设置为外部时钟,即使外部接了晶振,也不能进行读写熔丝位,烧写文件操作。这时要找一块有晶振的板子,将晶振的输出接这个芯片晶振的输入脚,即可读写熔丝位,将其改为正确的即可。

4. Keil C51

打开Keil软件,单击“Project”,在下拉菜单下部有最近打开的工程文件,选择即可打开,如果想新建一个,选择“NEW Project”,选择好路径和工程名称,“保存”。

接下来选择器件

选择好后,单击“确定”。出现如下提示:

选择“是”“否”均可。

第一排工具图标,第一个为新建文件,第二个为打开文件,第三个为保存文件,第四个为保存所有文件。

第二排工具图标,第一个为编译当前文件,第二个为编译目标文件,第三个为编译所有目标文件。

编译完成后,下部的窗口会有提示信息。

提示出编译产生的错误及告警信息。

出错后,提示错误所在的行号,单击错误行可直接定位。

5. GF2100(USB) GF1500(USB)

连接好下载器后,打开电源,再打开软件,否则会有错误提示。

正常打开后如下图。

点打开选择器件窗口

软件下部有器件信息。

单击“文件”下的“读入文件”下的“Intel Hex格式”。

按“确定”继续。将要烧写的HEX文件打开。

工具图标上有提示,可对芯片进行擦写编程。可选择自动选项,自动进行擦写编程校验。

6. SUPERPRO—LX

用25针并口延长线将SUPERPRO—LX编程器接到PC机上,打开电源。

单击第四个工具图标“器件”,选择要烧写的芯片型号。

如果要烧写PIC遥控器芯片LY002B的程序,选择“SST39VF512@PLCC32”要烧写AT89S52或是AT89C52,选择对应的芯片。

将芯片正确放入编程器。

单击第一个工具图标,找开要烧写的文件。

根据图标提示,进行擦除,编程操作。

点击“运行”图标。

可选择“Auto”自动进行设定的操作。也可选择其中某一项进行操作。

要编辑自动操作所进行的步骤,选择“器件”菜单里的“编辑自动操作”选项。

烧写成功或失败后,都有提示。

7. PM plus

PM plus是NEC芯片的编译环境,公司主要用uPD78F9222芯片做学习型遥控器。

单击“File”菜单,可选择最近打开的工作空间“Workspace”,也可选择“Open Workspace”。

选择路径和名称,打开工作空间。

可能出现如图错误提示,不用管它,点“确定”即可。

如果新建一个工作空间,把文件再加入工程中,就可去除这类错误。

单击“File”菜单,选择“New Workspace”,新建一个工作空间。

“Workspace File Name”工作空间的名称。

“Folder”工作空间所在的文件夹,点右面的“Browse”可进行定位,不能定义到中文路径下。

“Project Group Name”工程文件的名称。

“Series Name”NEC器件的系列。选择“78K/OS Series”

“Device Name”器件名称,选择“uPD78F9222”

选择好后,点击“下一步”

单击“Add”将文件加入工程。

点击“下一步”

点击“下一步”

点击“完成”。

要删除其中一个文件,鼠标右键单击,选择“Delet Source File”。

单击进行编译。成功后出现如下提示:

在工程文件夹下会出现和一个和主文件同名的一个后缀为hex的文件。

如果编译出错,会出现如下提示。

“OutPut”窗口会有错误的详细信息:key.asm 的156行,F201 Syntax error 单击可直接定位到出错的位置。

8.minicube2

NEC下载器,有仿真的功能。

接好minicube2硬件。

MINICUBE2引脚1.GND 2. RESET 3.DA TA 4.VCC 5.CLK

CLK接遥控器上的78F9222的2脚,DATA接3脚,RESET接6脚。

打开软件QBP V2.22 QB-Programmer。

编译原理作业参考答案

第1章引言 1、解释下列各词 源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。 源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。 目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。目标程序 (结果程序)一般可由计算机直接执行。 低级语言:机器语言和汇编语言。 高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。 翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。 编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言), 然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。 解释程序: 以该语言写的源程序作为输入,但不产生目标程序。按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。 2、什么叫“遍”? 指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。 3、简述编译程序的基本过程的任务。 编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。 词法分析:输入源程序,进行词法分析,输出单词符号。 语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。 中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。 优化:对中间代码进行优化处理。 目标代码生成:把中间代码翻译成目标语言程序。 4、编译程序与解释程序的区别? 编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。 5、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗? 编译程序的5个阶段中,词法分析,语法分析,语义分析和代码生成生成是必须完成的。而中间代码生成和代码优化并不是必不可少的。优化的目的是为了提高目标程序的质量,没有这一部分工作,仍然能够得到目标代码。 6、编译程序的分类 目前基本分为:诊断编译程序,优化编译程序,交叉编译程序,可变目标编译程序。

编译程序和解释程序

编译程序和解释程序 程序设计语言处理系统是系统软件中的一大类,它随被处理的语言及其处理方法和处理过程的不同而不同。任何一个语言处理系统通常都包括一个编译程序,它把一种语言的程序翻译成等价的另一种语言的程序。被翻译的语言和程序分别称为源语言和源程序,而翻译生成的语言和程序分别称为目标语言和目标程序,按照不同的翻译处理方法,翻译程序可分为以下三类: ⑴从汇编语言到及其语言的翻译程序,称为汇编程序。 ⑵按源程序中语句的执行顺序,逐条翻译并立即执行相关功能的处理程序、称为解释程序。 ⑶从高级语言到汇编语言(或机器语言)的翻译程序,称为编译语言。 除了翻译程序外,语言处理系统通常还包括连接程序(将多个分别编译或汇编过的目标程序和库文件进行组合)和装入程序(将目标程序装入内存并启动执行)等。 由于汇编语言的指令与机器语言指令大体上保持一一对应关系,因而汇编程序较为简单,一下只对解释程序和编译程序做简单说明。 1、解释程序 解释程序对源程序进行翻译的方法相当于两种自然语言间的口译。解释程序对源程序的语句从头到尾逐句扫描、逐句翻译、并且翻译一句执行一句,因而这种翻译方式并不形成机器语言形式的目标程序。 解释程序的优点是实现算法简单,且易于在解释过程中灵活方便地插入所需要的修改和测试措施;其缺点是运行效率低。例如,对于源程序中需要多次重复执行的语句,解释程序将要反复的取出、翻译和执行它们。根据这些特点,解释程序通常适合于以交互方式工作的、或在测试状态下运行的、或运行时间与解释时间差不多的程序。 2、编译程序 编译程序对源程序进行解释的方法相当于笔译。在编译程序的执行过程中,要对源程序扫描一遍或几遍,最终形成一个可在具体计算机上执行的目标程序。编译程序的实现算法较为复杂,但通过编译程序的处理可以产生高效运行的目标程序,并把它保存在磁盘上,以备多次执行。因此,编译程序更适合于翻译那些规模大、结构复杂、运行时间长的大的应用程序。

编译原理第1章

第一章编译概述 2.典型的编译程序可划分为几部分?各部分的主要功能是什么?每部分都是必不可少的吗? 答:编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。 各部分的主要功能如下: 词法分析程序又称扫描器。进行词法分析时,依次读入源程序中的每个字符,依据语言的构词规则,识别出一个个具有独立意义的最小语法单元,即“单词”,并用某个单词符号来表示每个单词的词性是标识符、分界符还是数; 语法分析程序的功能是:对词法分析的结果,根据语言规则,将一个个单词符号组成语言的各种语法类; 语义分析的功能是确定源程序的语义是否正确; 中间代码生成程序的功能是将源程序生成一种更易于产生、易于翻译成目标程序的中间代码; 代码优化程序的功能是将中间代码中重复和冗余部分进行优化,提高目标程序的执行效率; 目标代码生成程序的功能是将中间代码生成特定机器上的机器语言代码; 符号表管理程序的功能是记录源程序中出现的标识符,并收集每个标识符的各种属性信息; 错误处理程序的功能是应对在编译各个阶段中出现的错误做适当的处理,从而使编译能够继续进行。 编译程序的每部分都是必不可少的。 3.解释方式和编译方式的区别是什么? 答:解释方式最终并不生成目标程序,这是编译方式与解释方式的根本区别。解释方式很适合于程序调试,易于查错,在程序执行中可以修改程序,但与编译方式相比,执行效率太低。 4.论述多遍扫描编译程序的优缺点? 答:优点:(1)可以减少内存容量的需求,分遍后,以遍为单位分别调用编译的各个子程序,各遍程序可以相互覆盖;(2)可使各遍的编译程序相互独立,结构清晰;(3)能够进行充分的优化,产生高质量的目标程序;(4)可将编译程序分为“前端”和“后端”,有利于编译程序的移植。 缺点是每遍都要读符号、送符号,增加了许多重复性工作,降低了编译效率。

编译和解释的区别

编译和解释的区别 编译和解释的区别在哪?编译器是把源程序的每一条语句都编译成机器语言,并保存成 二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运 行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的 形式) 一、低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需 翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇 编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。 高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过 编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。 二、编译与解释 编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时 的控制权在用户程序。 解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、 对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时 计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运 行速度是不如编译后的程序运行的快的.

(完整版)高级语言与编译程序概述自测题

第一章高级语言与编译程序概述 一、单项选择题 1.将编译程序分成若干个“遍”是为了____。 A. 提高程序的执行效率 B. 使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D. 利用有限的机器内存但降低了机器的执行效率 2.构造编译程序应掌握____。 A. 源程序 B. 目标语言 C. 编译方法 D. 以上三项都是 3.编译程序绝大多数时间花在____上。 A. 出错处理 B. 词法分析 C. 目标代码生成 D. 管理表格 4. ____不可能是目标代码。 A. 汇编指令代码 B. 可重定位指令代码 C. 绝对指令代码 D. 中间代码 5.使用____可以定义一个程序的意义。 A. 语义规则 B. 词法规则 C. 产生规则 D. 左结合规则 6.词法分析器的输入是____。 A. 单词符号 B. 源程序 C. 语法单位 D. 目标程序 7.中间代码生成时所遵循的是____。 A. 语法规则 B. 词法规则 C. 语义规则 D. 等价变换规则 8.编译程序是对____。 A. 汇编程序的翻译 B. 高级语言程序的解释执行 C. 机器语言的执行 D. 高级语言的翻译 9.词法分析应遵循____。 A. 语义规则 B. 语法规则 C. 构词规则 D. 等价变换规则 10.若源程序是高级语言编写的程序,目标程序是____,则称它为编译程序。 A. 汇编语言程序或高级语言程序 B. 高级语言程序或机器语言程序 C. 汇编语言程序或机器语言程序 D. 连接程序或运行程序 11.编译过程中,词法分析阶段的任务是____。 A.识别表达式 B. 识别语言单词 C. 识别语句 D. 识别程序 二、多项选择题: 1.编译程序各阶段的工作都涉及到____。 A. 语法分析 B. 表格管理 C. 出错处理 D. 语义分析 E. 词法分析 2.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:____和____。 A. 编译阶段 B. 汇编阶段 C. 运行阶段 D. 置初值阶段 3.编译程序工作时, 通常有____阶段。 A.词法分析 B. 语法分析 C. 中间代码生成 D. 语义检查 E. 目标代码生成 F.出错处理 G.表格管理 4.编译过程中所遵循的规则有____。 A.等价变换规则 B. 短语规则 C. 构词规则 D. 语义规则 E. 语法规则 三、填空题: 1.解释程序和编译程序的区别在于________。 2.编译过程通常可分为5 个阶段,分别是____、语法分析、____、代码优化和目标代码生成。

编译原理第二版课后习答案

《编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2)源程序:源语言编写的程序称为源程序。 (3)目标程序:目标语言书写的程序称为目标程序。 (4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第 2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程 序的总体结构图。 答案: 一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式 的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。 目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的 各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源

编译原理练习题参考答案

一、填空题: 1-01.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理 . 1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序. 1-03.编译方式与解释方式的根本区别在于是否生成目标代码 . 1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程 序 . 1-05.对编译程序而言,输入数据是源程序 ,输出结果是目标程序 . 1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段和运行阶段 .如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段 , 汇编阶段和运行阶段 . 1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。 1-08.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别单词。 1-09.编译方式与解释方式的根本区别为是否生成目标代码。 2-01.所谓最右推导是指:任何一步α β都是对α中最右非终结符进行替换的。 2-02.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。 2-03.产生式是用于定义语法成分的一种书写规则。 2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈V T*} 。 2-05.设G是一个给定的文法,S是文法的开始符号,如果S x (其中x∈V*),则称x是文法的一个句型。 2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V T*),则称x是文法的一个句子。 3-01.扫描器的任务是从源程序中识别出一个个单词符号。 4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。 4-02.语法分析的任务是识别给定的终极符串是否为给定文法的句子。 4-03.递归下降法不允许任一非终极符是直接左递归的。 4-04.自顶向下的语法分析方法的关键是如何选择候选式的问题。 4-05.递归下降分析法是自顶向上分析方法。 4-06.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。 5-01.自底向上的语法分析方法的基本思想是:从给定的终极符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。 5-02.自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行直接归约,力求归约到文法的开始符号。

编译与解释的区别

计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。如PASCAL、FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。 编译程序、解释程序、汇编程序是3种语言处理程序。其区别主要为:汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。解释程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。用COBOL、FORTRAN等语言编写的程序考虑到执行速度一般都是编译执行。 解释:程序运行时,取一条指令,将其换化为机器指令,再执行这条机器指令。编译:程序运行时之前,将程序的把有代码编译为机器代码,再运行这个程序。计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。 编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。 解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。如PASCAL、FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C 语言是能书写编译程序的高级程序设计语言。 简单的说,编译就是全文翻译,全部翻译完才执行。解释就相当于同声翻译,边翻译边执行。

第一章概述作业习题与答案

第一章作业 一·选择题(50题) 1.设计实时操作系统必须首先考虑系统是__ C ____ A.效率 B.可移植性 C.可靠性D.使用的方便性 2. 一个作业第一次执行使用了5min,而第二次执行使用了6min,这说明了操作系统的__D__特点。 A.并发性 B.共享性 C.虚拟性 D.不确定性 3.下述操作系统类型中,___ D ___操作系统一定是由多台计算机组成的系统。 A.实时 B.批处理 C.分时 D.分布式 4. 按照所起的作用和需要的运行环境,操作系统属于___ D ___ A.支撑软件 B.用户软件 C.应用软件 D.系统软件 5. 操作系统的主要功能是存储器管理、设备管理、文件管理、用户接口和__A___。 A.进程管理 B.用户管理 C.信息管理 D.操作系统管理 6. 操作系统的最基本的两个特征是资源共享和__ B ___。 A.多道程序设计 B.程序的并发执行 C. 中断 D.程序顺序执行。 7.采用多道程序设计技术可以提高CPU和外部设备的__ C ____。 A 稳定性B可靠性C利用性D兼容性 8.在计算机系统中,操作系统时__ A____。 A.处于裸机之上的第一层软件 B.处于硬件之下的底层软件 C.处于应用之上的系统软件 D.处于系统软件之上的用户软件 9.操作系统是对__ C___进行管理的软件。 A.软件 B.硬件 C.计算机资源 D.程序 10.从用户的观点,操作系统是___ A___。 A.用户与计算机之间的接口 B.控制和管理计算机资源的软件 C.合理的组织计算机工作流程的软件 D.是扩充裸机功能的软件是比裸机功能更强,使用方便的虚拟机 11.操作系统的基本类型是__ B ___。 A.批处理系统分时系统和多任务系统 B.实时系统分时系统和批处理系统 C.单用户系统多用户系统和批处理系统 D.实时系统,分时系统和多用户系统 12.为了使系统中的所有用户都能得到及时的响应,操作系统应该是__A__。 A.实时系统 B.批处理系统 C.分时系统 D.网络系统 13.若果分时系统的时间片一定,那么__B___会使响应时间越长。 A.用户数越少 B.用户数越多 C.内存越少 D.内存越多 14. __C__类型的操作系统允许在一台主机上同时连接多台终端,多个用户可以通过多台终端同时交互地使用计算机。 A.实时系统 B. 批处理系统 C. 分时系统 D. 网络系统 15. __ B ___类型的操作系统允许用户把多个作业同时提交给计算机。 A.实时系统 B.批处理系统 C.分时系统 D.网络系统 16.根据国际规定,每个汉字在计算机内占用__ B ___存储。 A.1字节 B.2字节 C.3字节 D.4字节

解释程序和编译程序

A、解释程序 所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。 B、编译程序 这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。 编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。 值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。 在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时

编译程序和解释程序

流行https://www.doczj.com/doc/0e6260552.html, 编译程序和解释程序 如果一个程序能够把某一种语言程序(称为源语言程序)改造成为另一种语言程序(称为目标语言程序),则这亲戚的程序称为“翻译程序”。如果源语言是“高级语言”(诸如FORTRAN、PASCAL等等),而目标语言是“低级语言”(如汇编语言或机器语言),则这样的翻译程序称为“编译程序”。 现在的计算机尚不能直接执行高级语言程序。执行一个高级语言程序大体上要分两步:第一步,把高级语言的源程序编译成低级语言的目标程序;第二步,运行这个目标程序。编译程序的典型工作过程是:输入源程序,对它进行加工处理,输出目标程序。加工处理是非常复杂的过程,它又可划分成以下几个阶段:源程序→词法分析→语法分析→产生中间代码→优化→目标代码生成→目标程序。 第一阶段是词法分析。承担词法分析任务的程序称为“扫描器”。词法分析的任务是:对构成源程序的字符串进行扫描和分解。第二阶段是语法分析。承担语法分析任务的程序称为“分析器”。语法分析的任务是:根据语法规则,把描扫器所提供的结果分析成各类语法范畴。第三阶段是产生中间代码。承担产生中间代码任务的程序称为“中间代码产生器”。其任务是:按照语法分析器所识别出的语法范畴,产生相应的中间指令。第四阶段是优化,即代码优化。优化的任务是对前阶段产生的中间代码进行加工变换,以便使生成的目标程序,能运行得更快更省(省内存)。第五阶段是目标代码生成。这一阶段的任务是:按照优化后的中间代码和其它有关信息生成目标程序。这种目标程序可以在计算机上直接执行。执行这个目标程序,就可得到一个高级语言程序的结果。我们知道,所谓翻译程序是这样一种程序,它能够把用甲语言写的程序翻译成与之等价的用乙语言写的程序。这里的甲语言是该翻译程序的源语言,而乙语言则为该翻译程序的目标语言。对于编译程序而言,源程序是被加工的对象,而目标程序是加工后的结果。 在计算机上执行用某种高级语言写的源程序,通常有两种方式:一是编译执行方式,二是解释执行方式。 采用编译执行方式执行源程序时要分两大步:编译和运行。编译中的加工处理过程又可分为五个阶段。 解释执行方式与编译执行方式是不同的,其根本区别在于:编译方式把源程序的执行过程严格地分成两大步:编译和运行。即先把源程序全部翻译成目标代码,然后再运行此目标代码,获执行结果。解释方式则不然。它是按照源程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行。所以,解释程序是这样一种程序,它能够按照源程序中语句的动态顺序,逐句地分析解释并执行,直至源程序结束。 与编译程序一样,解释程序也与源语言及计算机有关。同一台计算机上不同语言的解释程序是不同的;同一种语言在不同的计算机上的解释程序也可能不同。同一种高级语言的源程序,它可以采用解释执行方式,也可以采用编译执行方式。例如,BASIC语言有解释BASIC和编译BASIC之分。前者执行速度慢;后者执行速度快。编译程序和解释程序都属于系统程序。

编译原理作业集第一章修订版

第一章引论 本章要点: 1. 正确理解什么是编译程序; 2. 了解编译程序工作的基本过程及各阶段的基本任务; 3. 熟悉编译程序的总体结构框图; 4. 了解编译程序的构造过程和构造工具。 本章目标: 1. 掌握本章的“编译程序”、“交叉编译程序”、“编译前端与编译后端”等基本概念,并能在以后的学习熟练运用; 2. 掌握T形图表示。 本章重点: 1. 概念比较: ①编译程序、解释程序; ②诊断编译程序、优化编译程序; ③交叉编译程序、可变目标编译程序; ④编译前端与编译后端; 2. 编译工作过程的五个阶段; 3. 编译程序总框; 4. 编译程序“移植”。 本章难点 1. 编译程序“移植”; 作业题及参考答案 一、单项选择题:

(按照组卷方案,至少8道小题) 1. 如果一个编译程序能产生不同于其宿主机的机器代码,则称它为:。 a. 诊断编译程序 b. 优化编译程序 c. 交叉编译程序 d. 可变目标编译程序 2. 编译程序将高级语言程序翻译成。 a. 机器语言程序或高级语言程序 b. 汇编语言或机器语言程序 c. 汇编语言程序或高级语言程序 d. 中间语言程序或高级语言程序 3. 下面的四个选项中,__________不是编译程序的组成部分。 a. 词法分析程序 b. 代码生成程序 c. 设备管理程序 d. 语法分析程序 4. 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。 a. 重定位程序; b. 解释程序; c. 连接装配程序; d. 诊断程序; 5. 从编译程序的角度说,源程序中的错误通常分为两大类。 a. 词法错误和语法错误; b. 语法错误和语义错误; c. 编辑错误和诊断错误; d. 词法错误和语义错误; 6. 下面对编译原理的有关概念正确描述的是:。 a. 目标语言只能是机器语言 b. 编译程序处理的对象是源语言。 c. Lex是语法分析自动生成器 d. 解释程序属于编译程序 7. 目标代码生成阶段所生成的目标代码的形式不可能是。 a. 绝对指令代码 b. 可充定位的指令代码。 c. 汇编指令代码 d. 三地址代码 8. 语义错误是指源程序中不符合语义规则的错误,不包括: a. 非法字符错误 b. 类型不一致错误。 c. 作用域错误 d. 说明错误 一.答案:1. c; 2. b;3. c; 4. c;5. b;6. d;7. d;8.a; 二、填空题: (按照组卷方案,至少8道小题) 1.我们有时把编译程序划分为编译前端和编译后端。前端主要由与有关但与

编译程序和解释程序的区别.doc

编译程序和解释程序的区别 编译和解释的区别是什么? 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式) 一、低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指

令的方法,那就是交叉汇编技术。 高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。 二、编译与解释 编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执

第一章C语言概述习题附答案

第一章C语言概述 一、单选题 1. C语言程序的执行,总是起始于()。C A.程序中的第一条可执行语句 B.程序中的第一个函数 C.main函数 D.包含文件中的第一个函数 分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。本题正确答案为C。 2、C语言程序的基本单位是()。C A)程序行B)语句C)函数D)字符 3、C语言中规定:在一个源程序中main函数的位置()。C A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 4、以下述叙正确的是()。C A.在C程序中,main函数可有可无 B. C程序的每行中只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 5、能将高级语言编写的源程序转换为目标程序的是()。C A.链接程序 B.网络程序 C.编译程序 D.WORD字处理程序 6、下列说法中正确的是()。C A)C程序书写时,不区分大小写字母 B)C程序书写时,一行只能写一个语句 C)C程序书写时,一个语句可分成几行书写 D)C程序书写时每行必须有行号 分析:C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。本题正确答案为C。 7、下面对C语言特点,不正确描述的是()。C A)C语言兼有高级语言和低级语言的双重特点,执行效率高 B)C语言既可以用来编写应用程序,又可以用来编写系统软件 C)C语言的可移植性较差 D)C语言是一种结构式模块化程序设计语言 分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。本题正确答案为C。 8、C语言源程序的最小单位是()。D A)程序行B)语句C)函数D)字符 分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。本题正确答案为D。 9.计算机内部运算使用的数是()。C A)十进制数B)十六进制数C)二进制数D)八进制数

第一章 会计电算化概述(会计电算化)

第一章会计电算化概述 一、单项选择题 ?1. 下列有关会计电算化狭义概念的说法正确的是()。 A.以会计理论为主体的电子信息技术在会计工作中的应用 B.与实现电算化有关的所有工作 C.以电子计算机为主体的电子信息技术在会计工作中的应用 D.与实现电算化有关的主要工作 o正确答案:C o知识点:会计电算化的相关概念 ?2. 下列各项中,能从根本上实现数据的集成与最大化利用,会计信息“数出一门、资料共享” 将成为现实的是()。 A.会计信息系统 B.会计软件 C.ERP系统 D.XBRL o正确答案:D o知识点:会计电算化的相关概念 ?3. 下列各项中,关于我国XBRL的发展历程表述不正确的是()。 A.2009年4月,XBRL中国地区组织成立,标志着中国会计信息化迈上一个新台阶 B.2005年1月,深圳证劵交易所颁布了1.0版本的XBRL报送系统 C.2006年3月,深圳证劵交易所加入XBRL国际组织 D.我国的XBRL发展始于证券领域 o知识点:会计电算化的相关概念 o试题解析: 选项A,2008年11月,XBRL中国地区组织成立,标志着中国会计信息化迈上一个新台阶。 ?4. ERP是()的简称。 A.会计信息系统 B.管理信息系统 C.可扩展商业报告语言 D.企业资源计划 o正确答案:D o知识点:会计电算化的特征 ?5. 会计软件按照通用范围可划分为()。 A.单用户会计软件和多用户会计软件 B.系统软件和应用软件

C.独立型软件和非独立型软件 D.专用会计软件和通用会计软件 o正确答案:D o知识点:会计电算化的特征 ?6. 下列不属于购买通用会计软件的优点是()。 A.投入少,见效快 B.性能稳定,质量可靠,运行效率高 C.安全保密性强 D.有利于日后进行系统维护和升级 o正确答案:D o知识点:会计电算化的特征 o试题解析: 选项D属于企业与外部单位联合开发会计软件的优点。 ?7. 目前使用最普遍的会计软件的配备方式是()。 A.购买通用会计软件 B.自行开发会计软件 C.委托外单位开发会计软件 D.企业与外部单位联合开发会计软件 o正确答案:A o知识点:会计软件的配备方式 ?8. 下列各项中,属于会计核算软件的核心模块是()。 A.账务处理模块 B.固定资产管理模块 C.工资管理模块 D.存货核算模块 o正确答案:A o知识点:会计软件的功能模块 ?9. 成本管理模块的成本核算完成后,要将结转制造费用、结转辅助生产成本、结转盘点损失和结转工序产品耗用等的记账凭证传递到()。 A.存货核算模块 B.账务处理模块 C.预算管理模块 D.项目管理模块 o正确答案:B o知识点:会计软件的功能模块 ?10.

高级语言与编译程序概述自测题doc资料

高级语言与编译程序概述自测题

第一章高级语言与编译程序概述 一、单项选择题 1.将编译程序分成若干个“遍”是为了____。 A. 提高程序的执行效率 B. 使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D. 利用有限的机器内存但降低了机器的执行效率 2.构造编译程序应掌握____。 A. 源程序 B. 目标语言 C. 编译方法 D. 以上三项都是 3.编译程序绝大多数时间花在____上。 A. 出错处理 B. 词法分析 C. 目标代码生成 D. 管理表格 4. ____不可能是目标代码。 A. 汇编指令代码 B. 可重定位指令代码 C. 绝对指令代码 D. 中间代码 5.使用____可以定义一个程序的意义。 A. 语义规则 B. 词法规则 C. 产生规则 D. 左结合规则 6.词法分析器的输入是____。 A. 单词符号 B. 源程序 C. 语法单位 D. 目标程序 7.中间代码生成时所遵循的是____。 A. 语法规则 B. 词法规则 C. 语义规则 D. 等价变换规则 8.编译程序是对____。

A. 汇编程序的翻译 B. 高级语言程序的解释执行 C. 机器语言的执行 D. 高级语言的翻译 9.词法分析应遵循____。 A. 语义规则 B. 语法规则 C. 构词规则 D. 等价变换规则 10.若源程序是高级语言编写的程序,目标程序是____,则称它为编译程序。 A. 汇编语言程序或高级语言程序 B. 高级语言程序或机器语言程序 C. 汇编语言程序或机器语言程序 D. 连接程序或运行程序 11.编译过程中,词法分析阶段的任务是____。 A.识别表达式 B. 识别语言单词 C. 识别语句 D. 识别程序 二、多项选择题: 1.编译程序各阶段的工作都涉及到____。 A. 语法分析 B. 表格管理 C. 出错处理 D. 语义分析 E. 词法分析 2.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:____和____。 A. 编译阶段 B. 汇编阶段 C. 运行阶段 D. 置初值阶段 3.编译程序工作时 , 通常有____阶段。 A.词法分析 B. 语法分析 C. 中间代码生成 D. 语义检查 E. 目标代码生成 F.出错处理 G.表格管理 4.编译过程中所遵循的规则有____。

编译原理文档第一章

编译原理 第一章编译程序概论 使用过计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算的。在计算机上执行高级语言程序一般分为两步:第一步,用一个编译程序把高级语言翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果。计算机语言由单一的机器语言发展到现今内容迥异的数千种高级语言,就是因为有了编译技术。因此,对于计算机专业的学生来说,理解编译程序的工作原理显得尤其重要。 本章重点:编译程序概念、编译过程概述、编译程序的结构。 第一节什么是编译程序 通常所说的翻译程序是指这样的一个程序,它能够把某一种语言(称为源语言)改造为另一种语言(称为目标语言),而后者与前者在逻辑上是等价的。如果源语言是诸如FORTRAN、PASCAL、ALGOL或COBOL这样的“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序就称为编译程序。

第二节编译过程概述 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来说,一 个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种 表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的,图1-2-1给出了一个编译过程的各个 阶段,这是一种典型的划分方法。事实上,某些阶段可能组合在一起,这些阶段间的源程序的中间 表示形式就没必要构造出来了。图1-2-1中将编译过程划分成了词法分析、语法分析、中间代码生成, 代码优化和目标代码生成六个阶段,我们将分别介绍各阶段的任务。另外两个重要的工作:表格管 理和出错处理与上述六个阶段都有联系。编译过程中源程序的各种信息被保留在种种不同的表格里, 编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有表格管理的工作。如果编译 过程中发现源程序有错误,编译程Array序应报告错误的性质和错误发生的 地点,并且将错误所造成的影响限 制在尽可有小的范围内,使得源程 序的其余部分能继续被编译下去, 有些编译程序还能自动校正错误, 这些工作称之为出错处理。 我们从源程序在不同阶段所被 转换成的表示形式的不同来介绍各 个阶段的任务。 词法分析阶段:是编译过程 的第一个阶段。这个阶段的任务是 从左到右一个字符一个字符地读入 源程序,对构成源程序的字符流进 行扫描和分解,从而识别出一个个 单词(也称单词符号或符号)。这里 所谓的单词是指逻辑上紧密相连的 一组字符,这些字符具有具体含义。 比如标识符是由字母字符开头,后 跟字母、数字字符的字符序列组成 的一种单词。保留字(关键字或基本字)是一种单词,此外还有算符,界符等等。例如某源程序片 断如下: begin var sum, first, count: real; sum :=first + count * 10 end. 词法分析阶段将构成这段程序的字符组成了如下单词序列: 1. 保留字begin 2. 保留字var 19. 界符· 3. 标识符sum 4. 逗号, 5. 标识符first 6. 逗号, 7. 标识符count 8. 冒号: 9. 保留字real 10. 分号; 11. 标识符sum 12. 赋值号:= 13. 标识符first 14. 加号+ 15. 标识符fount 16. 乘号* 17. 整数10 18. 保留字end

相关主题
文本预览
相关文档 最新文档