コード例 #1
0
 //---------------------------------------------------------------------
 public void Validate()
 {
     if (_paranthesisStack.Count > 0)
     {
         Paranthesis paranthesis = _paranthesisStack.Pop();
         throw ParsingException.ParanthesisNotMatched(paranthesis);
     }
 }
コード例 #2
0
        //---------------------------------------------------------------------
        private void CheckIntrinsic(Token current)
        {
            if (!(_lastToken is Intrinsic) || current is LeftParanthesis)
            {
                return;
            }

            throw ParsingException.IntrinsicNoFollowedByLeftParanthesis(_lastToken as Intrinsic);
        }
コード例 #3
0
        //---------------------------------------------------------------------
        public void Visit(ValueToken valueToken)
        {
            this.CheckIntrinsic(valueToken);

            if (_lastToken is ValueToken)
            {
                throw ParsingException.ValueFollowedByValue(_lastToken as ValueToken, valueToken);
            }

            _lastToken = valueToken;
        }
コード例 #4
0
        //---------------------------------------------------------------------
        public void Visit(Operation operation)
        {
            this.CheckIntrinsic(operation);

            if (_lastToken is Operation && !(operation is Exponentation))
            {
                throw ParsingException.OperationFollowedByOperation(_lastToken, operation);
            }

            _lastToken = operation;
        }
コード例 #5
0
        //---------------------------------------------------------------------
        public void Visit(RightParanthesis paranthesis)
        {
            this.CheckIntrinsic(paranthesis);

            if (_paranthesisStack.Count == 0 || !(_paranthesisStack.Peek() is LeftParanthesis))
            {
                throw ParsingException.NoLeftParanthesis(paranthesis);
            }

            _paranthesisStack.Pop();

            _lastToken = paranthesis;
        }