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

    解释器模式(interpreter):给定一个语言,定义它的方法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

    Context命令类,包含解释器之外的一些全局信息。

        class Context
        {
            private string _input;
            public string Input
            {
                get { return _input; }
                set { _input = value; }
            }
    
            private string _output;
            public string Output
            {
                get { return _output; }
                set { _output = value; }
            }
        }

    AbstractExpression抽象类(抽象表达式)

        abstract class AbstractExpression
        {
            public abstract void Interpret(Context context);
        }

    TerminalExpression(终结表达式),实现与方法中的终结符相关联的解释操作。实现抽象表达式中所要求的接口,主要是一个interpret()方法。方法中每一个终结符都有一个具体终结表达式与之相对应。

        class TerminalExpression : AbstractExpression
        {
            public override void Interpret(Context context)
            {
                Console.WriteLine("终端解释器");
            }
        }

    NonterminalExpression(非终结表达式),为方法中的非终结符实现解释操作。对方法中每一条规则R1、R2......Rn都需要一个具体的非终结符表达式类。通过实现抽象表达式的interpret()方法实现解释操作。解释操作以递归方法调用上面所提到的代表R1、R2......Rn中各个符号的实例变量。

        class NonterminalExpression : AbstractExpression
        {
            public override void Interpret(Context context)
            {
                Console.WriteLine("非终端解释器");
            }
        }

    客户端代码

            static void Main(string[] args)
            {
                Context context = new Context();
                IList<AbstractExpression> list = new List<AbstractExpression>();
                list.Add(new TerminalExpression());
                list.Add(new NonterminalExpression());
    
                foreach (var exp in list)
                {
                    exp.Interpret(context);
                }
    
                Console.ReadKey();
            }
  • 相关阅读:
    python3笔记-列表
    python3笔记-字典
    MD侧滑
    SnackBar使用
    TextIInputLayout使用
    Toolbar与SearchView
    Palette使用
    TabLayout使用
    沉浸式-体验
    沉浸式-兼容优化
  • 原文地址:https://www.cnblogs.com/baiqjh/p/2846439.html
Copyright © 2011-2022 走看看