没有合适的资源?快使用搜索试试~ 我知道了~
首页表驱动LL(1)语法分析程序.docx
表驱动LL(1)语法分析程序.docx
需积分: 45 1.2k 浏览量
更新于2023-06-03
评论 4
收藏 1.15MB DOCX 举报
1.1目的与意义 通过设计、编制和调试一个典型的LL(1)语法分析方法,进一步掌握预测分析法的语法分析方法。 1.2主要完成的任务 (1)根据LL(1)分析法编写一个语法分析程序,输入文法的FIRST(α)和FOLLOW(U)集,由程序自动生成文法的预测分析表。 (2)所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为LL(1)文法。 (3)对输入的任意符号串,所编制的语法分析程序应能正确判断此串是否为文法的句子(句型分析),并要求输出分析过程。 1.3使用的开发工具 Visual C++ 6.0
资源详情
资源评论
资源推荐

燕山大学
编译原理课程设计报告
题目:表驱动 LL(1)语法分析程序
学 院 信息科学与工程学院
年级专业
学生姓名
学生学号
设计日期

目录
1 概述......................................................................................................................................................................1
1.1 目的与意义...............................................................................................................................................1
1.2 主要完成的任务.......................................................................................................................................1
1.3 使用的开发工具.......................................................................................................................................1
1.4 解决的主要问题.......................................................................................................................................1
1.5 课程设计计划...........................................................................................................................................2
2.使用的基本概念和原理......................................................................................................................................2
2.1 FIRST 集...................................................................................................................................................2
2.2 FOLLOW 集..............................................................................................................................................2
2.3 SELECT 集................................................................................................................................................2
2.4 LL(1)文法..................................................................................................................................................3
2.5 表驱动 LL(1)分析程序.............................................................................................................................3
3 总体设计..............................................................................................................................................................4
3.1 技术路线...................................................................................................................................................4
3.2 总体结构...................................................................................................................................................4
3.3 模块划分...................................................................................................................................................4
4 详细设计..............................................................................................................................................................6
4.1 程序流程图...............................................................................................................................................6
4.2 模块设计...................................................................................................................................................7
4.3 函数及参数设计.....................................................................................................................................16
5 编码实现............................................................................................................................................................17
5.1 源代码及注释.........................................................................................................................................17
5.2 开发环境.................................................................................................................................................28
5.3 解决的难点.............................................................................................................................................28
5.4 注意事项.................................................................................................................................................28
6 测试和试运行....................................................................................................................................................28
6.1 测试方法.................................................................................................................................................28
6.2 测试用例.................................................................................................................................................29
6.3 出现的问题及解决方法.........................................................................................................................31
7. 总结...................................................................................................................................................................31
8. 参考文献...........................................................................................................................................................32

第 1 页
1 概述
1.1 目的与意义
通过设计、编制和调试一个典型的 LL(1)语法分析方法,进一步掌握预测分析
法的语法分析方法。
1.2 主要完成的任务
(1) 根 据 LL(1) 分 析 法 编 写 一 个 语 法 分 析 程 序 , 输 入 文 法 的 FIRST(α) 和
FOLLOW(U)集,由程序自动生成文法的预测分析表。
(2)所开发的程序可适用于不同的文法和任意输入串,且能判断该文法是否为
LL(1)文法。
(3)对输入的任意符号串,所编制的语法分析程序应能正确判断此串是否为文
法的句子(句型分析),并要求输出分析过程。
1.3 使用的开发工具
Visual C++ 6.0
1.4 解决的主要问题
(1)对输入的文法的相关信息进行处理,并根据输入的文法的 FIRST(α)和
FOLLOW(U)集以及是否能推导出 ε 来求得每个文法的 SELECT 集。
(2)对具有相同产生式左部的 SELECT 集求交集,判断是否为 LL(1)文法,
若不是程序结束。
(3)构造该文法的预测分析表并输出。
(4)输入符号串,判定该符号串是否为该文法的句子。
(5)对过程中出现的一些错误能够及时报错。

第 2 页
1.5 课程设计计划
表 1.1 课设计划表
周一 确定选题,查阅相关资料,整理思路。
周二 完成程序中输入、LL(1)文法的判定、构造预测分析表的相关代
码。
周三 完成程序中输出预测分析表、输入符号串、处理并输出对符号
串的预测分析过程及结果。
周四 撰写课程设计报告。
2.使用的基本概念和原理
2.1 FIRST 集
定义:设 G=(VT,VN,P,S)是一个上下文无关文法。
若 ,则规定 。
2.2 FOLLOW 集
定义:设 G=(VT,VN,P,S)是一个上下文无关文法, ,S 是开始符号
若 且 ,则规定 。
2.3 SELECT 集
定义:一个产生式的选择符号集 SELECT。给定上下文无关文法的产生式
, , ,若 ,则 。如
果 ,则 。

第 3 页
2.4 LL(1)文法
含义:第一个 L 表明自顶向下分析是从左到右扫描输入串。第二个 L 表明分析
过程中将用最左推导,1 表明只需向右查看一个字符便可决定如何推导,即选
择哪个产生式进行推导。
判定:一个上下文无关文法是 LL(1)文法的充分必要条件是,对每个非终结符
A 的 两 个 不 同 产 生 式 , , 满 足
,其中 α,β 不同时能
2.5 表驱动 LL(1)分析程序
概述:一个表驱动的 LL(1)分析程序由预测分析程序、先进后出栈和预测分析
表 3 个部分组成,其中只有预测分析表与文法有关,而分析表又可用一个矩阵
M 表示。矩阵的元素 M[A,a]中的下标 A 表示非终结符,a 表示终结符或句子括
号#,矩阵元素 M[A,a]中的内容是一条关于 A 的产生式,表明当用非终结符 A
向下推导时,面临输入符 a 时所采取的候选产生式。当元素内容无产生式时,
则表明用 A 为左部向下推导时遇到了不该出现的符号,因此内容为转为出错处
理的信息。
构造预测分析表:
对每个非终结符或‘#’号用 a 表示。
若
把所有无意义的 M[A,a]标上出错标记。
为了使表简化,其产生式的左部可以不写入表中,表中空白处为出错。
剩余34页未读,继续阅读












a152634897951
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0