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

ParseTerm() private method

private ParseTerm ( ) : ExpressionSyntax
return ShaderTools.Hlsl.Syntax.ExpressionSyntax
        private ExpressionSyntax ParseTerm()
        {
            ExpressionSyntax expr;

            var tk = Current.Kind;
            switch (tk)
            {
                case SyntaxKind.IdentifierToken:
                    expr = ParseIdentifierOrFunctionInvocationExpression();
                    break;
                case SyntaxKind.FalseKeyword:
                case SyntaxKind.TrueKeyword:
                case SyntaxKind.IntegerLiteralToken:
                case SyntaxKind.FloatLiteralToken:
                    expr = new LiteralExpressionSyntax(SyntaxFacts.GetLiteralExpression(Current.Kind), NextToken());
                    break;
                case SyntaxKind.StringLiteralToken:
                {
                    var stringTokens = new List<SyntaxToken> {NextToken()};
                    while (Current.Kind == SyntaxKind.StringLiteralToken)
                        stringTokens.Add(NextToken());
                    expr = new StringLiteralExpressionSyntax(stringTokens);
                    break;
                }
                case SyntaxKind.OpenParenToken:
                    expr = ParseCastOrParenthesizedExpression();
                    break;
                default:
                    if (_allowLinearAndPointAsIdentifiers && (tk == SyntaxKind.LinearKeyword || tk == SyntaxKind.PointKeyword))
                        goto case SyntaxKind.IdentifierToken;

                    if ((SyntaxFacts.IsPredefinedScalarType(tk) && tk != SyntaxKind.UnsignedKeyword && tk != SyntaxKind.VoidKeyword) || SyntaxFacts.IsPredefinedVectorType(tk) || SyntaxFacts.IsPredefinedMatrixType(tk))
                    {
                        if (Lookahead.Kind == SyntaxKind.OpenParenToken)
                        {
                            expr = ParseNumericConstructorInvocationExpression();
                            break;
                        }
                    }

                    expr = CreateMissingIdentifierName();

                    if (tk == SyntaxKind.EndOfFileToken)
                        expr = WithDiagnostic(expr, DiagnosticId.ExpressionExpected);
                    else
                        expr = WithDiagnostic(expr, DiagnosticId.InvalidExprTerm, tk.GetText());

                    break;
            }

            return ParsePostFixExpression(expr);
        }
HlslParser