O'Reilly logo

C# 3.0 Design Patterns by Judith Bishop

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Interpreter Pattern Example Code—Course Rules

See the following code for an example of the Interpreter Pattern:

using System; // Interpreter Pattern Example Judith Bishop Oct 2007 // Sets up an object structure and interprets it with given data static class ElementExtensions { public static string gap; public static void Print(this Element element) { Console.WriteLine(gap+element + " " + element.Weight); if (element.Part!=null) { gap+=" "; Print(element.Part.Next); gap = gap.Substring(2); } if (element.Next!=null) Print(element.Next); } public static int Lab {get; set;} public static int Test {get; set;} public static void Summarize(this Element element) { if (element is Lab) Lab += element.Weight; else if (element is Test) Test += element.Weight; else if ((element is Midterm || element is Exam) && element.Part==null) Test += element.Weight; if (element.Part!=null) Summarize(element.Part.Next); if (element.Next!=null) Summarize(element.Next); } public static int [] values; public static int n; public static Context context; public static void SetUp (this Element element, Context c, int[] v) { context = c; context.Output=0; values = v; n = 0; } public static void Interpreter(this Element element) { if (element is Lab || element is Test) { context.Output += values[n]*element.Weight; n++; } else if ((element is Midterm || element is Exam) && element.Part==null) { context.Output += values[n]*element.Weight; n++; } if (element.Part!=null) Interpreter(element.Part.Next); if (element.Next!=null) ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required