编译原理实验(Oberon-0逆向工程工具ROSE)v1.05.doc

编译原理实验(Oberon-0逆向工程工具ROSE)v1.05.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Version 1.05 June 16, 2010 编译原理实验 Oberon-0逆向工程工具Rose 目 录 1 简介 1 1.1 实验目的 1 1.2 实验环境 1 1.2.1 编程语言 2 1.2.2 开发工具 2 1.2.3 设计风格 2 1.2.4 编码规范 2 1.3 实验计划 2 1.4 诚信声明 2 2 实验内容 3 2.1 实验一、熟悉Oberon-0语言定义 3 2.1.1 实验步骤1.1、编写一个正确的Oberon-0源程序 3 2.1.2 实验步骤1.2、编写上述Oberon-0源程序的变异程序 3 2.1.3 实验步骤1.3、讨论Oberon-0文法定义的二义性 4 2.1.4 提交结果 4 2.1.5 评价标准 4 2.2 实验二、自动生成词法分析程序(JFlex) 4 2.2.1 实验步骤2.1、总结Oberon-0语言的词汇表 5 2.2.2 实验步骤2.2、抽取Oberon-0语言的词法规则 5 2.2.3 实验步骤2.3、下载词法分析程序自动生成工具JFlex 5 2.2.4 实验步骤2.4、生成Oberon-0语言的词法分析程序 5 2.2.5 实验步骤2.5、讨论不同词法分析程序生成工具的差异 5 2.2.6 提交结果 6 2.2.7 评价标准 6 2.3 实验三、自动生成语法分析程序(JavaCUP) 7 2.3.1 实验步骤3.1、下载自动生成工具JavaCUP 7 2.3.2 实验步骤3.2、配置和试用JavaCUP 7 2.3.3 实验步骤3.3、生成Oberon-0语法分析和语法制导翻译程序 7 2.3.4 实验步骤3.4、讨论不同生成工具的差异 8 2.3.5 提交结果 8 2.3.6 评价标准 8 2.4 实验四、手工编写递归下降预测分析程序(选做) 9 2.4.1 实验步骤4.1、设计Oberon-0语言的翻译模式 9 2.4.2 实验步骤4.2、编写递归下降预测分析程序 9 2.4.3 实验步骤4.3、语法分析讨论:自顶向下 vs. 自底向上 9 2.4.4 提交结果 9 2.4.5 评价标准 10 3 Oberon-0语言 11 3.1 简介 11 3.2 词法定义 11 3.2.1 单词 12 3.2.2 基本数据类型 12 3.3 语法定义 12 3.3.1 扩展BNF(EBNF) 12 3.3.2 Oberon-0语言的EBNF定义 12 3.4 语言描述 14 3.4.1 模块声明 14 3.4.2 运算符与表达式 14 3.4.3 类型声明 14 3.4.4 选择符 15 3.4.5 作用域规则 15 3.4.6 过程声明与参数传递 15 3.4.7 预定义函数 15 3.5 例子程序 15 4 逆向工程工具 17 4.1 调用图 17 4.1.1 调用图定义 17 4.1.2 调用图例子 17 4.1.3 参考文献 18 4.2 流程图 19 4.2.1 流程图定义 19 4.2.2 流程图例子 19 5 实验软装置 21 5.1 目录和文件组织 21 5.2 异常类设计 21 5.2.1 异常类程序包 21 5.2.2 通用异常类 21 5.3 词法分析实验软装置 22 5.3.1 词法错误的异常类 22 5.3.2 词法分析主程序 22 5.3.3 词法分析程序测试用例 23 5.4 语法分析和语法制导翻译实验软装置 23 5.4.1 语法错误的异常类 23 5.4.2 语义错误的异常类 23 5.5 预定义设计图API 23 5.5.1 调用图绘制API 24 5.5.2 流程图绘制API 25 简介 在开始实验之前,请务必花足够时间阅读完本文档关于实验的描述与约定! 实验目的 本实验是编译原理实验环节的一个综合型、应用型实验,其中还包含部分研究与探索型实验内容。 本实验处理的程序设计语言是Oberon-0,它是著名的Pascal和Modula-2语言的后继者Oberon语言的一个精简子集。学生在本实验中需开发一个面向Oberon-0的逆向工程工具,根据一个输入的Oberon-0源程序自动绘制对应的设计图,这些设计图包括子程序调用关系图和程序控制流设计图(例如程序流程图、PAD图、N_S图等),本实验项目将该工具命名为Rose,意为Reverse Oberon Software Engineering。 本实验借助于Rose工具的设计与实现,帮助学生通过实践深入理解和牢固掌握编译技术中的词法分析、语法分析、语法制导翻译、自动生成工具等重要环节。 本实验的主要目标包括: 掌握词法分析程序的工作原理与构造方法,并能够推广到对文本的串匹配搜索等其他同类型应用。 掌握词法分析程序自动生成工具lex或类似工具(如JFlex)的工作原理与使用方法,学习如何编

文档评论(0)

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

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

1亿VIP精品文档

相关文档