Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Design Patterns via C#.pdf
Скачиваний:
154
Добавлен:
17.03.2016
Размер:
13.25 Mб
Скачать

194

Структура паттерна на языке UML

См. Пример к главе: \015_Interpreter\001_Interpreter

Структура паттерна на языке C#

class Program

{

 

static void Main()

class Context

{

{

Context context = new Context

// Контекст распознающей грамматики языка:

{

// V = {a}; L = V*;

Vocabulary = 'a',

// Правильные цепочки: a, aa, aaa, ...

Source = "aaa"

// Неправильные цепочки: b, ab, aba, ...

};

 

 

public string Source { get; set; }

var expression = new NonterminalExpression();

public char Vocabulary { get; set; }

expression.Interpret(context);

public bool Result { get; set; }

 

public int Position { get; set; }

Console.WriteLine(context.Result);

}

}

 

}

 

abstract class AbstractExpression

{

public abstract void Interpret(Context context);

}

class TerminalExpression : AbstractExpression

class NonterminalExpression : AbstractExpression

{

{

public override void Interpret(Context context)

AbstractExpression nonterminalExpression;

{

AbstractExpression terminalExpression;

context.Result =

 

context.Source[context.Position] == context.Vocabulary;

public override void Interpret(Context context)

}

{

}

if (context.Position < context.Source.Length)

 

{

 

terminalExpression = new TerminalExpression();

 

terminalExpression.Interpret(context);

 

context.Position++;

 

if (context.Result)

 

{

 

nonterminalExpression = new NonterminalExpression();

 

nonterminalExpression.Interpret(context);

 

}

 

}

 

}

 

}

См. Пример к главе: \015_Interpreter\001_Interpreter

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]