Пример #1
0
        private static ArgumentListSyntax Arguments(ParserRuleContext node)
        {
            var expr = null as ExpressionSyntax;
            var args = null as ArgumentListSyntax;

            if (node.ChildCount == 1)
            {
                expr = visitNode(node.GetRuleContext <ParserRuleContext>(0));
            }
            else
            {
                Debug.Assert(node.ChildCount == 2);
                expr = visitNode(node.GetRuleContext <ParserRuleContext>(1));
                args = Arguments(node.GetRuleContext <ParserRuleContext>(0));
            }

            var arg = CSharp.Argument(expr);

            if (args != null)
            {
                return(args.AddArguments(arg));
            }

            return(CSharp
                   .ArgumentList(CSharp
                                 .SeparatedList(new[] { arg })));
        }
Пример #2
0
        private static ExpressionSyntax Parenthesized(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
            {
                return(Expression(node.GetRuleContext <ParserRuleContext>(0)));
            }

            Debug.Assert(node.ChildCount == 3);
            var expr = visitNode(node.GetRuleContext <ParserRuleContext>(0));

            return(CSharp.ParenthesizedExpression(expr));
        }
Пример #3
0
        private static ExpressionSyntax Cast(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
            {
                return(Expression(node.GetRuleContext <ParserRuleContext>(0)));
            }

            Debug.Assert(node.ChildCount == 2);
            var type = CSharp.ParseTypeName(node.children[0].GetText());
            var expr = visitNode(node.GetRuleContext <ParserRuleContext>(1));

            return(CSharp.CastExpression(type, expr));
        }
Пример #4
0
        private static ExpressionSyntax Index(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
            {
                return(Expression(node.GetRuleContext <ParserRuleContext>(0)));
            }

            Debug.Assert(node.ChildCount == 4);
            var expr  = visitNode(node.GetRuleContext <ParserRuleContext>(0));
            var index = (ArgumentListSyntax)Arguments(node.GetRuleContext <ParserRuleContext>(2));

            return(CSharp.ElementAccessExpression(
                       expr, CSharp
                       .BracketedArgumentList(index.Arguments)));
        }
Пример #5
0
        private static ExpressionSyntax PostFix(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
            {
                return(Expression(node.GetRuleContext <ParserRuleContext>(0)));
            }

            Debug.Assert(node.ChildCount == 2);
            var expr = visitNode(node.GetRuleContext <ParserRuleContext>(0));

            SyntaxKind kind;
            var        op = GetBinaryOperator(node.children[1].GetText(), out kind);

            return(CSharp.PostfixUnaryExpression(kind, expr, op));
        }
Пример #6
0
        private static ExpressionSyntax Assignment(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
            {
                return(Expression(node.GetRuleContext <ParserRuleContext>(0)));
            }

            Debug.Assert(node.ChildCount == 3);
            var left  = visitNode(node.GetRuleContext <ParserRuleContext>(0));
            var right = visitNode(node.GetRuleContext <ParserRuleContext>(2));

            SyntaxKind kind;
            var        op = GetBinaryOperator(node.children[1].GetText(), out kind);

            return(CSharp.AssignmentExpression(kind, left, op, right));
        }
        private static Selection GetProcedureContextSelection(ParserRuleContext context)
        {
            var endContext = context.GetRuleContext <VBAParser.EndOfStatementContext>(0);

            return(new Selection(context.Start.Line == 0 ? 1 : context.Start.Line,
                                 context.Start.Column + 1,
                                 endContext.Start.Line == 0 ? 1 : endContext.Start.Line,
                                 endContext.Start.Column + 1));
        }
Пример #8
0
        private static ArgumentListSyntax Arguments(ParserRuleContext node)
        {
            var expr = null as ExpressionSyntax;
            var args = null as ArgumentListSyntax;
            if (node.ChildCount == 1)
                expr = visitNode(node.GetRuleContext<ParserRuleContext>(0));
            else
            {
                Debug.Assert(node.ChildCount == 2);
                expr = visitNode(node.GetRuleContext<ParserRuleContext>(1));
                args = Arguments(node.GetRuleContext<ParserRuleContext>(0));
            }

            var arg = CSharp.Argument(expr);
            if (args != null)
                return args.AddArguments(arg);

            return CSharp
                .ArgumentList(CSharp
                .SeparatedList(new[] { arg }));
        }
