行为型模式-解释器模式

时间:2021-07-27 17:11:53
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace 解释器模式
{

/*
* 解释器模式意图:给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
*
* 解释器模式使用场景:1、当一个语言需要解释执行,并且系统将该语言中的句子表示为一个抽象语法树时
* 2、语法的构建复杂,且语法相关的类层次庞大且难以管理,使用解释器模式构建语法树
*
*/

/// <summary>
/// 表达解释抽象类
/// </summary>
public abstract class AbstractExpression
{
public abstract void Interpret(Context context);
}

/// <summary>
/// 终结表达类
/// </summary>
public class TerminalExpression : AbstractExpression
{
public override void Interpret(Context context)
{
// 调用终结符表达式
}
}
/// <summary>
/// 上下文类
/// </summary>
public class Context
{
}
/// <summary>
/// 非终结表达类
/// </summary>
public class NonterminalExpression : AbstractExpression
{
public override void Interpret(Context context)
{
// 调用非终结表达
}
}

public class AppClient
{
public static void Main( string [] args)
{
Context context
= new Context();
// 填充语法树
ArrayList list = new ArrayList();
list.Add(
new NonterminalExpression());
list.Add(
new TerminalExpression());
list.Add(
new NonterminalExpression());

foreach (AbstractExpression expression in list)
{
expression.Interpret(context);
// 将按语法树的顺序调用具体的表达
}
}

}
}