function (oInterface, oPathValue) {
			var oRawValue = oPathValue.value,
				oSubPathValue,
				sType;

			Basics.expectType(oPathValue, "object");

			if (oRawValue.hasOwnProperty("Type")) {
				sType = Basics.property(oPathValue, "Type", "string");
				oSubPathValue = Basics.descend(oPathValue, "Value");
			} else {
				["And", "Apply", "Bool", "Date", "DateTimeOffset", "Decimal", "Float", "Eq", "Ge",
					"Gt", "Guid", "If", "Int", "Le", "Lt", "Ne", "Not", "Null", "Or", "Path",
					"PropertyPath", "String", "TimeOfDay"
				].forEach(function (sProperty) {
					if (oRawValue.hasOwnProperty(sProperty)) {
						sType = sProperty;
						oSubPathValue = Basics.descend(oPathValue, sProperty);
					}
				});
			}

			switch (sType) {
				case "Apply": // 14.5.3 Expression edm:Apply
					return Expression.apply(oInterface, oSubPathValue);
				case "If": // 14.5.6 Expression edm:If
					return Expression.conditional(oInterface, oSubPathValue);
				case "Path": // 14.5.12 Expression edm:Path
				case "PropertyPath": // 14.5.13 Expression edm:PropertyPath
					return Expression.path(oInterface, oSubPathValue);
				case "Bool": // 14.4.2 Expression edm:Bool
				case "Date": // 14.4.3 Expression edm:Date
				case "DateTimeOffset": // 14.4.4 Expression edm:DateTimeOffset
				case "Decimal": // 14.4.5 Expression edm:Decimal
				case "Float": // 14.4.8 Expression edm:Float
				case "Guid": // 14.4.9 Expression edm:Guid
				case "Int": // 14.4.10 Expression edm:Int
				case "String": // 14.4.11 Expression edm:String
				case "TimeOfDay": // 14.4.12 Expression edm:TimeOfDay
					return Expression.constant(oInterface, oSubPathValue, sType);
				case "And":
				case "Eq":
				case "Ge":
				case "Gt":
				case "Le":
				case "Lt":
				case "Ne":
				case "Or":
					// 14.5.1 Comparison and Logical Operators
					return Expression.operator(oInterface, oSubPathValue, sType);
				case "Not":
					// 14.5.1 Comparison and Logical Operators
					return Expression.not(oInterface, oSubPathValue);
				case "Null":
					// 14.5.10 Expression edm:Null
					return {
						result : "constant",
						value : "null",
						type : "edm:Null"
					};
				default:
					Basics.error(oPathValue, "Unsupported OData expression");
			}
		}
function (oInterface, oPathValue) {
			var oRawValue = oPathValue.value,
				oSubPathValue,
				sType;

			Basics.expectType(oPathValue, "object");

			if (oRawValue.hasOwnProperty("Type")) {
				sType = Basics.property(oPathValue, "Type", "string");
				oSubPathValue = Basics.descend(oPathValue, "Value");
			} else {
				["And", "Apply", "Bool", "Date", "DateTimeOffset", "Decimal", "Float", "Eq", "Ge",
					"Gt", "Guid", "If", "Int", "Le", "Lt", "Ne", "Not", "Null", "Or", "Path",
					"PropertyPath", "String", "TimeOfDay"
				].forEach(function (sProperty) {
					if (oRawValue.hasOwnProperty(sProperty)) {
						sType = sProperty;
						oSubPathValue = Basics.descend(oPathValue, sProperty);
					}
				});
			}

			switch (sType) {
				case "Apply": // 14.5.3 Expression edm:Apply
					return Expression.apply(oInterface, oSubPathValue);
				case "If": // 14.5.6 Expression edm:If
					return Expression.conditional(oInterface, oSubPathValue);
				case "Path": // 14.5.12 Expression edm:Path
				case "PropertyPath": // 14.5.13 Expression edm:PropertyPath
					return Expression.path(oInterface, oSubPathValue);
				case "Bool": // 14.4.2 Expression edm:Bool
				case "Date": // 14.4.3 Expression edm:Date
				case "DateTimeOffset": // 14.4.4 Expression edm:DateTimeOffset
				case "Decimal": // 14.4.5 Expression edm:Decimal
				case "Float": // 14.4.8 Expression edm:Float
				case "Guid": // 14.4.9 Expression edm:Guid
				case "Int": // 14.4.10 Expression edm:Int
				case "String": // 14.4.11 Expression edm:String
				case "TimeOfDay": // 14.4.12 Expression edm:TimeOfDay
					return Expression.constant(oInterface, oSubPathValue, sType);
				case "And":
				case "Eq":
				case "Ge":
				case "Gt":
				case "Le":
				case "Lt":
				case "Ne":
				case "Or":
					// 14.5.1 Comparison and Logical Operators
					return Expression.operator(oInterface, oSubPathValue, sType);
				case "Not":
					// 14.5.1 Comparison and Logical Operators
					return Expression.not(oInterface, oSubPathValue);
				case "Null":
					// 14.5.10 Expression edm:Null
					return {
						result : "constant",
						value : "null",
						type : "edm:Null"
					};
				default:
					Basics.error(oPathValue, "Unsupported OData expression");
			}
		}
