编译原理:编译过程概述和编译程序的结构[1]
本文关键词:编译原理,由笔耕文化传播整理发布。
编译原理:编译过程概述和编译程序的结构[1]
作者:希赛教育 来源:希赛教育基础学院 2013年5月15日
1.2编译过程概述和编译程序的结构
编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。一般一个编译过程划分成词法分析、语法分析、语义分析、中间代码生成,代码优化和目标代码生成六个阶段,这是一种典型的划分方法。事实上,某些阶段可能组合在一起,这些阶段间的源程序的中间表示形式就没必要构造出来了。我们将分别介绍各阶段的任务。另外两个重要的工作:表格管理和出错处理与上述六个阶段都有联系。编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有表格管理的工作;如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,,这些工作称之为出错处理。图1.3表示了编译的各个阶段。
图1.3 编译的各个阶段
下面,我们从源程序在不同阶段所被转换成的表示形式来介绍各个阶段的任务。
词法分析
词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。这里所谓的单词是指逻辑上紧密相连的一组字符,这些字符具有集体含义。比如标识符用于表示变量名,是由字母字符开头,后跟字母、数字字符的字符序列组成的一种单词。保留字(关键字或基本字)是一种单词,此外还有算符,界符等等。例如某源程序片断如下:
begin var sum, first, count: real; sum∶=first+count*10 end.
词法分析阶段将构成这段程序的字符组成了如下19个单词序列:
1. 保留字begin
2. 保留字var
3. 标识符sum
4. 逗号,
5. 标识符first
6. 逗号,
7. 标识符count
8. 冒号:
9. 保留字real
10. 分号;
11. 标识符sum
12. 赋值号∶=
13. 标识符first
14. 加号+
15. 标识符count
16. 乘号*
17. 整数10
18. 保留字end
19. 界符·
可以看出,五个字符即b,e,g,i和n构成了一个称为保留字的单词begin,两个字符即∶和=构成了表示赋值运算的符号∶=。这些单词间的空格在词法分析阶段都被滤掉了。
我们知道, 标识符用于表示变量名,可以很方便的使用id1,id2和id3分别表示sum,first和count三个标识符的内部形式,那么经过词法分析后上述程序片断中的赋值语句
sum∶=first+count*10则表示为
id1∶=id2+id3*10
[1] [2] [3] [4] [5]
本文关键词:编译原理,由笔耕文化传播整理发布。
本文编号:303444
本文链接:https://www.wllwen.com/wenshubaike/mishujinen/303444.html