Example #1
0
        public override void Validate(out ParserError error)
        {
            LeftOpRand.Validate(out error);
            if (!error.IsEmpty)
            {
                return;
            }

            RightOpRand.Validate(out error);
        }
Example #2
0
        public override object GetValue(Dictionary <GridCoordinates, object> childCells, out ParserError error)
        {
            leftValue = LeftOpRand.GetValue(childCells, out error);
            if (!error.IsEmpty)
            {
                return(null);
            }

            rightValue = RightOpRand.GetValue(childCells, out error);
            if (!error.IsEmpty)
            {
                return(null);
            }

            try {
                switch (OpName)
                {
                case OperationToken.Operation.Plus: return(GetPlusValue(childCells, out error));

                case OperationToken.Operation.Minus: return(GetMinusValue(childCells, out error));

                case OperationToken.Operation.Mult: return(GetMultValue(childCells, out error));

                case OperationToken.Operation.Divide: return(GetDivideValue(childCells, out error));

                case OperationToken.Operation.Mod: return(GetModValue(childCells, out error));

                case OperationToken.Operation.Div: return(GetDivValue(childCells, out error));

                case OperationToken.Operation.More: return(GetMoreValue(childCells, out error));

                case OperationToken.Operation.MoreEq: return(GetMoreEqValue(childCells, out error));

                case OperationToken.Operation.Less: return(GetLessValue(childCells, out error));

                case OperationToken.Operation.LessEq: return(GetLessEqValue(childCells, out error));

                case OperationToken.Operation.Equal: return(GetEqualValue(childCells, out error));

                case OperationToken.Operation.UnEqual: return(GetUnEqualValue(childCells, out error));

                default: {
                    error = new ParserError($"Strange binar operation{OpName.ToString()}");
                    return(null);
                }
                }
            } catch (Exception e) {
                error = new ParserError(e.Message);
                return(null);
            }
        }