设计模式(二十三)----解释器模式

目录

1.Interpreter模式

1.1 作用

1.2 示例迷你语言

1.2.1 迷你语言的命令

1.2.2 迷你语言的语法

1.2.3 迷你语言的语法树

1.3 示例程序

1.3.1 示例程序类图

1.3.2 Node抽象类

1.3.3 Node各层具体类

1.3.4 Context类

1.3.5 ParseWarningException异常类

1.3.6 Main类

1.4 Interpreter模式中的角色

1.5 其他特点


1.Interpreter模式

1.1 作用

   在Interpreter模式中,程序要解决的问题会被用非常简单的“迷你语言”表述出来,即用“迷你语言”编写的“迷你程序”把具体的问题表述出来,迷你程序是无法单独工作的,还需要用Java语言编写一个负责“翻译”的程序,这段翻译程序称为解释器。这样的话,当需要解决的问题发生变化时,不需要修改Java语言程序,只需要修改迷你语言程序即可应对,提高了Java程序的复用性。

1.2 示例迷你语言

1.2.1 迷你语言的命令

  • go:前进1米

  • right:右转

  • left:左转

  • repeat:重复

1.2.2 迷你语言的语法

<program> ::= program <command list>
<command list> ::= <command>* end
<command> ::= <repeat command> | <primitive command>
<repeat command> ::= repeat <number> <command list>
<primitive command> ::= go | right | left

1.2.3 迷你语言的语法树

   迷你程序program repeat 4 go right end end的语法树:

 

1.3 示例程序

   示例程序就是实现了一个迷你程序的语法解析器。将迷你程序推导成结构(语法树)的处理,就是语法解析。语法解析时的处理单位标记token

1.3.1 示例程序类图

 

1.3.2 Node抽象类

//语法树中各个部分(节点)中的最顶层的类
public abstract class Node {
    //进行语法解析处理
    public abstract void parse(Context context) throws ParseWarningException;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值