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

ParseAdditive() private method

private ParseAdditive ( ) : Expression
return Expression
		private Expression ParseAdditive()
		{
			Expression left = ParseMultiplicative();
			while (_token.ID == TokenId.Plus || _token.ID == TokenId.Minus ||
				_token.ID == TokenId.Amphersand)
			{
				Token op = _token;
				NextToken();
				Expression right = ParseMultiplicative();
				switch (op.ID)
				{
					case TokenId.Plus:
						if (left.Type == typeof(string) || right.Type == typeof(string))
							goto case TokenId.Amphersand;
						CheckAndPromoteOperands(typeof(IAddSignatures), op.Text, ref left, ref right, op.Position);
						left = GenerateAdd(left, right);
						break;
					case TokenId.Minus:
						CheckAndPromoteOperands(typeof(ISubtractSignatures), op.Text, ref left, ref right, op.Position);
						left = GenerateSubtract(left, right);
						break;
					case TokenId.Amphersand:
						left = GenerateStringConcat(left, right);
						break;
				}
			}
			return left;
		}
ExpressionParser