예제 #1
0
        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));
            }
        }
예제 #2
0
        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();
        }