Microsoft.Language.Xml.Scanner.ScanXmlComment C# (CSharp) Method

ScanXmlComment() private method

private ScanXmlComment ( ) : SyntaxToken
return SyntaxToken
        internal SyntaxToken ScanXmlComment()
        {
            SyntaxList<SyntaxNode> precedingTrivia = null;
            var Here = 0;
            while (CanGetCharAtOffset(Here))
            {
                char c = PeekAheadChar(Here);
                switch (c)
                {
                    case UCH_CR:
                    case UCH_LF:
                        return XmlMakeCommentToken(precedingTrivia, Here + LengthOfLineBreak(c, Here));
                    case '-':
                        if (CanGetCharAtOffset(Here + 1) && PeekAheadChar(Here + 1) == '-')
                        {
                            // // --> terminates an Xml comment but otherwise -- is an illegal character sequence.
                            // // The scanner will always returns "--" as a separate comment data string and the
                            // // the semantics will error if '--' is ever found.
                            // // Return valid characters up to the --
                            if (Here > 0)
                            {
                                return XmlMakeCommentToken(precedingTrivia, Here);
                            }

                            if (CanGetCharAtOffset(Here + 2))
                            {
                                c = PeekAheadChar(Here + 2);
                                Here += 2;
                                // // if > is not found then this is an error.  Return the -- string
                                if (c != '>')
                                {
                                    return XmlMakeCommentToken(precedingTrivia, 2);
                                }
                                else
                                {
                                    return XmlMakeEndCommentToken(precedingTrivia);
                                }
                            }
                        }

                        goto ScanChars;
                    default:
                        ScanChars:
                        var xmlCh = ScanXmlChar(Here);
                        if (xmlCh.Length != 0)
                        {
                            Here += xmlCh.Length;
                            continue;
                        }

                        // bad char
                        if (Here > 0)
                        {
                            return XmlMakeCommentToken(precedingTrivia, Here);
                        }
                        else
                        {
                            return XmlMakeBadToken(precedingTrivia, 1, ERRID.ERR_IllegalChar);
                        }
                }
            }

            // no more chars
            if (Here > 0)
            {
                return XmlMakeCommentToken(precedingTrivia, Here);
            }
            else
            {
                return MakeEofToken(precedingTrivia);
            }
        }
Scanner