Exemple #1
0
        protected IOperand DoDoubleOperation(DoubleOperand lhs, DoubleOperand rhs, DoubleOperator @operator)
        {
            double result = @operator(lhs.ValueAsDouble, rhs.ValueAsDouble);

            if (IsInvalidDouble(result))
            {
                return(new ErrorValueOperand(ErrorValueType.Num));
            }
            return(new DoubleOperand(result));
        }
Exemple #2
0
        public string ConsumeNext()
        {
            while (currentIndex < totalLength)
            {
                var currentChar = this.Source[currentIndex];

                if (Helper.StringHelper.isSpaceCharacters(currentChar))
                {
                    if (!string.IsNullOrEmpty(currentValue))
                    {
                        string newvalue = currentValue;
                        currentValue  = string.Empty;
                        currentIndex += 1;
                        return(newvalue);
                    }
                    else
                    {
                        currentIndex += 1;
                    }
                }
                else if (IsSeperator(currentChar))
                {
                    if (!string.IsNullOrEmpty(currentValue))
                    {
                        string newvalue = currentValue;
                        currentValue = string.Empty;
                        return(newvalue);
                    }
                    else
                    {
                        var next = LookAhead();

                        if (next != default(char))
                        {
                            string combine = currentChar.ToString() + next.ToString();
                            if (DoubleOperator.Contains(combine))
                            {
                                currentIndex += 2;
                                return(combine);
                            }
                            else
                            {
                                currentIndex += 1;
                                return(currentChar.ToString());
                            }
                        }
                        currentIndex += 1;
                        return(currentChar.ToString());
                    }
                }

                else if (currentChar == '"' || currentChar == '\'')
                {
                    if (!string.IsNullOrEmpty(currentValue))
                    {
                        string newvalue = currentValue;
                        currentValue = string.Empty;
                        return(newvalue);
                    }
                    else
                    {
                        string value = LookTill(currentChar);

                        return(value);
                    }
                }


                else
                {
                    this.currentValue += currentChar;
                    currentIndex      += 1;
                }
            }

            if (!string.IsNullOrEmpty(this.currentValue))
            {
                string newvalue = this.currentValue;

                this.currentValue = string.Empty;

                return(newvalue);
            }
            return(null);
        }
Exemple #3
0
        protected void BuildConstraints()
        {
            // Variablen
            VariablesOperator o  = new VariablesOperator("O");
            VariablesOperator x1 = new VariablesOperator("X1");
            VariablesOperator w  = new VariablesOperator("W");
            VariablesOperator u  = new VariablesOperator("U");
            VariablesOperator x2 = new VariablesOperator("X2");
            VariablesOperator t  = new VariablesOperator("T");
            VariablesOperator f  = new VariablesOperator("F");
            VariablesOperator r  = new VariablesOperator("R");
            VariablesOperator x3 = new VariablesOperator("X3");

            // Konstanten
            DoubleOperator ten = new DoubleOperator(10);

            // O + O = R + 10 * X1
            Addition   firstAddition  = new Addition(o, o);
            Multiply   multiply       = new Multiply(ten, x1);
            Addition   secondAddition = new Addition(r, multiply);
            Equal      equal          = new Equal(firstAddition, secondAddition);
            Constraint constraint     = new Constraint(equal);

            _constraintList.Add("O", constraint);
            _constraintList.Add("R", constraint);
            _constraintList.Add("X1", constraint);

            // X1 + W + W = U + 10 * X2
            secondAddition = new Addition(w, w);
            firstAddition  = new Addition(x1, secondAddition);
            multiply       = new Multiply(ten, x2);
            secondAddition = new Addition(u, multiply);
            equal          = new Equal(firstAddition, secondAddition);
            constraint     = new Constraint(equal);

            _constraintList.Add("X1", constraint);
            _constraintList.Add("W", constraint);
            _constraintList.Add("U", constraint);
            _constraintList.Add("X2", constraint);

            // X2 + T + T = O + 10 * X3
            secondAddition = new Addition(t, t);
            firstAddition  = new Addition(x2, secondAddition);
            multiply       = new Multiply(ten, x3);
            secondAddition = new Addition(o, multiply);
            equal          = new Equal(firstAddition, secondAddition);
            constraint     = new Constraint(equal);

            _constraintList.Add("X2", constraint);
            _constraintList.Add("T", constraint);
            _constraintList.Add("O", constraint);
            _constraintList.Add("X3", constraint);

            // X3 = F
            equal      = new Equal(x3, f);
            constraint = new Constraint(equal);

            _constraintList.Add("X3", constraint);
            _constraintList.Add("F", constraint);

            ConstraintConfiguration configuration = new ConstraintConfiguration();

            // Variablen
            AddVariable(configuration, "O");
            AddVariable(configuration, "X1");
            AddVariable(configuration, "W");
            AddVariable(configuration, "U");
            AddVariable(configuration, "X2");
            AddVariable(configuration, "T");
            AddVariable(configuration, "F");
            AddVariable(configuration, "R");
            AddVariable(configuration, "X3");

            _begin = CreateNode(null, configuration);
        }