• 解释器模式 Interpreter


    代码例子

    参考

    1、解释器模式定义

    给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

    说明:解释器模式设计到文法规则和抽象语法树。

    2、解释器模式的结构

    解释器模式包含四个角色:

    1)抽象表达式(AbstractExpress):声明抽象的解释操作,它是所有终结符表达式和非终结符表达式的公共父类。

    2)终结符表达式(TerminalExpress):是抽象表达式的子类,实现了与文法中的终结符相关联的解释操作,句子中的每一个终结符都是该类的一个实例。

    对于非终结符表达式,其代码相对来说比较复杂,可以通过非终结符表达式组合成更加复杂的结构。

    3)非终结符表达式(NonterminalExpress):是抽象表达式的子类,实现了文法中非终结符表达式的解释操作。在非终结符表达式中可以包含终结符表达式,也可以包含非终结符表达式,其解释操作一般用递归来实现。

    4)环境类(Context):又称为上下文类,用于存储解释器之外的一些全局信息。在该类中一般包含一个HashtableList等类型的集合对象,存储一系列公共信息,例如变量名与值的映射关系(key/value)等。

     

    3、解释器模式的优点

    1)易于改变或扩展文法;

    2)实现文法较为容易;

    3)符合开闭原则。

    4、解释器模式的缺点

    1)对于复杂文法难以维护;

    2)执行效率较低。

     

  • 相关阅读:
    77. Combinations
    76. Minimum Window Substring
    75. Sort Colors
    74. Search a 2D Matrix
    73. Set Matrix Zeroes
    72. Edit Distance
    71. Simplify Path
    70. Climbing Stairs
    线段树+欧拉函数——cf1114F
    区间dp——好题cf1132F
  • 原文地址:https://www.cnblogs.com/rockywood/p/6642479.html
Copyright © 2020-2023  润新知