DCS292 编译器构造实验,实验二(2.2)

help-assignment

2.2 实验二、自动生成词法分析程序(JFlex)

实验二要求你下载一个词法分析程序自动生成工具 JFlex,并利用该工具自动产 生 Oberon-0 语言的词法分析程序,该词法分析程序的源代码是用 Java 语言编写的。
2.2.1、 实验步骤2.1、总结 Oberon-0 语言的词汇表
根据 Oberon-0 语言的 BNF 定义和语言描述,抽取 Oberon-0 语言的词汇表以供词 法分析程序设计与实现之用。你需要将 Oberon-0 的所有单词分类,并以表格形 式列出各类词汇的预定义单词;譬如,在保留字表中列出所有的保留字,在运算 符表中列出所有的运算符,等等。
请在实验报告中说明你的单词分类的理由,并解释如何处理 Oberon-0 语言中保 留字和关键字两类略有不同的单词。
2.2.2 实验步骤 2.2、抽取 Oberon-0 语言的词法规则
在 Oberon-0 语言的 BNF 定义中,既包括 Oberon-0 语言的语法定义部分,也包括 Oberon-0 语言的词法定义部分。请将词法定义从 Oberon-0 语言的 BNF 中分离出 来,并写成正则定义式(Regular Expression)的形式。
然后,在实验报告中讨论与 Pascal 、C/C++、Java 等常见高级程序设计语言的词 法规则相比,Oberon-0 语言的词法规则有何异同。
2.2.3 实验步骤 2.3、下载词法分析程序自动生成工具JFlex
实验二指定的词法分析程序自动生成工具选用由 Gerwin Klein 开发的JFlex。这 是一个类似 Unix 平台上 lex 程序的开源(Open Source)软件工具,遵循 GNGeneral Public License(GPL)。JFlex 本身采用 Java 语言编写,并且生成 Java 语 言的词法分析程序源代码。该软件工具的前身是由美国普林斯顿大学计算机科学 系 Elliot Berk 开发、C. Scott Ananian 负责维护的 JLex。
从 http://www.jflex.de/可下载该工具,当前的最新稳定版本是 2020 年 5 月发布的 JFlex 1.8.2。该网站提供的压缩文件中已包含了你在本实验中所需的各类资源, 包括该工具的 Java 源代码、支持运行的库文件与脚本文件、用户文档、输入源 文件例子等。
根据你自己的安装配置,修改JFlex 安装目录下脚本文件 bin\jflex.bat 中的 两个环境变量 JFLEX_HOME 和 JAVA_HOME 的设置。然后运行 JFlex 附带的输入 源文件例子,以验证你是否正确安装并配置了 JFlex。
如果你觉得 JFlex 附带的用户手册仍不足以帮助你掌握 JFlex 的原理或用法,自己动手在网上查找其他关于 JLex、GNU Flex、lex 等类似工具的大量电子资源。
2.2.4 实验步骤 2.4、生成 Oberon-0 语言的词法分析程序
仔细阅读 JFlex 的使用手册,根据你在实验步骤 2.1 给出的 Oberon-0 语言词法规则的正则定义式,编写一个JFlex 输入源文件。
本实验提供的实验软装置为实验二预定义了代表 Oberon-0 语言各种词法错误的 异常类,并为实验二设计了主程序 main()。你在实验二中不要改变 main()的 内容,并且在你的词法分析程序中应根据词法错误的类别抛出相应的异常类。实 验软装置还提供了一批测试用例,用于检测你的程序是否能够识别出词法错误并 正确地对词法错误进行分类(通过抛出的异常类标识错误类别)。关于 ROSE 实 验软装置的详细描述请参阅本文档第 5 部分。
以你编写的源文件作为输入运行 JFlex,得到一个 Oberon-0 语言词法分析程序的 Java 源代码;编译该源程序生成 Java 字节码。通过实验软装置提供的测试用例 检查后,利用你在实验一编写的所有 Oberon-0 源程序测试你的词法分析程序。

contact me on V help-assignment

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值