public static NewExpressionSyntax BinarySubtractionExpression(NewExpressionSyntax expr1, NewExpressionSyntax expr2)
 {
     return(new NewExpressionSyntax(
                expr1.Expression,
                new BinaryExpressionTailSyntax(
                    new BinaryOperatorSyntax(new TokenNode(new SyntaxToken(SyntaxTokenType.MinusOperator), 0)),
                    expr2)));
 }
示例#2
0
 public void Render(NewExpressionSyntax newExpression)
 {
     Render(newExpression.Expression);
     if (newExpression.EmptyExpressionTail is null)
     {
         Render(newExpression.ExpressionTail);
     }
 }
示例#3
0
        private ExpressionSyntax ParseNewExpression()
        {
            var node = new NewExpressionSyntax();

            ParseExpected(SyntaxKind.NewKeyword);
            node.Function = ParseCallAndAccess(ParseExpression());
            return(node);
        }
 public static NewExpressionSyntax InvocationExpression(string identifier, NewExpressionSyntax argument)
 {
     return(new NewExpressionSyntax(
                new ExpressionSyntax(
                    new FunctionCallSyntax(
                        new TokenNode(new SyntaxToken(SyntaxTokenType.AlphanumericIdentifier, identifier), 0),
                        new TokenNode(new SyntaxToken(SyntaxTokenType.ParenthesisOpenSymbol), 0),
                        new ArgumentListSyntax(
                            argument,
                            new ArgumentListTailSyntax(new EmptyNode(0))),
                        new TokenNode(new SyntaxToken(SyntaxTokenType.ParenthesisCloseSymbol), 0))),
                new EmptyNode(0)));
 }
示例#5
0
 public static NewStatementSyntax CallStatement(string functionName, NewExpressionSyntax argument)
 {
     return(new NewStatementSyntax(
                new StatementSyntax(
                    new CallStatementSyntax(
                        new TokenNode(new SyntaxToken(SyntaxTokenType.CallKeyword), 0),
                        new TokenNode(new SyntaxToken(SyntaxTokenType.AlphanumericIdentifier, functionName), 0),
                        new TokenNode(new SyntaxToken(SyntaxTokenType.ParenthesisOpenSymbol), 0),
                        new ArgumentListSyntax(
                            argument,
                            new ArgumentListTailSyntax(new EmptyNode(0))),
                        new TokenNode(new SyntaxToken(SyntaxTokenType.ParenthesisCloseSymbol), 0))),
                new LineDelimiterSyntax(new EndOfLineSyntax(new TokenNode(new SyntaxToken(SyntaxTokenType.NewlineSymbol), 0)))));
 }
示例#6
0
 public static NewStatementSyntax SetStatement(string variableName, NewExpressionSyntax arrayIndex, EqualsValueClauseSyntax equalsValueClause)
 {
     return(new NewStatementSyntax(
                new StatementSyntax(
                    new SetStatementSyntax(
                        new TokenNode(new SyntaxToken(SyntaxTokenType.SetKeyword), 0),
                        new TokenNode(new SyntaxToken(SyntaxTokenType.AlphanumericIdentifier, variableName), 0),
                        new BracketedExpressionSyntax(
                            new TokenNode(new SyntaxToken(SyntaxTokenType.SquareBracketOpenSymbol), 0),
                            arrayIndex,
                            new TokenNode(new SyntaxToken(SyntaxTokenType.SquareBracketCloseSymbol), 0)),
                        equalsValueClause)),
                new LineDelimiterSyntax(new EndOfLineSyntax(new TokenNode(new SyntaxToken(SyntaxTokenType.NewlineSymbol), 0)))));
 }
示例#7
0
        public static NewExpressionSyntax ConstantExpression(float real)
        {
            var isPositive = real >= 0f;
            var isIntegral = real % 1 == 0f;
            var realString = $"{(isPositive ? real : -real)}{(isIntegral ? "." : string.Empty)}";

            var expr = new NewExpressionSyntax(
                new ExpressionSyntax(
                    new ConstantExpressionSyntax(
                        new TokenNode(new SyntaxToken(SyntaxTokenType.RealNumber, realString), 0))),
                new EmptyNode(0));

            return(isPositive
                ? expr
                : new NewExpressionSyntax(
                       new ExpressionSyntax(
                           new UnaryExpressionSyntax(
                               new UnaryOperatorSyntax(new TokenNode(new SyntaxToken(SyntaxTokenType.MinusOperator), 0)),
                               expr)),
                       new EmptyNode(0)));
        }
示例#8
0
 public virtual void VisitNewExpression(NewExpressionSyntax node) =>
 this.DefaultVisit(node);
示例#9
0
 public static EqualsValueClauseSyntax EqualsValueClause(NewExpressionSyntax expression)
 {
     return(new EqualsValueClauseSyntax(
                new TokenNode(new SyntaxToken(SyntaxTokenType.Assignment), 0),
                expression));
 }
示例#10
0
 public static LocalVariableDeclarationSyntax VariableDefinition(TypeSyntax typeNode, string variableName, NewExpressionSyntax value)
 {
     return(new LocalVariableDeclarationSyntax(
                new TokenNode(new SyntaxToken(SyntaxTokenType.LocalKeyword), 0),
                new VariableDeclarationSyntax(new VariableDefinitionSyntax(
                                                  typeNode,
                                                  new TokenNode(new SyntaxToken(SyntaxTokenType.AlphanumericIdentifier, variableName), 0),
                                                  new EqualsValueClauseSyntax(
                                                      new TokenNode(new SyntaxToken(SyntaxTokenType.Assignment), 0),
                                                      value))),
                new LineDelimiterSyntax(new EndOfLineSyntax(new TokenNode(new SyntaxToken(SyntaxTokenType.NewlineSymbol), 0)))));
 }
示例#11
0
 public virtual void VisitNewExpression(NewExpressionSyntax node)
 {
 }