4实现语法分析器.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4实现语法分析器

国家人才培养模式创新实验区、云南省教学团队、云南大学软件学院教育创新基金联合资助项目 报告名称 实验4:实现语法分析器 姓 名: 学 号: 专 业: 软件工程 任 课 教 师 : 朱锐 编 制 时 间 : 2017年5月15日 成 绩: 云南大学软件学院 2017年5月制表 报告内容: 实验目标 对PL/0,编写调试一个语法分析程序。任意选择一种语法分析方法,并对所用的分析方法,选择一种合适的数据结构存放分析出来的正确的语法单位。 实现方案 核心思想就是,从开始状态开始,按照文法展开式,逐级进行状态分析,直到分析完毕,如果在此期间出现状态不匹配,即语法错误,停止分析。当然在实际的语法分析器要有错误恢复机制,以发现其他的语法错误。即,一次报告多个语法错误。这里需要说明的是,要想实现语法分析,必须先有词法分析。输入文本),主要可以通过两种方式完成: 自顶向下分析:根据形式语法规则,在语法分析树的自顶向下展开中搜索输入符号串可能的最左推导。单词按从左到右的顺序依次使用。? 自底向上分析:语法分析器从现有的输入符号串开始,尝试将其根据给定的形式语法规则进行改写,最终改写为语法的起始符号。 实现步骤 步骤流程图struct?stack????????????????????????????????? ?{??????? ???stack?*top;??????? ???char?value;??????? ?};??? ???? ?char?pop(stack?*pst)???????????????????????? ?{???char?e;??????? ????if(pst-top==pst)?????? ?????{???? ?????printf(The?stack?is?null.);??????? ?????return?0;???? ????}???? ????else?????? ???{??????? ?????e=pst-top-value;??????? ?????pst-top--;??????? ???return?e;??????? ????}?????? ?}??????? ?void?push(stack?*pst,char?e)??????????????? ?{??????? ?????pst-top++;??????? ?????pst-top-value=e;??????? ?}??????? ?void?printstack(stack?*pst)????????????????? {????stack?*printtemp=pst;??????? ?????while(printtemp=(pst-top))??????? ??????{??????? ??????????printf(%c,printtemp-value);??????? ??????????printtemp++;???????? ??????}????????? ?}????? ?void?printstring(stack?*pst)??????????????? {????? ????stack?*printtemp=(pst-top);??????? ?????while(printtemp=pst)??????? ??????{??????? ??????????printf(%c,printtemp-value);??????? ??????????printtemp--;???????? ??????}????????? ?}?????? ?void?printSLR(int?number,stack?*status,stack?*grammar,stack?*string)?? ?{????? ?????printf(%d??????,number);?? ?????printstack(status);printf(????????????);?? ?????printstack(grammar);printf(????????????);?? ?????printstring(string);printf(???????????);?? ?????number++;?? ?}?? 测试用例 测试用例图 运行结果图

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档