ShaderTools.Hlsl.Parser.HlslParser.ParseTechnique C# (CSharp) Method

ParseTechnique() private method

private ParseTechnique ( ) : TechniqueSyntax
return TechniqueSyntax
        private TechniqueSyntax ParseTechnique()
        {
            var technique = NextToken();

            SyntaxToken name = null;
            if (Current.Kind == SyntaxKind.IdentifierToken)
                name = Match(SyntaxKind.IdentifierToken);

            AnnotationsSyntax annotations = null;
            if (Current.Kind == SyntaxKind.LessThanToken)
                annotations = ParseAnnotations();

            var openBrace = Match(SyntaxKind.OpenBraceToken);

            var passes = new List<PassSyntax>();
            while (Current.Kind != SyntaxKind.CloseBraceToken)
            {
                if (Current.Kind == SyntaxKind.PassKeyword)
                {
                    passes.Add(ParsePass());
                }
                else
                {
                    var action = SkipBadTokens(
                        p => p.Current.Kind != SyntaxKind.PassKeyword,
                        p => p.IsTerminator(),
                        SyntaxKind.CloseBraceToken);
                    if (action == PostSkipAction.Abort)
                        break;
                }
            }

            var closeBrace = Match(SyntaxKind.CloseBraceToken);
            var semicolon = NextTokenIf(SyntaxKind.SemiToken);

            return new TechniqueSyntax(technique, name, annotations, openBrace, passes, closeBrace, semicolon);
        }
HlslParser