自顶向下语法分析器的可视化交互仿真毕业论文
2021-04-14 22:34:36
摘 要
Abstract 2
第1章 绪论 3
1.1 论文研究背景及意义 3
1.2 国内外研究现状 3
1.2.1 编译技术国内外研究现状 3
1.2.2 可视化国内外研究现状 4
1.3 主要内容及技术路线 5
1.3.1 论文主要内容 5
1.3.2 采用的技术路线 5
1.4 论文组织结构 5
第2章 自顶向下语法分析原理 6
2.1 文法 6
2.1.1 正则文法 6
2.1.2 上下文无关文法 7
2.2 语法分析 7
2.2.1 自顶向下语法分析 8
2.2.2 消除左递归 8
2.2.3 提取左公因子 9
2.3 错误处理 12
2.4 本章小结 12
第3章 自顶向下语法分析可视化分析与设计 13
3.1 需求分析 13
3.2 软件结构设计 13
3.2.1 前端设计 15
3.2.2 后台设计 17
3.3 本章小结 18
第4章 自顶向下语法分析可视化的实现 19
4.1 整体架构 19
4.2 开发环境的选择 19
4.2.1 Visual Studio Code 19
4.2.2 Microsoft Visual Studio 19
4.3 文法编写规则 20
4.4 前端页面实现 20
4.4.1 使用的前端框架 20
4.4.2 输入文法和符号串模块 21
4.4.3 FIRST集合、FOLLOW集合和预测分析表模块 22
4.4.4 分析过程模块 23
4.4.5 对应算法伪代码模块 24
4.4.6 语法分析树模块 25
4.5 后台程序实现 26
4.6 本章小结 27
第5章 系统测试 28
5.1 测试环境 28
5.2 测试用例 28
5.3 功能测试 29
5.4 兼容测试 32
5.5 本章小结 32
第6章 结论 33
6.1 工作总结 33
6.2 展望 33
致谢 34
参考文献 35
摘 要
编译原理是计算机科学与技术这一学科中核心的课程之一,也是对于当代程序员开发软件的必修课程之一。所以掌握这样一门课程,在日后的科研与工作之中都是显得尤为重要的。
本文主要针对编译器前端中语法分析这一部分进行阐述,着重研究了语法分析,尤其是自顶向下语法分析,并对正则文法和上下文无关文法进行了论述。在实现过程中,先对其进行需求分析,通过UML建模语言对构建出对应的系统模型。再选择以可维护性高和灵活性强的B/S架构作为开发架构。以及最后再测试系统中的重要模块。
系统界面布局简洁,使用起来操作方便,展示效果明显。在过程可视化展示上,通过提供分析结果完整展示等方法,以达到编译过程可视化效果。对《编译原理》课程中的编译过程、各阶段主要算法、相关数据结构等都起到了辅助教学的作用。
关键词:编译原理;语法分析;算法可视化;
Abstract
In the subject of computer science and technology, the principle of compiling is one of the core courses, as well as a compulsory course for modern programmers to develop software. So mastering such a course is particularly important in the future of scientific research and work.
This paper focuses on the grammar analysis in the front-end of the compiler, focusing on the grammar analysis especially the Top-down grammar analysis, in which the regular grammar and context-free grammar have been discussed. In the process of implementation, the requirement analysis is carried out first and the system model is constructed through the UML modeling language. And choosing the B/S architecture which is highly maintainable and flexible as the development framework. Finally, the important modules of the system have to be tested.
The system interface is simple in layout, easy to use, and the effect of displaying is obvious. In the displaying of visualized visualization, implementing the displaying effect of compiling process by providing the methods of full demonstration of analyzing result. The compiling process, the main algorithms and the related data structure in the course of compiling principles have played an auxiliary role in teaching.
Key Words:Compiler Principles; syntax analyze; visualization of algorithms
第1章 绪论
1.1 论文研究背景及意义
伴随计算机行业的发展,该行业对于在计算机相关领域中的精尖人才的需求愈来愈大。而对于编译原理这门计算机科学与技术核心课程,既能帮助相关从业人员加深对程序编译过程的理解,并且能够在理解编译原理相关算法的基础之上设计出更为优秀的程序,编写出使编译器更容易进行优化的代码,可以见得该门课程对于培养计算机行业相关精尖人才夯实基础有着十分重要的作用。
但是由于编译原理相关算法存在一定的复杂性和抽象性,使得常规教学中所使用的多媒体教学方式不能足以让学生理解透彻对应算法的原理,从而让教学收效颇差。尽管如今存在一些可视化编译软件可用于阐述相关原理和课堂教学作用,但是缺少对于编译原理前端语法分析过程的特定的和详细的可视化编译软件。
为了解决这类存在于编译原理教学中的过程,本文设计了一个针对编译器前端可视化的软件。本软件是基于LL(1)文法,针对语法分析部分进行可视化,与当下其它软件不同之处在于可以根据输入的不同显示出各个算法的可视化结果,使得相关学习人员可以对其背后的原理及相关运行机制有着更深一步的理解。
1.2 国内外研究现状
1.2.1 编译技术国内外研究现状
大约在20世纪50年代末期,与机器无关的编程语言被首次提出。随后,人们开发了几种实验性质的编译器。世上首个编译器是在计算机科学家葛丽丝·霍普于1952年为A-0系统编写的。但是1957年由任职于IBM的美国计算机科学家约翰·巴科斯带领下的FORTRAN则是第一个被实现出具备完整功能的编译器。1960年,COBOL成为一种较早的能在多种架构下被编译的语言。高级语言在许多领域流行起来。由于新的编程语言支持的功能越来越多,计算机的架构越来越复杂,这使得编译器也越来越复杂。最初的编译器是由汇编语言编写的。而首个能编译自己源程序的编译器是在1962年由麻省理工学院的Hart和Levin制作的。从20世纪70年代起,实现能编译自己源程序的编译器已基本完全具有可行性,但更多是以C和Pascal实现。