目录
1.引言 2
1.1问题描述 2
1.2需求与技术现状分析 2
2.程序总体设计 3
2.1设计目的 3
2.2设计要求 3
2.3总体程序设计思路 4
2.4流程图 4
3.数据结构和算法详细设计 5
3.1词法分析设计 5
3.2语法分析设计 7
3.3保存文件设计 7
4. 系统实现和测试 8
4.1词法分析 8
4.1语法分析 9
4.3保存文件设计 13
4.4.系统测试 14
5. 总结与展望 23
5.1全文总结 23
5.2工作展望 23
6.体会 24
6.1总结 24
6.2特色 24
6.3不足 25
参考文献 25
附录 26
附录1: 26
附录2: 70
1.引言
1.1问题描述
抽象语法树(abstract syntax code, AST) 是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构, 这所以说是抽象的,是因为抽象语法树并不会表示出真实语法出现的每一个细节, 比如说,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现。抽象语法树并不依赖于源语言的语法,也就是说语法分析阶段所采用的上下文无文文法,因为在写文法时,经常会对文法进行等价的转换(消除左递归,回溯,二义性等) , 这样会给文法分析引入一些多余的成分,对后续阶段造成不利影响,甚至会使合个阶段变得混乱。因些,很多编译器经常要独立地构造语法分析树为前端,后端建立一个清晰的接口。
1.2需求与技术现状分析
抽象语法树(Abstract Syntax Tree ,AST)作为程序的一种中间表示形式,在程序分析等诸多领域有广泛的应用.利用抽象语法树可以方便地实现多种源程序处理工具,比如源程序浏览器、智能编辑器、语言翻译器等。通常是作为编译器或解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。实际开发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。
个人通过对源程序的实现,发现各种编译器的中间表示就是语法分析树,AST,感觉本次实验的最终目的就是编译出来一个简单的语言编译器,所以我认为语法分析树目前的现状就是编译器的内部原理,现在实现的程序比较简单,词法识别和语法识别还不够全面,只能够识别比较简单的较为基本的源程序。





















