コード例 #1
0
            /// <summary>
            /// Returns an instance of <see cref="HttpHeaderValueLexer"/> to parse the rest of the items on the header value.
            /// Parsing is based on this grammar:
            ///     header     = "header-name" ":" 1#element
            ///     element    = token [ BWS "=" BWS (token | quoted-string) ]
            ///                  *( OWS ";" [ OWS parameter ] )
            ///     parameter  = token [ BWS "=" BWS (token | quoted-string) ]
            /// </summary>
            /// <returns>Returns an instance of <see cref="HttpHeaderValueLexer"/> to parse the rest of the items on the header value.</returns>
            internal override HttpHeaderValueLexer ReadNext()
            {
                DebugUtils.CheckNoExternalCallers();
                if (this.EndOfHeaderValue())
                {
                    throw new ODataException(Strings.HttpHeaderValueLexer_EndOfFileAfterSeparator(this.httpHeaderName, this.httpHeaderValue, this.startIndexOfNextItem, this.originalText));
                }

                // Token or quoted-string can come after '='. i.e. token ['=' (token | quoted-string)]
                if (this.Value == ValueSeparator)
                {
                    return(this.ReadNextTokenOrQuotedString());
                }

                // Only token can come after ',' and ';'.
                return(this.ReadNextToken());
            }