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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容