- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Java的编译原理课程案例教学方法初探
摘要:针对编译原理教学实际,在分析和修改工业级开源编译器实现代码的基础上,提出一个基于Java的编译原理课程案例教学过程,结合Java这种日益普及的面向对象程序设计语言,这种教学过程在编译原理课程教学方面取得良好效果。
关键词:Java字节码;Java类文件;Javac;Java编译器;编译原理
编译原理是计算机与软件专业的核心基础课程,是关联汇编语言程序设计、高级语言程序设计等相关课程的纽带。如何深入进行编译原理课程教学改革,更好地帮助学生理解和掌握编译器的设计原理与基本实现方法,更好地在教学过程中体现计算机软件核心思想,更好地依托一个载体紧密结合工程实践与理论研究,是新时期编译原理课程教学面临的挑战。
1案例教学在编译原理中的作用
1.1编译原理课程的内容组织
编译原理在软件学科中占据核心位置,起着重要作用。编译原理包括词法分析、语法分析、语义分析和中间代码生成、代码优化、运行时存储组织等[1]。除了上述基本知识点外,了解编译原理在现实世界中的广泛应用,知道编译器在计算机与软件专业课程体系中的关键地位,是激发学生认真学习和掌握本门课程基础知识及专业工具的有效手段。
1.2案例教学的作用
为了更有效地组织编译原理课程的教学工作,避免传统式教育存在的“重基础、轻实践”的弊端[2],针对新时期研究型大学本科生的特点,我们提出了如下基于主流编译器的编译原理课程案例教学方法:先让学生对编译原理课程的教学载体,即一个较为完整的编译器,建立初步认识,再借助学生较强的自学能力和动手能力,在实践中学习和体会程序设计语言编译过程的基本原理,切实保证理论联系实践,尤其是强调“学中练、练中学;练中闯、练中创”[3]。首先让学生了解一个典型编译器的输入和输出,同时通过图形化方式使得学生对编译过程的主要阶段建立感性认识;进而熟悉作为课程载体的一个编译器原型,并对其进行改造;最终达到学习编译原理基础知识,并对规范化程序设计有所深入理解的目的。
2基于Java的编译原理案例实验设计
作为一个主流的面向对象程序设计语言,Java已经占据了近20%的份额[4],在计算机网络等应用中起着越来越重要的作用,不仅覆盖了从大型网络应用系统开发到SIM卡芯片上的认证程序等大量应用,而且保持着强劲的发展势头。鉴于此,本课程考虑基于Java的编译原理案例教学。
2.1实验设计
基于Java的编译原理实验包括了解实验目标和进行具体实验操作两阶段。实验目标包括源、目的和转换过程三部分,分别涉及对源语言(Java程序设计语言)的理解,对目标语言(Java类文件,包括Java字节码)的理解,和对编译过程的理解。鉴于前导课程Java语言程序设计已充分介绍了Java源程序,本课程主要介绍后两部分。
具体的实验操作可以细分三个层面。一为使用现有词法器/语法器的自动生成工具(如JLex、CUP)实现一个Java编译器,二为依据编译原理的基础理论手工设计实现一个Java编译器,三为构造词法器/语法器等程序的自动生成工具,并基于这些工具实现Java编译器。可根据具体教学情况侧重某一层面。
2.2Java类文件的讲授
Java类文件包含常量池、接口表、域表、方法表和属性表等信息。Java字节码是Java类文件的关键组成部分,字节码序列出现在方法的Code属性项中。为了让学生了解Java源程序的编译过程,并掌握Java类文件的结构,采用如下案例。首先给出一个简单的Java源文件然后将上述文件编译为Java类文件,并通过“javap ?Cc Act”命令展示对应的字节码序列,并向学生予以讲解。接着,按十六进制打印输出Act.class文件(如图1所示),并在课堂上作为补充材料发给学生。
进一步地,我们通过一个Java Applet程序(如图2所示)向学生逐步展示Java虚拟机是如何以流的方式单步装载图1中的Java类文件的[5]150,并在补充材料上予以标注学习。
2.3Java编译过程的图形化展示
在讲解编译过程时,充分考虑以图形化方法展示关键步骤,使学生们能够首先建立感性认识,进而研讨具体的编译算法并为此制作一些演示程序。例如,我们通过prefuse工具,制作了从源程序到词法单元(token)流的映射过程。对于输入的一段Java源程序,可以形象地以树的方式展示其对应的token集合。如图3所示,对应左侧窗口的一个Java源程序,在右侧窗口出现一个词法单元序列。除了注释符和空白符号外,源文件中的每个词素都对应一个词法单元,包括词法单元名字和属性值。
在语法分析过程中,也通过可视化的方式将一个语句块及其对应的树状结构予以形象表达。如图
您可能关注的文档
- 基于C程序冒泡排序算法的研究与改进.doc
- 基于C语言程序设计的常见错误分析.doc
- 基于C语言的ARM嵌入式程序设计教学探讨.doc
- 基于C语言的多功能智能机器甲虫的研制.doc
- 基于CTI呼叫中心的ACD算法研究.doc
- 基于C语言的交叉通讯系统的设计.doc
- 基于C语言的文件处理程序的实现与分析.doc
- 基于C语言的字数统计.doc
- 基于CPLD的交通灯控制器的设计.doc
- 基于DAA的移动Ad Hoc网络匿名认证方案.doc
- 2023咸阳职业技术学院招聘笔试真题参考答案详解.docx
- 2023四川化工职业技术学院招聘笔试真题及参考答案详解.docx
- 2023哈尔滨职业技术学院招聘笔试真题及参考答案详解.docx
- 2023商洛职业技术学院招聘笔试真题及答案详解1套.docx
- 2023呼伦贝尔职业技术学院招聘笔试真题参考答案详解.docx
- 2023南阳农业职业学院招聘笔试真题参考答案详解.docx
- 2023天津公安警官职业学院招聘笔试真题带答案详解.docx
- 2023年上海电机学院招聘笔试真题参考答案详解.docx
- 2023年四川艺术职业学院招聘笔试真题参考答案详解.docx
- 2023安徽体育运动职业技术学院招聘笔试真题及答案详解一套.docx
文档评论(0)