[系列][编译原理]写在前面

作为一名软件工程师,我们每天都要接触编写代码和生 成工件,以及这两者之间的若干步骤。前人在执行这若干个步骤中,总结了大量的算法、经验与结论,这些理论就构成了编译原理的中心思想。在此,作为编译原理的学习笔记,我将撰写一个系列文章,来描述和总结编译相关的部分理论。

 

一个良好工作的编译器内部包括了许多阶段,大致可以被划分为以下几个部分:

  1. 扫描程序

  2. 语法分析程序

  3. 语义分析程序

  4. 源代码优化程序

  5. 代码生成器

  6. 目标代码优化程序

 

一般来说,这些部分还可以被归纳到两部分里。一是只依赖源语言的操作,比如上文中的1,2,3步;二是只依赖于目标语言的操作,比如上文的4,5,6步。这两部分之间常常还会设计到一门中间语言,比如.NET的MSIL,JAVA的bytecode。分离的前后端会带来更好的移植性。

 

而在编译的过程中也会产生一些主要的数据结构,比如:

  1. 记号

  2. 语法树

  3. 符号表

  4. 常数表

  5. 中间代码

  6. 临时文件

 

这些概念会在之后的文章中逐步被整理描述出来,这个系列的下一篇文章,将会涉及到词法分析相关的理论。

posted @ 2010-01-27 23:00  nothing123  阅读(302)  评论(0编辑  收藏  举报