编译原理课程设计--LR(0)分析器自动构造程序的实现.doc

编译原理课程设计--LR(0)分析器自动构造程序的实现.doc

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 LR(0)分析器自动构造程序的实现 邵贤军 2009 年 12 月 合肥工业大学课程设计任务书 设 计 题 目 LR(0)分析表及分析器的构造 成绩 主 要 内 容 1. 对任意给定的文法,完成识别文法活前缀的、的状态转化矩阵及项目集规范族的构造; 2. 判断该文法是否为文法,实现分析表的构造,并输出到指定文件中; 3. 实现分析器总控程序,对输入的表达式进行文法分析。 指 导 教 师 意 见 该生能按时完成课程设计任务书所规定的程序设计,综合运用所学知识独立分析和解决问题的能力 。程序设计方案 。论文论述 ,文理 ,格式 。程序运行结果 。程序验收时回答问题 。 签名: 目 录 第一章 概 述 4 第二章 设计的基本原理 5 2.1 识别文法的LR(0)项目集规范族的构造 5 2.2 LR(0)分析表的构造 5 2.3 LR(0)分析器总控程序构造 6 第三章 程序设计 7 3.1 程序总体构架 7 3.2 程序存储结构 8 3.2.1 符号表存储结构 8 3.2.2 产生式表存储结构 8 3.2.3 项目集规范族表存储结构 9 3.2.4 LR(0)分析表存储结构 9 3.3 程序算法 10 3.3.1 项目集规范族的构造 10 3.3.2 LR(0)分析表构造 11 第四章 程序测试 12 4.1 符号表测试 12 4.2 产生式表测试 13 4.3 项目集规范族表测试 13 4.4 LR(0)分析表测试 14 4.5 LR(0)分析器测试 14 第五章 总结和展望 15 参考文献 16 附录 17 第一章 概述,识别文法活前缀的、的状态转化矩阵及项目集规范族的构造; 2. 判断该文法是否为文法,实现了分析表的构造,并输出到指定文件中; 3. 实现了分析器总控程序,对输入的表达式进行文法分析。 第二章 设计的基本原理[1]主要有三点:1. 识别文法活前缀的、的状态转化矩阵及项目集规范族的构造;2. 分析表的构造;3. 分析器总控程序的构造。 2.1 识别文法的LR(0)项目集规范族的构造 采用(闭包)的构造一个文法的项目规范簇。 假定是文法的任一项目集,定义和构造的闭包的算法: (1)的任何项目都属于; (2)若属于,那么,对任何关于的产生式,项目也属于; (3)重复执行上述两个步骤直至不再增大。 其中初始 ,为对文法进行拓广构造而引进的不出现在中的非终结符。 定义状态转换函数,的第一个变元是一个项目集,第二个变元是一个文法符号。函数值定义为。 其中 = {任何形如的项目| 属于} 2.2 LR(0)分析表的构造 假定。令每个项目集的下标作为分析器的状态。特别是,令那个包含项目的集合的下标为分析器的初态。分析表的子表和子表可按如下方法构造: (1)若项目属于且,为终结符,则置为“把移近栈”,简记为“”。 (2)若项目属于,那么对于任何终结符(或结束符#),置为“用产生式进行规约”,简记为“”(假定产生式是文法的第j个产生式) (3)若项目属于,则置为“接受”,简记为“acc”。 (4)若,则置。 (5)分析表中凡不能用规则1~4填入信息的空白处均置上“报错标志”。如果分析表中任何一项被重复填入,则说明分析表的入口不是唯一的,项目集中存在冲突项目,该文法不是文法。 2.3 LR(0)分析器总控程序构造 分析表包括量部分,“动作”表和“状态转换”表。规定了当状态面临输入符号时应采取什么动作。规定了状态面对文法符号时下一状态是什么。 每一项所规定的动作不外乎是下述四种可能之一。 (1)移进 把的下一状态和输入符号推进栈,下一输入符号变成现行输入符号。 (2)归约 指用某一产生式进行规约。假若的长度为,规约的动作是,去除栈顶的个项,使状态变成栈顶状态,然后把的下一状态推进栈。规约动作不改变现行输入符号。规约动作不改变现行输入符号。 (3)接受 宣布分析成功,停止分析器工作 (4)报错 发现源程序含有错误,调用出错处理程序。 第三章 程序设计、产生式表、表和项目集规范簇表。同时,项目集规范簇表包含一个分析栈作为分析器总控程序。产生式表包含符号表作为子表,项目集规范簇表包含产生式表、表作为子表。 程序工作流程: 1. 读取含有文法规则的文件,为该文法中的每一个不同的文法符号(终结符和非终结符分配一个编号),记录文法

您可能关注的文档

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档