SLR文法分析计划实验学习报告计划.docxVIP

  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文档。上传文档
查看更多
精品文档 精品文档 PAGE PAGE36 精品文档 PAGE 《编译原理》课程设计报告 —SLR(1)剖析的实现 学 院 计算机科学与技术 专 业 计算机科学与技术 学 号 学 生 姓 名 指导教师姓名 2015年12月26日 目录 1.设计的目的与内容 1 1.1 课程设计的目的 1 1.2 设计内容 1 1.3 设计要求 1 1.4 理论基础 1 2 算法的基本思想 2 2.1 主要功能函数 2 2.2 算法思想 3 SLR文法结构剖析表的主要思想: 3 解决矛盾的方法: 3 SLR语法剖析表的结构方法: 4 3 主要功能模块流程图 5 3.1 主函数功能流程图 5 4 系统测试 6 5 结论 11 附录程序源码清单 12 1.设计的目的与内容 1.1课程设计的目的 编译原理课程设计是计算机专业重要的教学环节,它为学生提供了一个既着手又动脑,将课本上的理论知识和实际有机的结合起来,独立剖析和解决实际问题的时机。 进一步稳固和复习编译原理的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生关于编程语言原理的理解能力。 加深学生关于编程语言实现手段的印象。 1.2设计内容 结构LR(1)剖析程序,利用它进行语法剖析,判断给出的符号串是否为该文法识其他句子, 认识LR(K)剖析方法是严格的从左向右扫描,和自底向上的语法剖析方法。 1.3设计要求 SLR(1)剖析表的生成能够选择编程序生成,也可选择手动生成; 程序要求要配合适合的错误办理体制; 要打印句子的文法剖析过程。 1.4理论基础 由于大部分适用的程序设计语言的文法不能知足 LR(0)文法的条件,即使是描绘一个实数变 量说明这样简单的文法也不一定是 LR(0)文法。因此关于 LR(0)规范族中有矛盾的项目集 (状 态)用向前查察一个符号的办法进行办理,以解决矛盾。这种办法将能知足一些文法的需要,因为只对有矛盾的状态才向前查察一个符号,以确定做那种动作,因而称这种剖析方法为简单的LR(1)剖析法,用SLR(1)表示。 算法的基本思想 2.1主要功能函数 class WF { WF (char s1 [], char s2 [], int x, int y ) WF (const string s1 , const string s2 , int x, inty ) bool operator (const WFa) const bool operator == (const WFa ) const void print () }; class Closure { void print (stringstr ) bool operator == (const Closure a ) const }; void make_item () void dfs (const string x ) void make_first () void append (const string str1 , const string str2 ) bool _check (const vector int id , const stringstr ) void make_follow () void make_set () void make_V () void make_cmp (vector WFcmp1 , int i , char ch ) voidmake_go() void make_table () void print (strings1 , strings2 , strings3 ,strings4 , strings5 , strings6 , strings7 ) stringget_steps (int x ) stringget_stk (vector Tstk ) stringget_shift (WFtemp ) void analyse (stringsrc ) 2.2算法思想 SLR文法结构剖析表的主要思想: 很多矛盾性的动作都可能经过考察相关非终结符的 FOLLOW集而获解决。 解决矛盾的方法: 解决矛盾的方法是剖析所有含两个会合不相交,而且也不包含略:  A和B的句型,考察会合FOLLOW(A)和FOLLOW(B),如果这b,那么当状态I面临输入符号a时,我们能够使用如下策 若a=b,则移进。 若a∈FOLLOW(A),则用产生式A→α进行归约;若a∈FOLLOW(B),则用产生式B→α进行归约;其他,报错*SLR的基本算法: 假设LR(0)规范族的一个项目集 I中含有m个移进项目 A1→α?a1β1,A2→α?a2β2,,Am→α?amβm; 同时含有 n个归约项目 B1→α?,B2→α?,,B3→α?, 如果会合{a1, ,am

文档评论(0)

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

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

1亿VIP精品文档

相关文档