Ejemplo n.º 1
0
        public double Evaluation()
        {
            double value = 0;

            switch (this.Expression)
            {
            case Expression.Add:
                value = PreviousToken.Evaluation() + NextToken.Evaluation();
                break;

            case Expression.Subtract:
                value = PreviousToken.Evaluation() - NextToken.Evaluation();
                break;

            case Expression.Multiply:
                value = PreviousToken.Evaluation() * NextToken.Evaluation();
                break;

            case Expression.Divide:
                if (NextToken.Evaluation() == 0)
                {
                    throw new RuntimeError("You attempted to divide by zero.");
                }
                value = PreviousToken.Evaluation() / NextToken.Evaluation();
                break;

            case Expression.Positive:
                value = NextToken.Evaluation();
                break;

            case Expression.Negative:
                value = NextToken.Evaluation() * -1;
                break;

            case Expression.Exponent:
                value = Math.Pow(PreviousToken.Evaluation(), NextToken.Evaluation());
                break;

            case Expression.OpenParenthesis:
                value = NextToken.Evaluation();
                break;

            default:
                break;
            }

            return(value);
        }
Ejemplo n.º 2
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (PreviousToken.Length != 0)
            {
                hash ^= PreviousToken.GetHashCode();
            }
            if (Token.Length != 0)
            {
                hash ^= Token.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }