zoukankan      html  css  js  c++  java
  • 解释器模式

    参考文章:

    http://www.cnblogs.com/chenssy/p/3346427.html

    定义:

    定义语言的文法,并且建立一个解释器来解释该语言中的句子。

    uml类图:

    模式组成:

    • AbstractExpression: 抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。
    • TerminalExpression: 终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中每一个终结符都有一个具体的终结表达式与之相对应。
    • NonterminalExpression: 非终结符表达式。为文法中的非终结符相关的解释操作。
    • Context: 环境类。包含解释器之外的一些全局信息。

    优点:

    • 可扩展性比较好,灵活
    • 增加了新的解释表达式的方式
    • 易于实现文法

    缺点:

    • 执行效率比较低,可利用场景比较少
    • 对于复杂的文法比较难维护

    应用场景:

    • 有一个简单的语法规则,比如一个sql语句,如果我们需要根据sql语句进行rm转换,就可以使用解释器模式来对语句进行解释。
    • 一些重复发生的问题,比如加减乘除四则运算,但是公式每次都不同,有时是a+b-c*d,有时是a*b+c-d,等等等等个,公式千变万化,但是都是由加减乘除四个非终结符来连接的,这时我们就可以使用解释器模式。
        • java.util.Pattern
        • java.text.Normalizer
        • java.text.Format
  • 相关阅读:
    Scrum Works 1.84安装
    使用Sandcastle Styles 来生成VS2008的帮助文档.
    NDoc 用户指南(转)
    第一章 C#语言基础(C# Language Elements)
    SQL Server 2005 中删除重复记录
    SDE 远程连接
    C# 按钮美化技巧
    SOP 中的 Service
    C# DateTime赋值为null
    C# WebBrowser显示html字符串
  • 原文地址:https://www.cnblogs.com/amei0/p/7976778.html
Copyright © 2011-2022 走看看