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

ParseIdentifier() private method

private ParseIdentifier ( ) : Expression
return Expression
		private Expression ParseIdentifier()
		{
			ValidateToken(TokenId.Identifier);
			object value;
			if (_keywords.TryGetValue(_token.Text, out value))
			{
				var type = value as Type;
				if (type != null)
					return ParseTypeAccess(type);
				if (value == (object) KEYWORD_IT) return ParseIt();
				if (value == (object) KEYWORD_IIF) return ParseIif();
				if (value == (object) KEYWORD_NEW) return ParseNewObject();
				if (value == (object) KEYWORD_IFNONE) return ParseIfNone();
				NextToken();
				return (Expression) value;
			}
			if (_symbols.TryGetValue(_token.Text, out value) ||
				_externals != null && _externals.TryGetValue(_token.Text, out value))
			{
				var expr = value as Expression;
				if (expr == null)
				{
					expr = Expression.Constant(value);
				}
				else
				{
					var lambda = expr as LambdaExpression;
					if (lambda != null) return ParseLambdaInvocation(lambda);
				}
				NextToken();
				return expr;
			}

			// Convert f(x) => x.f()
			if (_it != null) return ParseMemberAccess(null, _it);
			throw ParseError(Res.UnknownIdentifier(_token.Text));
		}
ExpressionParser