1、 附 1 成绩: 毕业设计 (论文)文献综述 院 (系) :信息与控制工程学院 专业班级: 计算机 0801 毕 业 设 计 论 文 方 向 : 综述题目:基于 Java 的小型编译器前端的设计与开发文献综述 信息与控制工程学院毕业设计(论文)文献综述 基于 Java 的小型编译器前端的设计与开发文献综述 摘要: 21 世纪是电脑发展的时代,从事软件开发的人越来越多,使用的开发软件和 开发环境也不尽相同,但是不论是哪种开发环境,都少不了使用编译器。包括常 用的 C 语言。 编译器(Compiler),是一种电脑程式,它会将用某种编程语言写成的源代 码(原始语言),转换成另一种编程语言(目标语言
2、)。它主要的目的是将便于 人编写,阅读,维护的高级计算机语言所写作的源代码程式,翻译为计算机能解 读、运行的低阶机器语言的程序,也就是执行档。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序 一个现代编译器的主要工作流程:源代码 (source code) 预处理器 (preprocessor) 编译器 (compiler) 汇编程序 (assembler) 目标代 码 (object code) 链接器 (Linker) 可执行程序 (executables)。低阶 机器语言是计算机能直接解读、运行的。编译器将源程序作
3、为输入,翻译 产生使用目标语言的等价程序。源代码一般为高级语言 , 如 Pascal、C、 C+、C#、Java 等,而目标语言则是汇编语言或目标机器的目标代码,有时 也称作机器代码。 论文首先论述编译器的发展历程开发背景和研究的目的与意义,然后对本 次编译器前端设计进行简单介绍,同时阐述该编译器所具有的的功能,以及实现 所用的工具和参考的资料 关键词:编译器,源代码,目标代码 1.1. 前言前言 编译程序是现代计算机系统的基本组成部分之一。 编译程序一般由词法分析 程序、语法分析程序、语义分析程序、中间代码生成程序、目标代码生成程序、 代码优化程序、表格管理程序和出错处理程序等成分构成。 在
4、编译原理的教学过程中,语法和语义分析阶段关于算法的讲解都需要对算法进 行详细的分析,包括算法条件的判断,文法分析表的构造过程,文法分析表的具 体生成, 针对文法的句子的分析过程等。 这些过程往往需要占用大量时间来分析、 制表等。 信息与控制工程学院毕业设计(论文)文献综述 2 2C C 语言编译器的发展历程语言编译器的发展历程 C 语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT”前端语法分析器 看到的是“a, =, b , +, c;”,语意分析器按定义的语法,先把 他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端 还负责语义(semantic c
5、hecking)的检查,例如检测参与运算的变量 是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语 法树(abstract syntax tree,或 AST) ,最后通过中间代码生成器将 语法分析树, 转化为三地址代码, 这样后端可以在此基础上进一步优化, 处理。 编译器翻译程序步骤 编译器内部包括了许多步骤或称为阶段(phase),它们执行不同的逻辑操 作。将这些阶段设想为编译器中一个个单独的片断是很有用的,尽管在应用中它 们是经常组合在一起的,但它们确实是作为单独的代码操作来编写的。图 1 - 1 是编译器中的阶段和与以下阶段(文字表、符号表和错误处理器)或其中的一部 分交互
6、的 3 个辅助部件。这里只是简要地描述一下每个阶段,今后大家还会更详 细地学到它们(文字表和符号表在 1 . 4 节中,错误处理器在 1 . 5 节)。 (1) 扫描程序(scanner) 在这个阶段编译器实际阅读源程序(通常以字符流的形式表示)。扫描程 序执行词法分析(Lexical analysis):它将字符序列收集到称作记号(token) 的有意义单元中,记号同自然语言,如英语中的字词相似。因此可以认为扫描程 序执行与拼写相似的任务。 例如在下面的代码行 (它可以是 C 程序的一部分) 中: a index = 4 + 2 这个代码包括了 1 2 个非空字符,但只有 8 个记号: a 标识符 左括号 i n d e x 标识符 右括号 = 赋值 4 数字 + 加号 2 数字 每一个记号均由一个或多个字符组成, 在进一步处理之前它已被收集在一个单元 中。扫描程序还可完成与识别记号一起执行的其他操作。例如,它可将标识符输 入到符号表中,将文字(l