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

ReadTrivia() private method

private ReadTrivia ( List target, bool isTrailing ) : void
target List
isTrailing bool
return void
        private void ReadTrivia(List<SyntaxNode> target, bool isTrailing)
        {
            var onlyWhitespaceOnLine = !isTrailing;

            while (true)
            {
                switch (_charReader.Current)
                {
                    case '\n':
                    case '\r':
                        {
                            ReadEndOfLine();
                            AddTrivia(target, SyntaxKind.EndOfLineTrivia);
                            if (isTrailing)
                                return;
                            onlyWhitespaceOnLine = true;
                        }
                        break;
                    case '/':
                        if (_charReader.Peek() == '/')
                        {
                            ReadSinglelineComment();
                            AddTrivia(target, SyntaxKind.SingleLineCommentTrivia);
                            onlyWhitespaceOnLine = false;
                        }
                        else if (_charReader.Peek() == '*')
                        {
                            ReadMultilineComment();
                            AddTrivia(target, SyntaxKind.MultiLineCommentTrivia);
                            onlyWhitespaceOnLine = false;
                        }
                        else
                        {
                            return;
                        }
                        break;
                    case '#':
                        var shouldContinue = LexDirectiveAndExcludedTrivia(isTrailing || !onlyWhitespaceOnLine, target);
                        if (!shouldContinue)
                            return;
                        break;
                    case '\\':
                        if (_charReader.Peek() != '\r' && _charReader.Peek() != '\n')
                            goto default;
                        _kind = SyntaxKind.BackslashNewlineTrivia;
                        NextChar();
                        ReadEndOfLine();
                        AddTrivia(target, SyntaxKind.BackslashNewlineTrivia);
                        break;

                    default:
                        if (char.IsWhiteSpace(_charReader.Current))
                        {
                            ReadWhitespace();
                            AddTrivia(target, SyntaxKind.WhitespaceTrivia);
                        }
                        else
                        {
                            return;
                        }
                        break;
                }
            }
        }