function ( oInterface , oPathValue ) { var oRawValue = oPathValue . value , oSubPathValue , sType ; Basics . expectType ( oPathValue , "object" ) ; if ( oRawValue . hasOwnProperty ( "Type" ) ) { sType = Basics . property ( oPathValue , "Type" , "string" ) ; oSubPathValue = Basics . descend ( oPathValue , "Value" ) ; } else { [ "And" , "Apply" , "Bool" , "Date" , "DateTimeOffset" , "Decimal" , "Float" , "Eq" , "Ge" , "Gt" , "Guid" , "If" , "Int" , "Le" , "Lt" , "Ne" , "Not" , "Null" , "Or" , "Path" , "PropertyPath" , "String" , "TimeOfDay" ] . forEach ( function ( sProperty ) { if ( oRawValue . hasOwnProperty ( sProperty ) ) { sType = sProperty ; oSubPathValue = Basics . descend ( oPathValue , sProperty ) ; } } ) ; } switch ( sType ) { case "Apply" : // 14.5.3 Expression edm:Apply return Expression . apply ( oInterface , oSubPathValue ) ; case "If" : // 14.5.6 Expression edm:If return Expression . conditional ( oInterface , oSubPathValue ) ; case "Path" : // 14.5.12 Expression edm:Path case "PropertyPath" : // 14.5.13 Expression edm:PropertyPath return Expression . path ( oInterface , oSubPathValue ) ; case "Bool" : // 14.4.2 Expression edm:Bool case "Date" : // 14.4.3 Expression edm:Date case "DateTimeOffset" : // 14.4.4 Expression edm:DateTimeOffset case "Decimal" : // 14.4.5 Expression edm:Decimal case "Float" : // 14.4.8 Expression edm:Float case "Guid" : // 14.4.9 Expression edm:Guid case "Int" : // 14.4.10 Expression edm:Int case "String" : // 14.4.11 Expression edm:String case "TimeOfDay" : // 14.4.12 Expression edm:TimeOfDay return Expression . constant ( oInterface , oSubPathValue , sType ) ; case "And" : case "Eq" : case "Ge" : case "Gt" : case "Le" : case "Lt" : case "Ne" : case "Or" : // 14.5.1 Comparison and Logical Operators return Expression . operator ( oInterface , oSubPathValue , sType ) ; case "Not" : // 14.5.1 Comparison and Logical Operators return Expression . not ( oInterface , oSubPathValue ) ; case "Null" : // 14.5.10 Expression edm:Null return { result : "constant" , value : "null" , type : "edm:Null" } ; default : Basics . error ( oPathValue , "Unsupported OData expression" ) ; } }
Calculates an expression.

@param {sap.ui.core.util.XMLPreprocessor.IContext|sap.ui.model.Context} oInterface
the callback interface related to the current formatter call
@param {object} oPathValue
path and value information pointing to the parameters array (see Expression object)
@returns {object}
the result object
Calculates an expression .
Returns an object representation of the given path value.