System.Linq.Dynamic.ExpressionParser.ParseUnary C# (CSharp) Method

ParseUnary() private method

private ParseUnary ( ) : Expression
return Expression
		private Expression ParseUnary()
		{
			if (_token.ID == TokenId.Minus || _token.ID == TokenId.Exclamation || TokenIdentifierIs("not"))
			{
				Token op = _token;
				NextToken();
				if (op.ID != TokenId.Minus || (_token.ID != TokenId.IntegerLiteral && _token.ID != TokenId.RealLiteral))
				{
					Expression expr = ParseUnary();
					if (op.ID == TokenId.Minus)
					{
						CheckAndPromoteOperand(typeof(INegationSignatures), op.Text, ref expr, op.Position);
						expr = Expression.Negate(expr);
					}
					else
					{
						CheckAndPromoteOperand(typeof(INotSignatures), op.Text, ref expr, op.Position);
						expr = Expression.Not(expr);
					}
					return expr;
				}
				_token.Text = "-" + _token.Text;
				_token.Position = op.Position;
			}
			return ParsePrimary();
		}
ExpressionParser