Interpret() public abstract method

public abstract Interpret ( Context context ) : void
context Context
return void
Ejemplo n.º 1
0
        public static double EvaluateExpression(string strExp)
        {
            Stack <AbstractExpression> stack = new Stack <AbstractExpression>();

            string[] tokenList = strExp.Split(' ');
            foreach (string s in tokenList)
            {
                if (IsOperator(s))
                {
                    AbstractExpression rightExpression = stack.Pop();
                    Console.WriteLine("Pop: " + rightExpression.Interpret());
                    AbstractExpression leftExpression = stack.Pop();
                    Console.WriteLine("Pop: " + leftExpression.Interpret());

                    AbstractExpression op = GetOperatorExpression(s, leftExpression, rightExpression);
                    Console.WriteLine("Applica operatore: " + s);
                    double result = op.Interpret();

                    stack.Push(new NumberExpression(result));
                    Console.WriteLine("Push result: " + result);
                }
                else
                {
                    AbstractExpression i = new NumberExpression(s);
                    Console.WriteLine("Push: " + s);
                    stack.Push(i);
                }
            }

            AbstractExpression exp = stack.Pop();

            return(exp.Interpret());
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }