public void Interpret(Context context)
        {
            if (context.Input.Length == 0)
            return;

              if (context.Input.StartsWith(Nine()))
              {
            context.Output += (9 * Multiplier());
            context.Input = context.Input.Substring(2);
              }
              else if (context.Input.StartsWith(Four()))
              {
            context.Output += (4 * Multiplier());
            context.Input = context.Input.Substring(2);
              }
              else if (context.Input.StartsWith(Five()))
              {
            context.Output += (5 * Multiplier());
            context.Input = context.Input.Substring(1);
              }

              while (context.Input.StartsWith(One()))
              {
            context.Output += (1 * Multiplier());
            context.Input = context.Input.Substring(1);
              }
        }
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        private static void Main()
        {
            string roman = "MCMXXVIII";
              Context context = new Context(roman);

              // Build the 'parse tree'
              List<Expression> tree = new List<Expression>();
              tree.Add(new ThousandExpression());
              tree.Add(new HundredExpression());
              tree.Add(new TenExpression());
              tree.Add(new OneExpression());

              // Interpret
              foreach (Expression exp in tree)
              {
            exp.Interpret(context);
              }

              Console.WriteLine("{0} = {1}", roman, context.Output);

              // Wait for user
              Console.ReadKey();
        }