您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
深入浅出基于Java的解释器设计模式
[文章信息]
作者:Ai92
时间:2005-01-10
出处:csdn
责任编辑:方舟
[文章导读]
解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中
advertisement
热点推荐
· Firefox1.0 革新你的浏览器 
· ARP欺骗技术实现原理分析
· 网络让我们走近希望工程
· Windows任务栏应用之独孤九技
· 在线为系统做全面“体检”
[正文]

1 2  下一页

  一、引子

  其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。

  虽然你几乎用不到这个模式,但是看一看还是能受到一定的启发的。

  二、定义与结构

  解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。

  在GOF的书中指出:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好。

  这也就是解释器模式应用的环境了。

  让我们来看看神秘的解释器模式是由什么来组成的吧。

  1) 抽象表达式角色:声明一个抽象的解释操作,这个接口为所有具体表达式角色(抽象语法树中的节点)都要实现的。

  什么叫做抽象语法树呢?《java与模式》中给的解释为:抽象语法树的每一个节点都代表一个语句,而在每个节点上都可以执行解释方法。这个解释方法的执行就代表这个语句被解释。由于每一个语句都代表这个语句被解释。由于每一个语句都代表一个常见的问题的实例,因此每一个节点上的解释操作都代表对一个问题实例的解答。

  2) 终结符表达式角色:具体表达式。

  a) 实现与文法中的终结符相关联的解释操作

  b) 而且句子中的每个终结符需要该类的一个实例与之对应

  3) 非终结符表达式角色:具体表达式。

  a) 文法中的每条规则R::=R1R2…Rn都需要一个非终结符表带式角色

  b) 对于从R1到Rn的每个符号都维护一个抽象表达式角色的实例变量

  c) 实现解释操作,解释一般要递归地调用表示从R1到Rn的那些对象的解释操作

  4) 上下文(环境)角色:包含解释器之外的一些全局信息。

  5) 客户角色:

  a) 构建(或者被给定)表示该文法定义的语言中的一个特定的句子的抽象语法树

  b) 调用解释操作

  放上张解释器结构类图吧,这也是来自于GOF的书中。


  对每一个角色都给出了详细的职责,而且在类图中给出五个角色之间的关系。这样实现起来也不是很困难了,下面举了一个简单的例子,希望能加深你对解释器模式的理解。


1 2  下一页

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 认识JDBC 2.0中的高级数据类型
  • 在Java中轻松实现界面跳转
  • JBuilder 2005代码审查功能体验
  • 澄清Java语言接口与继承的本质
  • Java数据对象(JDO)的前世今生
  • 马化腾:一个空手套高手 曾经差点卖掉QQ
  • 国产网络游戏《航海世纪》打入韩国欧美市场
  • 海信进军海外弃走低端 瞄准美国中高端市场
  • “黑客手机”南京面世 据称可窃听他人隐私
  • UT斯达康第四季度预亏 小灵通市场低迷?
  • 联想披露短期发展计划 勾勒ThinkPad战略
  • 索尼中国产业链布局新功夫 媒体王国身影渐明
  • APEX案出第四个“倒霉蛋” 宏图高科也被卷入
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    温馨祝福|极品爆笑|生肖属相|StarQ|体育竞技|美好风光|每逢佳节
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 冲动的惩罚
    最熟悉的陌生人 绿光
    可爱女人 盛夏的果实
    当你孤单你会想起谁 孤单北半球
    2002年的第一场雪 眉飞色舞
    有多少爱可以重来 挪威的森林
    最浪漫的事 老板电话

    CSEEK搜索