ShaderTools.Hlsl.Parser.HlslLexer.LexSyntaxToken C# (CSharp) Method

LexSyntaxToken() private method

private LexSyntaxToken ( ) : SyntaxToken
return SyntaxToken
        private SyntaxToken LexSyntaxToken()
        {
            // Keep reading leading trivia until there is no more trivia.
            // This is because we might be moving to new include files, each with leading trivia.
            ImmutableArray<SyntaxNode> leadingTrivia = ImmutableArray<SyntaxNode>.Empty;
            _diagnostics.Clear();
            while (true)
            {
                _leadingTrivia.Clear();                
                _start = _charReader.Position;
                ReadTrivia(_leadingTrivia, isTrailing: false);
                var newLeadingTrivia = _leadingTrivia.ToImmutableArray();
                if (newLeadingTrivia.IsEmpty)
                    break;
                leadingTrivia = leadingTrivia.AddRange(newLeadingTrivia);
            }

            _kind = SyntaxKind.BadToken;
            _contextualKind = SyntaxKind.None;
            _value = null;
            _diagnostics.Clear();
            _start = _charReader.Position;
            ReadToken();
            var end = _charReader.Position;
            var kind = _kind;
            var span = TextSpan.FromBounds(Text, _start, end);
            var text = Text.GetText(span);
            var diagnostics = _diagnostics.ToImmutableArray();

            _trailingTrivia.Clear();
            _diagnostics.Clear();
            _start = _charReader.Position;
            ReadTrivia(_trailingTrivia, isTrailing: true);
            var trailingTrivia = _trailingTrivia.ToImmutableArray();

            return new SyntaxToken(kind, _contextualKind, false, MakeAbsolute(span), span, text, _value, leadingTrivia, trailingTrivia, diagnostics, null, false);
        }