Пример #1
0
        public BinarOp(OperationToken.Operation opName, OpRand leftOpRand, OpRand rightOpRand, out ParserError error)
        {
            error = ParserError.Empty;

            this.OpName      = opName;
            this.LeftOpRand  = leftOpRand;
            this.RightOpRand = rightOpRand;
        }
Пример #2
0
        public UnarOp(OperationToken.Operation opName, OpRand argument, out ParserError error)
        {
            error         = ParserError.Empty;
            this.OpName   = opName;
            this.Argument = argument;

            if (opName == OperationToken.Operation.If)
            {
                CheckIfArgument(out error);
            }
        }
Пример #3
0
        private bool IsValidOperation(LinkedListNode <Token> preStartNode, LinkedListNode <Token> nextNode, OperationToken.Operation opName)
        {
            if (opName == OperationToken.Operation.If ||
                opName == OperationToken.Operation.Mod ||
                opName == OperationToken.Operation.Div)
            {
                return((preStartNode == null || !IsLetter(preStartNode.Value)) &&
                       (nextNode == null || !IsLetter(nextNode.Value)));
            }

            if (opName == OperationToken.Operation.FormulaSign)
            {
                return(preStartNode == null);
            }

            return(true);
        }