/// <summary>Handles lexemes that are formed by an identifier followed by a quoted string.</summary> /// <remarks>This method modified the token field as necessary.</remarks> private void HandleTypePrefixedLiterals() { ExpressionTokenKind id = this.token.Kind; if (id != ExpressionTokenKind.Identifier) { return; } bool quoteFollows = this.ch == '\''; if (!quoteFollows) { return; } string tokenText = this.token.Text; if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixDateTime, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.DateTimeLiteral; } else if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixDateTimeOffset, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.DateTimeOffsetLiteral; } else if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixTime, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.TimeLiteral; } else if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixGuid, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.GuidLiteral; } else if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixBinary, StringComparison.OrdinalIgnoreCase) || String.Equals(tokenText, ExpressionConstants.LiteralPrefixShortBinary, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.BinaryLiteral; } else if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixGeography, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.GeographyLiteral; } else if (String.Equals(tokenText, ExpressionConstants.LiteralPrefixGeometry, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.GeometryLiteral; } else if (this.parsingFunctionParameters && string.Equals(tokenText, ExpressionConstants.KeywordNull, StringComparison.OrdinalIgnoreCase)) { id = ExpressionTokenKind.NullLiteral; } else { return; } int tokenPos = this.token.Position; do { this.NextChar(); }while (this.ch.HasValue && this.ch != '\''); if (this.ch == null) { throw ParseError(ODataErrorStrings.ExpressionLexer_UnterminatedLiteral(this.textPos, this.text)); } this.NextChar(); this.token.Kind = id; this.token.Text = this.text.Substring(tokenPos, this.textPos - tokenPos); }