目录
1 目的 4
2 设计思路与实现 4
2.1 编译过程概述 4
2.2 Flex与Bison工具的简介 5
2.2.1 Flex文件内容结构 5
2.2.2 Bison文件内容结构 6
2.2.3 Flex-Bison协作关系 6
2.2.4 结构体含义 7
2.3 文法的设计 7
3 程序实现 8
3.1 程序总体思想 8
3.2 词法分析设计 8
3.3 语法分析设计 9
3.4 抽象语法树的生成 12
3.5 AST图片的设计 13
3.6 MakeFile文件的设计 14
4 测试用例以及实验结果 15
4.1 文件测试用例 15
4.2 使用说明 15
4.3 文件测试 15
4.3.1 文件1测试 15
4.3.2 文件2测试 18
4.3.3 文件3测试 20
5 技术问题以及解决方案 22
5.1 技术问题 22
5.2 心得体会 23
6 备注 23
1目的
采用词法分析工具Flex自动构建分析工具,对输入流的程序进行分析,开发了文法描述语言的词法分析程序,实现词法分析过程中对单个单词的分析,加深对课本词法分析内容的理解,提高自身的实践能力。
采用了SLR(1)语法分析方法,利用Bison工具实现对语法分析。利用给的文法开发如下语言描述分析程序,实现对单个词语序列的语法分析和结构分析。
编译原理课程中学到的知识,学习程序设计语言编译程序的一般原理、基本设计方法、主要实现技术,加深对词法分析、语法分析的理解和认识,通过编程给出具体的实现,进而掌握词法分析和语法分析的基本思想。
2设计思路与实现
2.1编译过程概述
编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。一般一个编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。
上述编译过程的六个阶段的任务,可以分别由六个模块完成,它们称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序和目标代码生成程序。