LL語法分析器.docVIP

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

LL(1)语法分析器实验报告书 目 录 第一章 概 述 3 1.1 开发平台 3 1.2 实验目的 3 1.3 实验要求 3 第二章 语法分析器的实现 3 2.1 LL(1)语法分析器原理 3 2.2 求出能推出空的终结符 4 2.3 FIRST集的确定 4 2.4 FOLLOW集的确定 4 2.5 SELECT集的确定 4 2.6 LL(1)文法的判别 4 2.7 逻辑结构 4 2.8 预测分析表的生成 5 2.9 句子的判定 5 2.10 其他说明 5 第三章 系统运行与测试 6 3.1 程序运行环境 6 3.2 运行界面 6 3.3 系统测试 8 第四章 总 述 11 4.1 程序综述 11 4.2小组工作总结 11 第一章 概 述 1.1 开发平台 本程序基于Microsoft Visual Studio 2008开发,使用C#语言。 1.2 实验目的 掌握LL(1)分析法的基本原理,掌握LL(1)分析表的构造方法,掌握LL(1)驱动程序的构造方法。 1.3 实验要求 编写一个语法分析器,不限语言,方法。 第二章 语法分析器的实现 2.1 LL(1)语法分析器原理 语法分析是编译过程的核心部分,它的主要任务是按照程序的语法规则,从由词法分析输出的源程序符号串中识别出各类语法成分,同时进行词法检查,为语义分析和代码生成作准备。这里采用自顶向下的LL(1)分析方法。 语法分析程序的流程图如图5-4所示。 2.2 求出能推出空的终结符 见许英俊报告 2.3 FIRST集的确定 见邹杰光报告 2.4 FOLLOW集的确定 见张志峰报告 2.5 SELECT集的确定 见叶凯翔报告 2.6 LL(1)文法的判别 见叶凯翔报告 2.7 逻辑结构 一个LL(1)分析器由一张分析表、一个分析栈和一个总控程序组成。其逻辑结构如图2-1所式。 图2-1 LL(1)分析器的逻辑结构 2.8 预测分析表的生成 见许英俊报告 2.9 句子的判定 当一个文法确定是LL(1)文法时就可以对输入的语句进行判定了。首先要安 装SELLECT集生成LL(1)预测分析表,最简单的方法是使用哈希表来表示,把每一个产生式左部依次和这个产生式SELLECT集中的每一个终结符组成关键字,其值即为这个产生式,送入哈希表。这样在进行句子的分析时就可以很容易判断是否使用某一个产生式来进行规约。在实际分析时设置两个栈,把#压入分析栈和剩余栈,把开始符压入分析栈,把输入串从右向左送入剩余栈,然后只要两个栈元素个数同时大于1,那么依次从两个栈中取出两个元素进行比较,假如一样就匹配,假如可以规约就规约,否则就不是该文法的句子。 2.10 其他说明 本程序使用C#编写,有良好的用户界面,在程序当中,Work类是程序工作类,分析与判断都在这里.Form1为图形界面类,有关图形界面的设置在这里. 第三章 系统运行与测试 3.1 程序运行环境 2000或XP系统,安装.NetFrameWork 3.5 以上版本即可运行。 需要调试程序请安装.NetFrameWork SDK 3.5 以上版本或直接安装 Visual Studio 2008以上版本。 3.2 运行界面 程序打开后 点确定规则后 点击分析栏 点分析按钮后 3.3 系统测试 3.31 测试数据一 点击文件菜单,选着打开文件,打开程序目录下yufa1.txt文件,载入测试文法规则: 文法规则(依次为非终结符,终结符,起始符,规则): SHMA abde S S-aH H-aMd H-d M-Ab M-$ A-aM A-e 点击确定规则,程序判断: 判断出该规则是LL(1)文法规则,测试字符串abddbe# aaaaebbbd#,符合 测试2:见图 第四章 总 述 4.1 程序综述 本程序可以很好的判断LL(1)文法与进行语法分析,拥有良好的界面,可以保存与打开文法,可以保存分析结果。分析过程提示清楚,方便。 4.2小组工作总结 通过这个学期的学习,我们小组对编译原理有了一定的了解,熟悉了语法分析器与词法分析器的制作与使用,了解了更多关于语言的知识.温老师认真负责,督促我们做好小组作业,这极大提高了我们的动手能力.本次语法分析器分工,我负责统筹分工,总控程序,整合程序,编写图形界面,确定数据结构与模块.邹杰光负责FIRST集确定, 张志峰负责FOLLOW集确定,叶凯翔负责select集确定于文法确定,许英俊负责能导出空的非终极符确定和预测分析表的生成。以上。 编译原理语法分析器实验报告

文档评论(0)

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

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

1亿VIP精品文档

相关文档