help-assignment
2.3 实验三、自动生成语法分析程序(JavaCUP)
实验三要求你下载一个语法分析程序自动生成工具 JavaCUP,利用该工具自动产 生一个 Oberon-0 语言的语法分析和语法制导翻译程序;生成的程序源代码是以 Java 语言编写的。
2.3.1 实验步骤 3.1、下载自动生成工具 JavaCUP
实验三选用最早由美国卡内基·梅隆大学的 Scott E. Hudson 开发的一个语法分析 程序自动生成工具 JavaCUP,它是一个 LALR Parser Generator。JavaCUP 是一个 类似 Unix 平台上 yacc 程序的开源(Open Source)软件工具,遵循 GNU General Public License(GPL)。JavaCUP 本身采用 Java 编写,并且生成 Java 语言的分析程序源代码。该软件工具经由美国普林斯顿大学计算机科学系 Andrew W. Appel 教授指导 Frank Flannery 等人改进,目前由 C. Scott Ananian 负责维护。
从http://www2.cs.tum.edu/projects/cup/可下载该软件工具的最新版本 CUP 0.11b。 该网站已包含了你在实验中所需的各类资源,包括该工具的 Java 源代码、已编译生成的字节码、简明的用户手册、以及一个简单的命令行计算器例子等。
2.3.2 实验步骤 3.2、配置和试用 JavaCUP
成功下载并配置后,试运行 JavaCUP 附带的输入源文件例子(一个基于命令行 的简单计算器应用),以保证你正确安装并配置了 JavaCUP。
如果你觉得 JavaCUP 附带的用户手册仍不足以帮助你掌握 JavaCUP 的原理与用 法,自己动手在网上查找其他关于 GNU Bison、yacc 等类似工具的大量电子资源。
2.3.3 实验步骤 3.3、生成 Oberon-0 语法分析和语法制导翻译程序
仔细阅读 JavaCUP 使用手册,根据 Oberon-0 语言的 BNF 定义编写一个 JavaCUP 输入源文件。
根据你的 JavaCUP 输入源文件生成的语法分析程序须完成以下功能:
1、对于一个存在词法、语法或语义错误的 Oberon-0 源程序,必须至少指出一处 错误,并判断错误的类别及产生错误的位置(错误产生的位置定位允许有偏差), 并以相应的异常对象向客户程序报告找出的错误的类别。是否支持其他功能取决 于你的时间、精力与能力,譬如你可尝试从错误中恢复并继续执行语法分析,也 可生成设计图时立即中止程序的执行。在错误检查与错误恢复(指找到错误后继 续执行分析过程的能力)方面做得优秀的实验可获得更高的评分。
2、对于一个词法、语法和语义完全正确的 Oberon-0 源程序,自动绘制出不同模 块中多个过程之间的调用图(Call Graph)。本文档第 4 部分详细介绍了 ROSE 实现的调用图的定义。
你在生成 Oberon-0 语言的语法分析程序时,可以直接使用实验二由 JFlex 生成的 Oberon-0 语言的词法分析程序。
以你编写的源文件为输入运行 JavaCUP,得到 Oberon-0 语言语法分析程序的若 干 Java 源代码;编译这些 Java 源程序生成相应的字节码,再分别利用自己在实 验一编写的 Oberon-0 源程序及其变异程序测试生成的结果,看看你生成的语法 分析和语法制导翻译程序能否正确地识别出 Oberon-0 源程序中的各类错误,并 且能否针对正确的 Oberon-0 源程序输出期望的调用图。
2.3.4 实验步骤 3.4、讨论不同生成工具的差异
比较两种流行的语法分析程序自动生成工具之间的差异:JavaCUP 和 GNU Bison,主要讨论这两种软件工具接收输入源文件时,在语法规则定义方面存在 的 差 异 。 关 于 GNU Bison 工 具 的 官 方 资 料 可 在 网 站 http://www.gnu.org/software/bison/bison.html 找到。
同样基于 Java 语言的分析器生成工具(Parser Generator,即 Compiler Compiler), 还有一个名为 JavaCC 的工具。在网上搜索并浏览关于 JavaCC 的相关信息,用 最扼要的一两句话指出 JavaCC 与 JavaCUP 的最核心区别。
contact me on V help-assignment
标签:JavaCUP,Java,程序,生成,2.2,Oberon,语法分析 From: https://blog.csdn.net/telnet3000/article/details/140082076