目录
1引言
1.1课题背景与意义
1.2国内外研究现状
1.2.1 抽象语法树(AST)
1.2.2 形式语言自动机
1.3课程设计的主要研究工作
2系统需求分析与总体设计
2.1系统需求分析
2.2系统总体设计
3系统详细设计
3.1有关数据结构的定义
3.2 主要算法设计
4系统实现与测试
4.1系统实现
4.2系统测试
5总结与展望
5.1全文总结
5.1工作展望
6 体会
参考文献
附录一:test.txt测试文件
附录二:词法分析完整输出
附录三:语法分析完整输出
附录四:项目源码
Main.cpp
get_token.h
get_token.cpp
syntax_analyse.h
syntax_analyse.cpp
format_operation.h
format_operation.cpp
CMakeList.txt
1引言
1.1课题背景与意义
在计算机科学中,编译原理是一个重要组成部分,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
编译原理的重要首先是由其内容决定的。根据名字,编译原理包括编译和原理两大部分内容,编译是其实践部分,原理是其理论部分。根据内容,编译原理可以分为前端和后端,前端是对程序语言到中间代码的转换,后端是中间代码到机器代码的转换,前端偏理论,后端偏实践。
实践部分的内容是编译器及其开发,它不仅是计算机科学中的各种知识和理论的练兵场,还具有一个其它系统开发所没有的特征,它的开发所依赖的和所要处理的都是计算机科学中的关键——程序语言。编译器作为一种软件系统,需要用软件语言来书写、构建和运行,语言又是编译器的处理对象,编译器的输入和输出又都是语言。也就是说语言既是编译器的用户,又是编译器的工具,编译器的开发需要开发人员截然不同的两种视角来考虑权衡,这是其它系统所不具备的特征(如果把解释器看作编译器之外的,解释器也具有这个特征,但解释器更偏重局部)。特别是编译器后端的优化部分,能让开发人员深刻理解语言设计的原因和结果。
本次课程设计将以C语言语法元素的子集为例,通过抽象语法树的语法结构实现编译原理中的词法分析和语法分析,并在两者的基础上实现源程序格式化处理的功能。