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

  尽管Small BASIC不支持真正的独立子程序,但是程序员可以使用GOSUB关键字调用程序的某一部分。此外,从子程序返回时要用到另一个关键字RETURN。GOSUB和RETURN的一般形式如下所示:

  GOSUB 行号

  ……

  行号

  子程序代码

  RETURN

  调用子程序,即使调用Small BASIC中有限的子程序,也需要使用堆栈。其原因与FOR语句要求使用堆栈的原因大体相同。Small BASIC允许子程序进行嵌套调用,也就是说一个子程序可能会调用另一个子程序。因此必须使用堆栈,保证将一个RETURN语句与其对应的GOSUB关联起来。GOSUB堆栈保存在另一个Stack对象中,这里定义了一个gStack变量保存该Stack对象的引用:

  // Stack for gosubs.
  private Stack gStack;

  gStack中保存着记录程序位置的索引。在解释过程中,每次遇到GOSUB关键字时,就将程序的当前索引压入gStack的顶部;相应地,每次解释执行到RETURN语句时,就从堆栈中弹出返回位置的索引。

  下面给出gosub()和return()方法的代码:

  // Execute a GOSUB. 
  private void gosub() throws InterpreterException
  {
   Integer loc;
   getToken();
   // Find the label to call.
   loc = (Integer) labelTable.get(token); 
   if(loc == null)
   handleErr(UNDEFLABEL); // label not defined 
   else {
   // Save place to return to.
   gStack.push(new Integer(progIdx));
   // Start program running at that loc.
   progIdx = loc.intValue();
   }
  }
  // Return from GOSUB.
  private void greturn() throws InterpreterException
  {
   Integer t;
   try {
   // Restore program index.
   t = (Integer) gStack.pop();
   progIdx = t.intValue();
   } catch(EmptyStackException exc) {
   handleErr(RETURNWITHOUTGOSUB);
   }
  }

  下面介绍GOSUB语句的工作流程。当遇到GOSUB关键字时,调用gosub()方法处理—— 首先查找目标代码行的行号,并将其保存在变量loc中。接着,progIdx的当前值被压入GOSUB堆栈的栈项(当子程序执行完毕时,程序将要返回到这个点上来执行)。最后,将loc中保存的索引赋给progIdx。于是程序就转移到子程序的开始位置,从这里继续执行。当遇到RETURN关键字时,调用return()方法处理——首先将GOSUB堆栈的栈项元素弹出,然后将弹出的值赋给progIdx,于是程序就从GOSUB语句的下一条语句开始继续执行。

  由于返回地址在GOSUB堆栈中保存,因此子程序允许嵌套调用。当执行到RETURN语句时,返回的将是最后被调用的子程序(也就是说,最近被调用的子程序的返回地址处于gstack堆栈的顶部)。从理论上来说,这个过程允许GOSUB嵌套任意多层。

  3.5.13 END语句

  END关键字表示程序执行的结束。但并不是所有程序都需要END语句,因为程序的结尾也能终止程序的执行。程序使用END可以在文件结束之前终止程序的执行。它只是简单地将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