Ejemplo n.º 1
0
        public EvaluatorJava(String ExpressionJava)
        {
            Stack <ExpressionJava> expressionStack = new Stack <ExpressionJava>();

            foreach (String token in ExpressionJava.Split(' '))
            {
                if (token.Equals("+"))
                {
                    ExpressionJava subExpression = new PlusJava(expressionStack.Pop(), expressionStack.Pop());
                    expressionStack.Push(subExpression);
                }
                else if (token.Equals("-"))
                {
                    // it's necessary to remove first the right operand from the stack
                    ExpressionJava right = expressionStack.Pop();
                    // ..and then the left one
                    ExpressionJava left          = expressionStack.Pop();
                    ExpressionJava subExpression = new MinusJava(left, right);
                    expressionStack.Push(subExpression);
                }
                else
                {
                    expressionStack.Push(new VariableJava(token));
                }
            }
            syntaxTree = expressionStack.Pop();
        }
Ejemplo n.º 2
0
 public MinusJava(ExpressionJava left, ExpressionJava right)
 {
     leftOperand  = left;
     rightOperand = right;
 }