目 录
论文总页数:22页
1引言 1
1.1项目背景 1
1.2目标 1
1.3名词解释 1
1.4算法简介 2
1.4.1自顶向下分析 2
1.4.2 递归子程序 3
1.4.3 LL(K)分析方法 4
1.4.4 LL(1)分析方法 4
1.4.5LL(1)分析表 5
2 系统流程图 6
2.1程序流程图 6
2.2 系统模块流程图 7
3 系统实施 7
3.1文件读取模块 8
3.1.1文件读取使用的CommonDialog控件介绍 8
3.1.2文法左递归的判断 9
3.2算法分析模块 9
3.2.1求select集 9
3.2.2求first集 10
3.2.3求follow集 10
3.3分析表构造模块 12
3.3.1构造文法分析表 12
3.3.2A::=aβ规则 13
3.3.3A::=Dβ规则 13
3.3.4A::=ε规则 13
3.4句子分析模块 13
3.4.1读取句子 14
3.4.2分析句子 14
4 特殊问题及解决方法 14
4.1 Select集的求解 15
4.1.1 问题描述 15
4.1.2 解决方案 15
4.1.3 解决结果 15
4.2为ListBox添加水平滚动条 15
4.2.1 问题描述 15
4.2.2 解决方案 15
4.2.3 解决结果 16
5 结果测试 16
5.1测试正确文法 16
5.2测试错误文法 19
结 论 20
参考文献 20
致 谢 21
声 明 22
摘 要
编译程序一般由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、目标代码生成程序、代码优化程序、表格管理程序和出错处理程序等成分构成。在编译原理的教学过程中,算法的讲解都需要对算法进行详细的分析,包括算法条件的判断,文法分析表的构造过程,文法分析表的具体生成,针对文法的句子的分析过程等,这些过程往往需要占用大量时间来分析、制表等。本软件的主要任务就是利用程序来完成算法的上述相关过程,以达到高效,直观的效果。本文旨在介绍语法分析方法中的一种自上而下的分析方法——LL(1)分析法。所谓LL(1)分析法是指语法分析是按自左至右的顺序向前查看一个输入字符串,并分析过程中产生句子的最左推导。
关键词:编译;语法分析;LL(1)算法;演示