合肥工业大学编译原理 ll自上而下文法分析.docxVIP

合肥工业大学编译原理 ll自上而下文法分析.docx

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合肥工业大学编译原理 ll自上而下文法分析

合肥工业大学计算机与信息学院 计算机系2013级 编译原理课程设计报告 姓 名: 马骏 专业年级: 信息安全13-1 学 号: 2013211869 提交时间: 2016年07月 实验题目 自上而下的LL(1)文法分析 实验目的 了解掌握自上而下的LL(1)文法分析过程。 二、实验内容与要求 从语法分析树构造句型所有的推导的程序实现,接受用户任意输入的一个句型的语法分析树(其表示存于指定文件中),生成该语法分析树中包含的该句型的所有推导(显示输出)。 构造一程序,实现教材P.78的FIRST(X)集合的构造算法。对任一给定的文法G,程序输出所有非终结符P的FIRST(P)。构造一程序,实现教材P.78的FIRST(X)集合的构造算法。对任一给定的文法G,程序输出所有非终结符P的FIRST(P)。在此基础上,构造一程序,实现教材P.79的FOLLOW(A)集合的构造算法。对任一给定的文法G,程序输出所有非终结符A的FOLLOW (A)。对于给定的一个LL(1)文法,假定所有非终结符号P的集合FIRST(P)和集合FOLLOW(P)都已知,构造其预测分析表(实现教材P.79给出的预测分析表构造算法)。对教材P.79给出的例4.7构造出预测分析表。程序显示输出预测分析表或输出到指定文件中。 首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再实现教材P.79给出的预测分析表构造算法。程序显示输出预测分析表或输出到指定文件中。 对文法按教材P.76表4.1构造出G的预测分析程序,程序显示输出如P.78那样的匹配过程。 三、实验环境与工具 操作系统:Windows 7 开发语言:C++ 开发过程 字符要求: 你的程序必须能够根据以下字符来处理语法: - 终端字符:字母,数字,符号例如“+”,“ — ”,…; - 非终端字母表中的大写字母。 符号“=”,“|”和“#”(替换“ε”,因为它更容易输入到文本文件)被保留用于语法的描述中,因此不能被用作终端。 初始状态 您的程序通过读取一个文件中的“文本”格式开始。 这个文件的结构可以随意构建,不做要求,但建议做成简单的<simple>。 例如,程序描述以下语句: E = E + T |T T = T * F |F F =(E)| 0 |1 在这种情况,我们可以很容易确定E,T和F是非终端,而符号“(”,“)”,“*”和“+”和数字“0”和“1”是在终端。 第一个非终端(第一衍生物)被认为是语法的公理。 文本结构(在内存中)过程显示在屏幕结果必须存储在内存中,是一个您所选择的数据结构。然后,使用一个函数再取出数据,存储在内存中并屏幕上显示(以你选择的格式)。 文本结构(在内存中) 过程 显示在屏幕 在上面的图中,并在下文中,右列显示的程序的执行的过程,并左栏表示中使用的数据结构。 这些都是明显的例子。你可以使用任何你想要的格式。 3)消除传递 没有发现传递关系发现传递关系判断:是否包含左传递消除传递关系判断你的程序是否包含一个传递关系或没有。如果包含,递归应该被消除。 没有发现传递关系 发现传递关系 判断:是否包含左传递 消除传递关系 没有传递关系的语句遍历语句 没有传递关系的语句 遍历语句 指向自己的判断: 您可以创建一个新的数据结构语句来表示其中传递关系已被删除,这有利于进一步加工。 在这种情况下,如果语法不包含判定递归的语句,程序当然必须使用第二数据结构的副本。 3)计算“first集”和“follow集”的集合 为了产生一个分析器,你现在必须计算,每个分支,“第一个”和“其后”的集合·。 ?结果被存储在数据结构,再次“你的选择。” 然后,这些集合被显示在屏幕上 图注释:Calcul des ensembles ? premiers ? et ? suivants ? 计算“第一个”和“其后”的集合 Affichage des ensembles 显示集合 premiers 第一个 suivants其后 4)分析表的结构 具有非递归语法以及“第一个”和“其后”的集合,你的程序现在可以建立预测分析表。 结果以表的形式显示在屏幕上。 图注释:Construction de la table d’analyse分析表的结构 table d’analyse 分析表 Affichage de la table d’analyse 显示分析表 输入字符串的分析 最后一步:你的程序读取输入(键盘)的表达和分析。指出,结果是否符合语法。你要尽可能准确的鉴定结果:定位错误在没有辨认出表达式的情况下。 其次,你的程序必须能够完成对输入

您可能关注的文档

文档评论(0)

celkhn0303 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档