1、计算机科学与技术学院 专业班级:计算机082001班 2012年 6月 4日 太原科技大学毕业设计(论文)任务书 学院: 计算机科学与技术学院 学 生 姓 名 学号 200820010114 专业班级 计算机082001 同组人 无 任务下发时间 2012年3月 任务完成时间 2012年6月 设计(论文)题目 基于LLVM的编译器的设计与实现 设计 高质量应用软件的开发,需要高效的编程语言和编译器的支持。目的 为了加深学生对编程语言和编译器的理解,要求学生设计一个类似C要求 的小源语言,然后利用LLVM实现该语言的编译器。在深刻理解编译原理,掌握文法设计和编译器构造方法,并且熟悉LLVM的基础
2、上,完成编程语言和编译器的设计。主要内容包括: 设计 (1)设计源语言,要求包括变量声明,基本赋值语句,数组访问,主要 条件分支语句,循环语句,函数定义,和函数调用等。 内容 (2)学习LLVM,完成词法分析,语法分析,和语法制导翻译(翻译成LLVM IR)工作,最后利用LLVM实现代码优化和代码生成功能。设计 毕业论文 提交 外文资料翻译 资料 编译器软件 学生签名 指导教师签名 系主任签名 主管院长签名 太原科技大学学士学位论文 中文摘要 开发高性能的应用软件,除了一个良好的软件架构外,还需要高效的编程语言和高质量的编译器的支持。现有语言的改动和新语言的创造,都会带来编译器的开发需求。本文
3、设计了一门新的编程语言leechee,定义了此种语言的文法结构、词法规则,并在linux环境下实现了leechee编程语言的编译器。具体实现方式为首先利用Flex完成词法分析,而后使用Bison完成文法设计、语法分析和语法制导翻译,把源代码翻译成LLVM IR,最后利用LLVM实现代码优化和代码生成功能。关键字:编程语言;编译器;语法制导翻译;LLVM IR;代码优化 The Design and Implementation of LLVM based Compiler Author: Liang Guanlin Tutor: Liu Aiqin ABSTRACT In addition t
4、o a good software-architecture, the development of high-performance applications also needs the support of an efficient programming language and a high-quality compiler. Changes to existing languages and creation of new languages, will bring the development needs of the compilers. This paper designs
5、 a new programming language leechee, defines its grammatical structures, lexical rules, and implements its compiler under Linux environment. The specific approach is, first, finishes the scanner with Flex, and then completes the grammar design, parser, syntax directed translation with Bison, impleme
6、nts the translation to LLVM IR, and finally use the LLVM to do the code optimization and code generation. Keywords: programming language; compiler; syntax directed translation; LLVM IR; code optimization I 第一章 绪论 . 0 1.1 什么是编译器 . 0 1.2 总会有编译器的开发需求 . 0 1.3 为什么做这个项目 . 1 第二章 设计什么样的编译器和语言 . 3 2.1 做一个什么样
7、的编译器 . 3 2.1.1 利用LLVM实现一门新语言 . 3 2.1.2 利用flex和bison完成词法分析和语法分析 . 4 2.2 设计一个什么样的语言 . 5 2.2.1 计算机可以做什么 . 5 2.2.2 本设计的语言leechee . 6 第三章 相关技术的介绍 . 7 3.1 Flex . 7 3.1.1 Flex输入文件的格式 . 7 3.2 Bison . 8 3.2.1 Bison的语法文件 . 8 3.2.2 文法规则的语法 . 9 3.2.3 文法设计需要注意的问题 . 10 3.3 LLVM . 11 3.3.1 LLVM IR . 11 3.3.2 LLVM对
8、三段式设计的实现 . 12 3.3.3 利用LLVM完成代码优化 . 14 第四章 语言和编译器的设计 . 16 4.1 语言设计 . 16 4.1.1 leechee的数据组成 . 16 4.1.2 leechee的文法规则 . 17 II 4.1.3 leechee的词法规则 . 24 4.1.4 leechee的输入输出 . 26 4.2 抽象语法树 . 27 4.2.1 抽象语法树的用处 . 27 4.2.2 leechee语法树的设计 . 28 4.3 语法制导翻译 . 30 4.3.1 利用Bison实现语法制导翻译方案 . 31 4.3.2 均分代码生成工作 . 31 第五章 编译器的实现 . 32 5.1 抽象语法树的实现 . 32 5.1.1 NodeAST . 32 5.1.2 类型 . 33 5.1.3 表达式 . 35 5.1.4 语句 . 41 5.1.5 声明 . 45 5.2 符号表 . 49 5.3 分析栈 . 50 5.4 中间代
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1