protected virtual bool EvalNotExpression(object item, NPathNotExpression notExpression)
 {
     return(!EvalExpression(item, notExpression.Expression));
 }
Beispiel #2
0
 protected virtual void EmitNot(NPathNotExpression notExpression)
 {
     Write("(not ");             // do not localize
     EmitExpression(notExpression.Expression);
     Write(")");
 }
Beispiel #3
0
        protected virtual void EmitExpression(IValue expression)
        {
            if (expression is NPathNotExpression)
            {
                NPathNotExpression value = (NPathNotExpression)expression;
                EmitNot(value);
            }
            if (expression is NPathFunction)
            {
                NPathFunction value = (NPathFunction)expression;
                EmitFunction(value);
            }
            if (expression is NPathParameter)
            {
                NPathParameter value = (NPathParameter)expression;
                EmitParameter(value);
            }
            if (expression is NPathNullValue)
            {
                NPathNullValue value = (NPathNullValue)expression;
                EmitNullValue(value);
            }
            if (expression is NPathBetweenExpression)
            {
                NPathBetweenExpression value = (NPathBetweenExpression)expression;
                EmitBetween(value);
            }
            if (expression is NPathBooleanValue)
            {
                NPathBooleanValue value = (NPathBooleanValue)expression;
                EmitBooleanValue(value);
            }
            if (expression is NPathDecimalValue)
            {
                NPathDecimalValue value = (NPathDecimalValue)expression;
                EmitDecimalValue(value);
            }
            if (expression is NPathDateTimeValue)
            {
                NPathDateTimeValue value = (NPathDateTimeValue)expression;
                EmitDateTimeValue(value);
            }
            if (expression is NPathGuidValue)
            {
                NPathGuidValue value = (NPathGuidValue)expression;
                EmitGuidValue(value);
            }
            if (expression is NPathStringValue)
            {
                NPathStringValue value = (NPathStringValue)expression;
                EmitStringValue(value);
            }
            if (expression is NPathIdentifier)
            {
                NPathIdentifier propertyPath = (NPathIdentifier)expression;
                EmitPropertyPath(propertyPath);
            }
            if (expression is NPathPropertyFilter)
            {
                NPathPropertyFilter propertyFilter = (NPathPropertyFilter)expression;
                EmitPropertyFilter(propertyFilter);
            }
            if (expression is NPathParenthesisGroup)
            {
                NPathParenthesisGroup parenthesisGroup = (NPathParenthesisGroup)expression;
                EmitParenthesisGroup(parenthesisGroup);
            }
            if (expression is NPathMathExpression)
            {
                NPathMathExpression mathExpression = (NPathMathExpression)expression;
                EmitMathExpression(mathExpression);
            }
            if (expression is NPathCompareExpression)
            {
                NPathCompareExpression compareExpression = (NPathCompareExpression)expression;
                EmitCompareExpression(compareExpression);
            }

            if (expression is NPathBooleanExpression)
            {
                NPathBooleanExpression boolExpression = (NPathBooleanExpression)expression;
                EmitBooleanExpression(boolExpression);
            }
            if (expression is NPathInExpression)
            {
                NPathInExpression value = (NPathInExpression)expression;
                EmitIn(value);
            }
            if (expression is NPathSearchFunction)
            {
                NPathSearchFunction value = (NPathSearchFunction)expression;
                EmitSearchFunction(value);
            }
        }
Beispiel #4
0
        private IValue ParseExpression()
        {
            if (tokenizer.GetCurrentToken().IsType("not"))
            {
                tokenizer.MoveNext();                 // move past not
                NPathNotExpression not = new NPathNotExpression();
                not.Expression = ParseExpression();
                return(not);
            }

            if (CurrentIsValue())
            {
                IValue operand    = ParseValue();
                IValue expression = null;

                if (tokenizer.GetCurrentToken().IsType("between"))
                {
                    expression = ParseBetweenExpression(operand);
                    return(expression);
                }

                if (tokenizer.GetCurrentToken().IsType("in"))
                {
                    expression = ParseInExpression(operand);
                    return(expression);
                }

                if (tokenizer.GetCurrentToken().IsType("math") || tokenizer.GetCurrentToken().IsType("compare") /* ||
                                                                                                                 * tokenizer.GetCurrentToken().IsType("boolop")*/)
                {
                    expression = ParseOperator(operand);

                    return(expression);
                }

                if (tokenizer.GetCurrentToken().IsType(")"))
                {
                    expression = operand;
                    return(expression);
                }

                if (tokenizer.GetCurrentToken().IsType("as"))
                {
                    expression = operand;
                    return(expression);
                }

                if (tokenizer.GetCurrentToken().IsType("]"))
                {
                    expression = operand;
                    return(expression);
                }

                if (tokenizer.GetCurrentToken().IsType("direction"))
                {
                    expression = operand;
                    return(expression);
                }

                return(operand);
            }

            throw GetUnknownTokenException();
        }