行为型模式-解释器模式

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace 解释器模式
{

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

///<summary>
/// 表达解释抽象类
///</summary>
publicabstractclass AbstractExpression
{
publicabstractvoid Interpret(Context context);
}

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

publicclass AppClient
{
publicstaticvoid 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);
//将按语法树的顺序调用具体的表达
}
}

}
}
posted @ 2011-03-22 22:36  日月之明  阅读(204)  评论(0编辑  收藏  举报