Пример #9
0
        private static ExpressionSyntax Call(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
            {
                return(Expression(node.GetRuleContext <ParserRuleContext>(0)));
            }

            var expr = visitNode(node.GetRuleContext <ParserRuleContext>(0));
            var args = null as ArgumentListSyntax;

            if (node.ChildCount == 4)
            {
                args = Arguments(node.GetRuleContext <ParserRuleContext>(2));
            }
            else
            {
                args = CSharp.ArgumentList();
            }

            return(CSharp.InvocationExpression(expr, args));
        }
Пример #10
0
 private LogicalOperation Goto(ParserRuleContext context, int i) =>
 Visit(context.GetRuleContext <LogicalGrammarParser.ExpressionContext>(i));
Пример #11
0
 private static ExpressionSyntax Expression(ParserRuleContext node)
 {
     Debug.Assert(node.ChildCount == 1);
     return(visitNode(node.GetRuleContext <ParserRuleContext>(0)));
 }
Пример #12
0
        private static ExpressionSyntax Cast(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
                return Expression(node.GetRuleContext<ParserRuleContext>(0));

            Debug.Assert(node.ChildCount == 2);
            var type = CSharp.ParseTypeName(node.children[0].GetText());
            var expr = visitNode(node.GetRuleContext<ParserRuleContext>(1));

            return CSharp.CastExpression(type, expr);
        }
Пример #13
0
 private static ExpressionSyntax Expression(ParserRuleContext node)
 {
     Debug.Assert(node.ChildCount == 1);
     return visitNode(node.GetRuleContext<ParserRuleContext>(0));
 }
Пример #14
0
        private static ExpressionSyntax Index(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
                return Expression(node.GetRuleContext<ParserRuleContext>(0));

            Debug.Assert(node.ChildCount == 4);
            var expr = visitNode(node.GetRuleContext<ParserRuleContext>(0));
            var index = (ArgumentListSyntax)Arguments(node.GetRuleContext<ParserRuleContext>(2));

            return CSharp.ElementAccessExpression(
                expr, CSharp
                .BracketedArgumentList(index.Arguments));
        }
Пример #15
0
        private static ExpressionSyntax Parenthesized(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
                return Expression(node.GetRuleContext<ParserRuleContext>(0));

            Debug.Assert(node.ChildCount == 3);
            var expr = visitNode(node.GetRuleContext<ParserRuleContext>(0));

            return CSharp.ParenthesizedExpression(expr);
        }
Пример #16
0
        private static ExpressionSyntax UnaryExpression(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
                return Expression(node.GetRuleContext<ParserRuleContext>(0));

            Debug.Assert(node.ChildCount == 2);
            var expr = visitNode(node.GetRuleContext<ParserRuleContext>(2));

            SyntaxKind kind;
            var op = GetUnaryOperator(node.children[0].GetText(), out kind);

            return CSharp.PrefixUnaryExpression(kind, op, expr);
        }
Пример #17
0
        private static ExpressionSyntax Call(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
                return Expression(node.GetRuleContext<ParserRuleContext>(0));

            var expr = visitNode(node.GetRuleContext<ParserRuleContext>(0));
            var args = null as ArgumentListSyntax;

            if (node.ChildCount == 4)
                args = Arguments(node.GetRuleContext<ParserRuleContext>(2));
            else
                args = CSharp.ArgumentList();

            return CSharp.InvocationExpression(expr, args);
        }
Пример #18
0
 static public ParserRuleContext GetRule(this ParserRuleContext context, int i)
 {
     return(context.GetRuleContext <ParserRuleContext>(i));
 }
Пример #19
0
        private static ExpressionSyntax Assignment(ParserRuleContext node)
        {
            if (node.ChildCount == 1)
                return Expression(node.GetRuleContext<ParserRuleContext>(0));

            Debug.Assert(node.ChildCount == 3);
            var left = visitNode(node.GetRuleContext<ParserRuleContext>(0));
            var right = visitNode(node.GetRuleContext<ParserRuleContext>(2));

            SyntaxKind kind;
            var op = GetBinaryOperator(node.children[1].GetText(), out kind);

            return CSharp.AssignmentExpression(kind, left, op, right);
        }
Пример #20
0
        private string GetNodeName(ParserRuleContext node)
        {
            QualifiedNameContext qualifiedName = node.GetRuleContext <QualifiedNameContext>(0);

            return(qualifiedName?.GetText());
        }
Пример #21
0
 private Expression GetLeft(ParserRuleContext context)
 {
     return(Visit(context.GetRuleContext <QlParser.ExprContext>(0)));
 }