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

 
表达式的分解

  为了计算表达式的值,解析器需要分解出表达式的独立元素。例如表达式:

   A * B – (W + 10)

  包括下面这些独立元素:A、*、B、–、(、W、+、10和)。在解析术语中,这样的表达式元素被称为标识符(token),表示表达式中一个不可再分的独立单元。在详细介绍解析器之前,先看看表达式的标识方法,因为它是解析的基础。

  为了将表达式分离为单个标识符,需要设计一个过程,从头到尾地扫描表达式,并顺序地返回表达式的每个标识符。该方法必须确定每个标识符的类型,而且必须识别表达式的结尾。在本节介绍的解析器中,实现这些功能的方法名为getToken()。

  本章介绍的两个解析器都封装在Parser类中。尽管下文对这个类进行了详细描述,但是现在必须提前说明它的第一部分,以便读者理解getToken()方法的工作过程。Parser类首先定义了一些final变量和域,如下:

  class Parser {

  // These are the token types.

  final int NONE = 0;

  final int DELIMITER = 1;

  final int VARIABLE = 2;

  final int NUMBER = 3;  

  // These are the types of syntax errors.

  final int SYNTAX = 0;

  final int UNBALPARENS = 1;

  final int NOEXP = 2;

  final int DIVBYZERO = 3;

  

  // This token indicates end-of-expression.

  final String EOE = "\0";

  

  private String exp; // refers to expression string

  private int expIdx; // current index into the expression

  private String token; // holds current token

  private int tokType; // holds token's type

  在表达式解析的过程中,每个标识符必须有一个与之相关的类型。因此Parser类首先定义了几个常数,表明标识符的各个不同类型。本章中所介绍的解析器只用到3种类型:变量、数值和分隔符,它们分别由常量VARIABLE、NUMBER和DELIMITER表示。DELIMITER既可以是运算符,也可以是括号。此外,NONE类型仅仅作为未定义标识符的一个占位符。

  接下来,Parser定义了另外几个错误常量,它们代表解析和计算表达式的过程中可能发生的不同类型的错误。SYNTAX代表所有导致非正则表达式的错误;UNBALPARENS表示括号不对称的错误;如果解析器执行时没有表达式被提交,就会报告一个NOEXP错误;DIVBYZERO则表示除数为零的错误。

  final变量EOE标志解析器已达到表达式的结尾。

  被解析的表达式保存在一个字符串中,exp变量则存储对该字符串的一个引用。这样,exp就可以指向一个形如“10+4”的字符串。而此字符串中的下一个标识符的索引保存在expIdx变量中,初始索引值为0。当前获得的标识符存储在token变量中,其类型则存储在tokType变量中。这些域的属性都是private类型,因为它们只允许由解析器使用并且不能被外部代码修改。

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

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

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

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

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