Interpreter(解释器)模式

  1. 特点:Java、kotlin、groovy等JVM编程语言的编译器就是一个解析器,因为它需要正确识别编程语言的语法和逻辑,才能编译出正确的字节码文件,这样JVM才能正常的运行程序,这些编程语言相比于编译器就是迷你语言,类似的还有正则表达式批处理语言等都是属于迷你语言
    使用解析器模式就相当于创建一套迷你编程语言,再创建一个解析器解析迷你语言编写的“程序”。
    解析器模式里主要是定义表达式,定义方式可以参考BNF,相当于编程语言的语法,其次是Context(文脉、上下文),上下文即语境、语意。话出必有因,有因必有果,因从哪里来,果到哪里去。
  2. 角色
角色名称 角色职责
AbstractExpression(抽象表达式) 定义语法树节点的公共接口
TerminalExpression(终结符表达式) 对应BNF中的终结符表达式
NonternimalExpression(非终结符表达式) 对应BNF中非终结符表达式
Context(文脉、上下文) 为语法解析提供上下文信息
Client(请求者) 使用表达式角色推到语法树

BNF:Backus-Naur Form 或 Backus Normal Form 的略称,扩展的巴科斯范式 ,用于描述语法树。

  1. 角色关系

    Interpreter.png

  2. 代码示例:Interpreter

以上文献参考:《图解设计模式》

你可能感兴趣的:(Interpreter(解释器)模式)