Java与模式笔记(27)

解释器(Interpreter)模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。

解析模式结构与角色

 

抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是interpret()方法,称做解释操作。

终结符表达式(Terminal Expression)角色:这是一个具体角色。实现了抽象表达式角色所要求的接口,主要是一个interpret()方法;文法中的每一个终结符都有一个具体终结表达式与之相对应。

非终结符表达式(Nonterminal Expression)角色:这是一个具体角色。文法中的每一条规则R=R1R2…Rn都需要一个具体的非终结符表达式类;对每一个R1R2…Rn中的符号都持有一个静态类型Expression的实力变量;实现解释操作,即interpret()方法。解释操作以递归方式调用上面所提到的代表R1R2…Rn中的各个符号的实例变量。

客户端(Client)角色:代表模式的客户端有以下功能:建造一个抽象语法树(AST或者Abstract Syntax Tree);调用解释操作interpret()

一般情况下,模式还需要环境(Context)角色:提供解释器之外的一些全局信息,比如变量的真实量值等。

解释其模式适用于以下的情况

1、  系统有一个简单的语言可供解释。

2、  一些重复发生的问题可以用这种简单的语言表达。

效率不是主要的考虑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值