a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 96|回复: 0

[基础知识] Java基础:Interpreter模式

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
Interpreter 定义:   定义语言的文法 ,并且建立一个解释器来解释该语言中的句子.
( J) a3 h0 W- n5 u2 i2 U  Interpreter 似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造一个语言的文法.我们还是来简单的了解一下:
- m# x! D+ b) M) ~4 a/ T, H  s  首先要建立一个接口,用来描述共同的操作.( G7 [- p, [5 l6 q9 S$ h
  public interface AbstractExpression {# {4 F9 k% u- I, Z# z& G; a
  void interpret( Context context );
4 t9 u! z; q' T, a  }
+ `6 @+ y  M' p6 _' p5 V  再看看包含解释器之外的一些全局信息  D# X  R5 f" R9 A6 P
  public interface Context { }
3 @3 \+ ?" B. g1 \7 Q# Z  AbstractExpression 的具体实现分两种:终结符表达式和非终结符表达式:* R. i# K# k) ?0 H. s; ^6 Y3 J
  public class TerminalExpression implements AbstractExpression {2 s$ j* d; w) |! x
  public void interpret( Context context ) { }
: R# C2 ?, D' M* H+ e  }! l: i' ]0 l% M/ u5 C2 p7 V, w
  对于文法中没一条规则,非终结符表达式都必须的:# n! [7 g/ ?5 O7 x
  public class NonterminalExpression implements AbstractExpression {
% `% j+ [6 U) K2 e9 S- D  private AbstractExpression successor;
; k& N# D8 l! Q, w  public void setSuccessor( AbstractExpression successor ) {; [. Y! A; Z! B4 b. x- I
  this.successor = successor;/ o! v8 I8 G7 b" |/ t7 G
  }8 r* D' t( ?2 G( o# m2 ?, r
  public AbstractExpression getSuccessor() {& T$ @- |1 H' k7 h/ J) i3 K
  return successor;! @, ^) t4 w9 T, X
  }
: w' I- t; _9 w* p3 n- v$ D. V4 |  public void interpret( Context context ) { }+ r+ {5 C7 ]$ W
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-29 16:50 , Processed in 0.280706 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表