1、 基于算符优先分析方法基于算符优先分析方法 的表达式语法分析器的表达式语法分析器 二一九年八月六日二一九年八月六日 1 目目 录录 前 言 . 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 表达式文法 GE构造算符优先关系表 . 10 3.4.2
2、根据算符优先表用栈结构来实现算符优先分析 11 3.4.3 辅助工具类设计 18 第 4 章 测试用例及程序截图 21 4.1 第一版测试21 4.1 第二版测试25 4.2 第三版测试 . 错误错误!未定义书签。未定义书签。 第 5 章 用户使用说明. 32 5.1 使用步骤 32 附录 1. 参考文献 33 附录 2. 总结 . 33 1 前前 言言 1 1摘要摘要 编译原理是计算机专业的一门重要专业课, 旨在介绍编译程序 构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法 分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代 码生成。 编译原理是计算机专业设置的一门重要
3、的专业课程。虽然只 有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都 对学生提供了系统而有效的训练,有利于提高软件人员的素质和能 力。算符优先分析法是一种简单直观、特别方便于表达式分析,易于 手式实现的方法。算符优先法只考虑算符(广义为终结符号)之间的 优先关系,它是一种自底向上的归约过程, 但这种归约未必严格按照 句柄归约。它是一种不规范归约法。 算符优先分析法的关键是比较两 个相继出现的终结符号的优先级而决定应采取的动作。 要完成算符间 的优先级比较,就要先定义各种可能出相继出现的运算符的优先级, 并将其表示成矩阵形式, 在分析过程中通过查询矩阵元素而得出算符 间的优先关系。
4、2 2问题描述问题描述 给出该文法 E # E # E E + Q | Q Q Q - T | T T T * F | F 1 F F/ MM M M PP P ( E )i 用算符优先分析法实现对表达式的计算。 3 3项目开发平台项目开发平台 语言:Java 开发平台:MyEclipse 2 第第 1 章章 课程设计计划课程设计计划 1.11.1 组组员与工作分配员与工作分配 xxx 1.21.2 课程计划课程计划 表 1.2.1 课程设计计划清单 序号 内容 需求 计划时间 实际时间 状态 1 问题定义 对课程设计 要求分析 6 月 15 日 6 月 15 日 已完成 2 查询资料 对课程设计 做必要的资 料查询 6 月 16 日-6 月 17 日 6 月 17 日 已完成 3 概要设计 确定课程设 计的总体框 架