首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 教育频道
学院论坛 | 推荐专题 | 专家答疑 | Flash剧场 | Photoshop | 名词解释 | 梦幻桌面 | PS高手进阶 | QQ区 | 壁纸 | 黑客教材
Flash教程| 动画制作 | AutoCAD  | 3DMax专区 | PS视频教程| 网页制作 | CorelDRAW| Firework | 滤镜与实例 | 全部视频教程
学院热点专题
|21互联专区| 照片处理 | QQ 动画 | 系统优化 | 会声会影 | 制作游戏 | Win2003 | 大话成语 | MSN专题 | 头条
| 天音听听 | QQ 技巧  | ASP教程 | 菜鸟入门 | 实用工具 | ADSL宽带 | 硬盘世界| BT  下载 | Vista  | 问吧
   1991年,Sun Microsystems公司开始研究一种新的计算机语言,这种语言最后撼动了传统编程的基础。起初,这种语言被命名为Oak,到1995年正式命名为Java。Java在两个方面改变了编程的过程。第一,Java集成了有利于编制Internet程序的特性。第二,Java发展了计算机语言的精髓。因此,Java的重要性体现在两点:对Internet的内嵌支持和对计算机语言发展的推动。这两点中的任何一点都足以使Java成为一种出色的语言;但是只有将这两点成功地结合起来,Java才能成为一种伟大的语言,才能确定它在计算机历史中的地位。

回目录 |  [1]  [2]  [3]  [4]  [5] [6] [7]  | 上一章 | 下一章

 
解释器

  SBasic的解释器部分是实际执行程序的代码。一般而言,解释执行一个Small BASIC程序的工作相当容易,因为每个语句(赋值语句除外)都会以一个关键字开头。因此,解释器的工作就是从每行程序代码的开头获得关键字,然后执行关键字所指定的操作。解释器不断重复这个过程,直到解释完整个程序。在本节剩下的篇幅中,将详细分析解释器的每个组成部分。

  3.5.1 InterpreterException类

  解释器代码文件首先定义了InterpreterException类。当解释过程发生错误时就会抛出该类型的异常。使用SBasic的代码必须处理这个异常。语法错误、I/O错误和数值表达式中的错误都能引起该异常。

  3.5.2 SBasic构造函数

  下面列出SBasic的构造函数:

  // Constructor for SBasic.
  public SBasic(String progName) 
   throws InterpreterException {
   char tempbuf[] = new char[PROG_SIZE];
   int size;
   // Load the program to execute.
   size = loadProgram(tempbuf, progName);
   if(size != -1) {
   // Create a properly sized array to hold the program.
   prog = new char[size];
   // Copy the program into program array.
   System.arraycopy(tempbuf, 0, prog, 0, size);
   }
  }

  SBasic的构造函数接受一个文件名作为参数,指定需要解释的Small BASIC程序源文件。然后创建一个临时缓冲区,以保存读入的源文件。这个缓冲区的大小由PROG_SIZE指定,这个值已经被强制设置为10,000。这也是一个SBasic所能解释的程序的最大长度。在必要的时候,可以方便地改变这个数值。

  接下来,构造函数调用loadProgram()方法,该方法读入源程序并返回其字符个数,如果读取失败则返回–1。然后构造函数创建一个长度与该程序长度相同的数组,并将它的一个引用赋给变量prog。最后整个程序被复制到这个新的队列。因此,prog指向的数组的长度与源程序的长度是完全相同的。

  loadProgram()方法的代码如下:
  // Load a program.
  private int loadProgram(char[] p, String fname)
   throws InterpreterException
  {
   int size = 0;
   try {
   FileReader fr = new FileReader(fname);
   BufferedReader br = new BufferedReader(fr);
   size = br.read(p, 0, PROG_SIZE);
   fr.close();
   } catch(FileNotFoundException exc) {
   handleErr(FILENOTFOUND);
   } catch(IOException exc) {
   handleErr(FILEIOERROR);
   } 
   // If file ends with an EOF mark, back up.
   if(p[size-1] == (char) 26) size--;
   return size; // return size of program
  }

  这个方法的大部分代码都简单易懂,但请特别注意这几行:

  // If file ends with an EOF mark, back up.
  if(p[size-1] == (char) 26) size--;

  正如注释中说明的那样,这行代码丢弃了代表文件结束的EOF标志。众所周知,有些文本编辑器在文件结尾附加一个文件结束标记(通常是值为26的一个ASCII码),然而有些编辑器不附加任何标记。loadProgram()的做法是:判断文件是否有结束标志,如果有就将它删除,这样能同时处理两种情况。


回目录 |  [1]  [2]  [3]  [4]  [5] [6] [7]  | 上一章 | 下一章

图书简介
本书目录
第一部分 Java 精 髓
· 完全集成的异常机制
· 对多态性支持的改进
· 可移植性和安全性
· 丰富的Java API
· Applet
· 继续变革
第二部分 递归下降的表达式解析器
· 表达式
· 解析表达式
· 表达式的解析
· 表达式的分解
· 表达式解析器
· 向解析器中添加变量
· 解析器中的语法检查
· 计算器Applet
· 一些尝试
第三部分 使用Java实现语言解释器
· 使用Java的原因
· 解释计算机语言
· 解释器概述
· Small BASIC解释器
· Small BASIC表达式解析器
· 解释器
· Small BASIC的使用
· 进行增强和扩展
· 创建计算机语言
热点排行(Top10)

热门关键字:手机 | 笔记本 | MP3 | 移动存储 | 数码相机 | 数码摄像机 | 显示器 | 学院 | 软件下载 | 游戏 | IT女性 | 方案库

关于eNet | 广告服务 | 我们的产品 | 使用版权 | 投稿指南 | 诚邀加盟 | 联系我们

网站合作、内容监督、商务咨询:010-65245588
对本站有任何建议、意见或投诉,请点这里在线提交
Copyright © 1998--2007 硅谷动力公司版权所有

未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
【声明】本网站部分内容属论坛网友发布,本网站仅提供网友交流平台,但有权在本网站
范围内引用、发布、转载来自论坛网友发布的内容。网友发布内容纯属个人行为,与本网
站立场无关。本网站对于论坛网友发布的内容所引发的版权、署名权的异议及纠纷,不承
担任何责任。其他媒体转载须事先与原作者和本网站联系。
京ICP证000044