public void Interpret(Contexto context) { if (context.GetInput().Length == 0) { return; } if (context.GetInput().StartsWith(Nove())) { context.SetOutput(context.GetOutput() + (9 * Multiplicador())); context.SetInput(context.GetInput().Substring(2)); } else if (context.GetInput().StartsWith(Quatro())) { context.SetOutput(context.GetOutput() + (4 * Multiplicador())); context.SetInput(context.GetInput().Substring(2)); } else if (context.GetInput().StartsWith(Cinco())) { context.SetOutput(context.GetOutput() + (5 * Multiplicador())); context.SetInput(context.GetInput().Substring(1)); } while (context.GetInput().StartsWith(Um())) { context.SetOutput(context.GetOutput() + (1 * Multiplicador())); context.SetInput(context.GetInput().Substring(1)); } }
static void Main(string[] args) { String romano = "MCMXXVIII"; Contexto context = new Contexto(romano); //Lista de expressoes List <Expressao> tree = new List <Expressao>(); tree.Add(new Milhar()); tree.Add(new Centena()); tree.Add(new Dezena()); tree.Add(new Unidade()); //Interpreter foreach (Expressao exp in tree) { exp.Interpret(context); } Console.WriteLine(context.GetOutput()); Console.ReadKey(); }