Ejemplo n.º 1
0
        public Ust VisitBlock(JavaParser.BlockContext context)
        {
            Statement[] statements = context.blockStatement()
                                     .Select(s => (Statement)Visit(s))
                                     .Where(s => s != null).ToArray();

            var result = new BlockStatement(statements, context.GetTextSpan());

            return(result);
        }
Ejemplo n.º 2
0
        public UstNode VisitMethodDeclaration(JavaParser.MethodDeclarationContext context)
        {
            JavaParser.TypeTypeOrVoidContext type = context.typeTypeOrVoid();
            ITerminalNode child0Terminal          = context.GetChild <ITerminalNode>(0);
            ITerminalNode identifier = context.IDENTIFIER();

            JavaParser.FormalParametersContext formalParameters = context.formalParameters();
            JavaParser.BlockContext            methodBody       = context.methodBody().block();

            MethodDeclaration result = ConvertMethodDeclaration(type, child0Terminal, identifier, formalParameters, methodBody,
                                                                context.GetTextSpan());

            return(result);
        }
        private MethodDeclaration ConvertMethodDeclaration(JavaParser.TypeTypeOrVoidContext type, ITerminalNode child0Terminal,
                                                           ITerminalNode identifier, JavaParser.FormalParametersContext formalParameters,
                                                           JavaParser.BlockContext methodBody, TextSpan textSpan)
        {
            TypeToken typeToken;

            if (type != null)
            {
                typeToken = (TypeToken)Visit(type);
            }
            else
            {
                var voidTerminal = child0Terminal;
                typeToken = new TypeToken(voidTerminal.GetText(), voidTerminal.GetTextSpan());
            }

            var id = (IdToken)Visit(identifier);

            // TODO: Fix with ParamsNode
            IEnumerable <ParameterDeclaration> parameters;

            JavaParser.FormalParameterListContext formalParameterList = formalParameters.formalParameterList();
            if (formalParameterList == null)
            {
                parameters = Enumerable.Empty <ParameterDeclaration>();
            }
            else
            {
                parameters = formalParameterList.formalParameter()
                             .Select(param => (ParameterDeclaration)Visit(param))
                             .Where(p => p != null).ToArray();
            }

            BlockStatement body = methodBody != null
                ? (BlockStatement)Visit(methodBody)

                                  /*: new BlockStatement(Enumerable.Empty<Statement>(),
                                   *  GetAndConvertTextSpan((ITerminalNode)context.GetChild(context.ChildCount - 1)), FileNode);*/
                : null;

            var result = new MethodDeclaration(id, parameters, body, textSpan);

            return(result);
        }
Ejemplo n.º 4
0
 public override bool VisitBlock([NotNull] JavaParser.BlockContext context)
 {
     return(true);
 }