- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用Java实语言解释器
使用Java实现语言解释器
大多数程序员都曾经梦想着创造自己的计算机语言。坦率地说,能够创造、控制、增强和修改属于自己的计算机语言,这种想法确实非常具有吸引力。然而,只有极少数程序员认为,实现这个想法是一件非常容易和令人愉悦的事情。开发一个功能齐备的编译器(例如Java编译器)的确是一项艰巨的任务。但是相比之下,创建一个语言解释器却简单得多。
尽管解释器和编译器都以应用程序源代码作为输入内容,但是它们对这些源代码的处理过程却截然不同。编译器将程序的源代码转化为可执行代码的形式。通常情况下,这种可执行代码由计算机的CPU指令组成,因此可以直接在计算机上执行。例如,C++即采用这种编译方式。还有一种情况,编译器输出一种可移植的中间代码,它们由运行时系统执行。Java采用的就是这种方式。在Java中,称这种中间代码为“字节码 ”。
解释器的工作原理则完全不同。它顺序读入程序的源代码,然后依次执行每一条语句。因此,解释器并不真正将源代码转化为目标代码,而是直接执行程序。尽管使用解释器执行程序的速度比将相同的程序编译成目标代码后再执行的速度慢,但是解释器仍然在编程中被广泛使用。原因有以下几个方面:
第一,解释器能够提供真正的交互式环境,由解释器执行的程序能够根据用户的指令暂停或者恢复运行。这种交互式环境在机器人技术等方面用途很广。第二,语言解释器的先天特性决定了它们特别适合于交互式的程序调试。第三,解释器最适合于作为“脚本语言”,比如数据库查询语言等。第四,语言解释器使得同一个程序运行于不同类型的平台成为可能。此时惟一的工作只是为每个新环境实现解释器的运行包。
在有些情况下,术语“解释器”的含义与刚才所描述的情况有所不同。例如,最初的Java运行时系统被称为“字节码解释器”。但是这种解释器与本章中介绍的解释器的类型并不完全相同。字节码是一组高度优化的可移植的机器指令,而Java运行时系统则为字节码提供一个执行环境。然而Java运行时系统并不直接执行源代码,而是执行可移植的机器代码。这也是Java运行时系统被称为Java虚拟机的原因。
本章将要介绍的解释器代码不仅有趣而且实用。同时,它还充分显示了Java语言简单高效的特性。与第2章中介绍的解析器相同的是,这个语言解释器也使用“纯代码”编写。同时,解释器也是一个相当复杂的程序,但是使用Java语言实现起来却非常简单,这也是Java语言功能多样化的一个例证。此外,解析器代码的简洁还显示了Java语法和库的强大表达能力。
3.1 解释何种计算机语言
在构造解释器之前,首先必须确定将要解释的语言类型。尽管Java似乎是个不错的选择,但是它过于庞大和复杂。即使选取Java语言的一个小的子集也显得太大了,因为我们只打算利用一章的篇幅进行讲解。而且,通常情况下也没有必要为一个像Java那么强大的语言编写解释器;相反地,编写一个解释器处理某种相对简单的计算机语言倒是可行的。因此,更好的做法是选择一种易于解释、较为简单的语言。BASIC语言的早期版本就非常符合这些标准,因此在此选择了BASIC语言的一个子集,将其作为本章中所介绍的解释器的解释语言。在下文中将称这个子集为Small BASIC。
本章选择了这个类BASIC语言有3方面原因。第一,BASIC语言最初正是为解释执行而设计的。因此,实现一个BASIC解释器相对比较容易。例如,BASIC语言的早期版本不支持局部变量、递归方法、语句块、类、重载等特征—— 但是以上所有这些特性都将增加BASIC语言的复杂性。虽然缺少了许多功能,但是解释BASIC子集的基本原理同样适用于其他语言。理解本章中介绍的解释器代码,能够为开发其他语言解释器打下基础。选择BASIC的第二个原因是,可以用相对较小的代码量实现一个较为合理的子集。第三,早期的BASIC语言语法简单、容易掌握,几乎不需要用额外的时间来学习。因此,即使一点都不了解传统的BASIC语言,也能够毫无困难地使用Small BASIC。
下面给出一个用Small BASIC编写的程序,可以看到,使用这种语言是多么的简单。即使从来没有见过传统风格的BASIC程序,也能够轻松理解其操作过程。
PRINT A Simple Small BASIC Program
FOR X = 1 TO 10
GOSUB 100
NEXT
END
100 PRINT X
RETURN
该程序运行后得到如下的输出结果:
A Simple Small BASIC Program
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
尽管在Small BASIC语言中关键字的含义几乎一目了然,但是本章仍将详细解释每个关键字。
最后,Small BASIC仿造的是早期的B
您可能关注的文档
- 传热学杨世铭第第二章答案.doc
- 传热学重点章节例题.doc
- 传热学课后答案1-2章.doc
- 传统企业互联网第一案例京东考察暨互联网商业模式解析.docx
- 传统新闻机构对媒体的控制及其影响:基于对国外30家机构内部规范的分析.docx
- 传统医学中有着 的有关肾脏病的记载.doc
- 传统方法学与面象区别.doc
- 传质与分离习题文)钟理.doc
- 传输层协议分析验报告.doc
- 伯乐教育——英语初级教学大纲.doc
- 注册验船师高频真题题库2025.docx
- 注册验船师高频题库带解析2025.docx
- 注册验船师考试必备资料2025.docx
- 注册验船师精选题库带分析2025.docx
- 注册验船师考前冲刺必刷题附答案2025.docx
- 新高考生物二轮复习讲练测第10讲 人体的稳态与免疫调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第7讲 遗传的基本规律与伴性遗传(检测)(原卷版) .docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(检测)(原卷版).docx
文档评论(0)