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

ParseArgumentList() private method

private ParseArgumentList ( SyntaxKind openKind, SyntaxKind closeKind, bool atLeastOneArg, SyntaxToken &openToken, SeparatedSyntaxList &arguments, SyntaxToken &closeToken ) : void
openKind SyntaxKind
closeKind SyntaxKind
atLeastOneArg bool
openToken SyntaxToken
arguments SeparatedSyntaxList
closeToken SyntaxToken
return void
        private void ParseArgumentList(SyntaxKind openKind, SyntaxKind closeKind, bool atLeastOneArg, out SyntaxToken openToken, out SeparatedSyntaxList<ExpressionSyntax> arguments, out SyntaxToken closeToken)
        {
            openToken = Match(openKind);

            var args = new List<SyntaxNode>();

            if (atLeastOneArg || Current.Kind != closeKind)
            {
                CommaIsSeparatorStack.Push(true);

                try
                {
                    args.Add(ParseExpression());

                    while (Current.Kind == SyntaxKind.CommaToken)
                    {
                        args.Add(Match(SyntaxKind.CommaToken));
                        args.Add(ParseExpression());
                    }
                }
                finally
                {
                    CommaIsSeparatorStack.Pop();
                }
            }

            arguments = new SeparatedSyntaxList<ExpressionSyntax>(args);

            closeToken = Match(closeKind);
        }
HlslParser