编译原理设计--基于算符优先方法的表达式语法器重点分析.doc

编译原理设计--基于算符优先方法的表达式语法器重点分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于算符优先分析方法 的表达式语法分析器 年 级: 2007 班 级: 级计算机科学与技术 4班 组 长: 刘思佳 组 员: 欧 垚 毛群晖 袁小仨 徐碧红 邓文杰 孙苗苗 顿 硕 伍小军 曾 洁 孙 梁 吉顺昌 指导老师: 段明秀 二○一○年六月三十日目 录 前 言 1 第1章 课程设计计划 4 1.1员与工作分配 4 1.2课程计划 4 1.3资源需求 4 第2章 功能需求分析 5 2.1 功能需求清单 5 第3章 设计、分析与编码 6 3.1 总体设计 6 3.1.1 模块划分 6 3.1.2程序分包 6 3.2 详细设计 7 3.2.1 类图 7 3.3 程序流程图 9 3.4 分析与编码实现 10 3.4.1表达式文法G[E’]构造算符优先关系表 10 3.4.2 根据算符优先表用栈结构来实现算符优先分析 13 3.4.3 辅助工具类设计 18 第4章 测试用例及程序截图 21 4.1第一版测试………………………………………………………………………………………………………………21 4.1第二版测试………………………………………………………………………………………………………………25 4.2 第三版测试 28 第5章 用户使用说明 32 5.1 使用步骤 32 附录1. 参考文献 33 附录2. 总结 33 前 言 1.摘要 编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。算符优先分析法是一种简单直观、特别方便于表达式分析,易于手式实现的方法。算符优先法只考虑算符(广义为终结符号)之间的优先关系,它是一种自底向上的归约过程,但这种归约未必严格按照句柄归约。它是一种不规范归约法。算符优先分析法的关键是比较两个相继出现的终结符号的优先级而决定应采取的动作。要完成算符间的优先级比较,就要先定义各种可能出相继出现的运算符的优先级,并将其表示成矩阵形式,在分析过程中通过查询矩阵元素而得出算符间的优先关系。 2.问题描述 给出该文法 E’ →# E # E → E + Q | Q Q → Q - T | T T → T * F | F F → F/ M|M M → M^ P|P P → ( E )|i 用算符优先分析法实现对表达式的计算。 3.项目开发平台 语言:Java 开发平台:MyEclipse 第1章 课程设计计划 1.1组员与工作分配 组长:刘思佳 资料组:毛群晖,邓文杰,曾洁 代码组:刘思佳,孙梁,孙苗苗,顿硕 测试组:欧垚,吉顺昌,徐碧红,袁小仨,伍小军 1.2课程计划 表1.2.1 课程设计计划清单 序号 内容 需求 计划时间 实际时间 状态 1 问题定义 对课程设计要求分析 6月15日 6月15日 已完成 2 查询资料 对课程设计做必要的资料查询 6月16日-6月17日 6月17日 已完成 3 概要设计 确定课程设计的总体框架与分包 6月18日 6月18日 已完成 4 详细设计 具体分析设计每个类与接口 6月19日-6月20日 6月20日 已完成 5 编码 实现程序 6月21日 6月21日 已完成 6 测试并修改 测试程序BUG并进行修改 6月22日-6月26日 6月26日 已完成 1.3资源需求 表1.3.1开发资源 序号 资源 作用 占用时间 当前可用状态 获得途径 1 MyEclipse平台 设计平台 贯穿整个设计阶段 可用 网上下载 第2章 功能需求分析 2.1 功能需求清单 表2.1.1 需求清单 功能编号 功能名称 备注 1 键盘输入 用户能从键盘输入字符串 2 表达式切分 切分算术表达式,结果存入字符串数组,如: 字符串:1.5+3*2# 将被切分为 {1.5,+,3,*,2,#} 3 扫描表达式 检测是否符合给定的文法 4 出错处理 不符合文法的给出错误提示 5 计算表达式 合法的算术表达式将计算出结果 6 输出 将计算结果输出给用户 第3章 设计、分析与编码 3.1 总体设计 3.1.1 模块划分 该语法分析器可分为以下几个主要模块: 1. 词法分析并计算模块 其中应有一个操作符栈和一个操作数栈,用于分析输入的文法和 句子,并提供

文档评论(0)

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

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

1亿VIP精品文档

相关文档