首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 教育频道
学院论坛 | 推荐专题 | 专家答疑 | 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]  | 上一章 | 下一章

 
解释器

  3.5.3 关键字

  Small BASIC解释器只能解释BASIC语言的一个子集,包括以下关键字:

  在SBasic中,这些关键字和行结束符EOL的内部表示分别以final类型进行声明,如下所示:

  // Internal representation of the Small BASIC keywords.
  final int UNKNCOM = 0;
  final int PRINT = 1;
  final int INPUT = 2;
  final int IF = 3;
  final int THEN = 4;
  final int FOR = 5;
  final int NEXT = 6;
  final int TO = 7;
  final int GOTO = 8;
  final int GOSUB = 9;
  final int RETURN = 10;
  final int END = 11;
  final int EOL = 12;
  注意UNKNCOM这个变量。lookUp()方法使用这个值来表示未知的关键字。

  为了便于将关键字从外部表示转换为相应的内部表示,所有的外部表示和内部表示都保存在一个名为kwTable的表中。这个表由Keyword对象所组成。Keyword类和kwTable的定义如下所示:

  // This class links keywords with their keyword tokens.
  class Keyword { 
   String keyword; // string form 
   int keywordTok; // internal representation 
   Keyword(String str, int t) {
   keyword = str;
   keywordTok = t;
   }
  }
  /* Table of keywords with their internal representation.
   All keywords must be entered lowercase. */
  Keyword kwTable[] = { 
   new Keyword("print", PRINT), // in this table. 
   new Keyword("input", INPUT),
   new Keyword("if", IF),
   new Keyword("then", THEN),
   new Keyword("goto", GOTO),
   new Keyword("for", FOR),
   new Keyword("next", NEXT),
   new Keyword("to", TO),
   new Keyword("gosub", GOSUB),
   new Keyword("return", RETURN),
   new Keyword("end", END)
  };

  lookup()方法就是使用kwTable表,将关键字标识符转换为相应的内部表示。如果kwTable表中没有匹配标识符,lookup()将返回UNKNCOM。lookup()方法的代码如下:

  /* Look up a token's internal representation in the
   token table. */
  private int lookUp(String s)
  {
   int i;
   // Convert to lowercase.
   s = s.toLowerCase();
   // See if token is in table.
   for(i=0; i < kwTable.length; i++)
   if(kwTable[i].keyword.equals(s))
   return kwTable[i].keywordTok;
   return UNKNCOM; // unknown keyword
  }
  3.5.4 run()方法

  SBasic对象创建之后,解析器调用run()方法执行它先前读入的程序。run()的代码如下所示:

  // Execute the program.
  public void run() throws InterpreterException {
   // Initialize for new program run.
   vars = new double[26]; 
   fStack = new Stack();
   labelTable = new TreeMap();
   gStack = new Stack();
   progIdx = 0;
   scanLabels(); // find the labels in the program 
   sbInterp(); // execute
  }

  run()方法首先分配4个数据结构:一个保存变量值的数组,一个保存FOR循环的堆栈,一个保存标签的树图(TreeMap)和一个保存GOSUB子函数的堆栈。接下来progIdx变量被置为0,它保存着程序当前被解释的位置。每次调用run()方法时,这些域都会被重新设置,这样解释器就能够重复解释执行相同的程序。

  然后调用的是scanLabels()方法,它扫描整个程序,找到所有的标签。每找到一个标签,解释器都把这个标签连同它的位置一起保存到labelTable图中。这些操作可以在程序执行之前加快程序的执行速度。

  最后,解析器调用sbInterp()方法开始程序的执行过程。

回目录 |  [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