Exemplo n.º 1
0
        public override ASTNode VisitFunctionDef([NotNull] DaedalusParser.FunctionDefContext context)
        {
            NameNode typeNameNode = new NameNode(GetLocation(context.dataType()), context.dataType().GetText());
            NameNode nameNode     = new NameNode(GetLocation(context.nameNode()), context.nameNode().GetText());

            List <ParameterDeclarationNode> varDeclarationNodes = new List <ParameterDeclarationNode>();

            foreach (DaedalusParser.ParameterDeclContext parameterDeclContext in context.parameterList().parameterDecl())
            {
                varDeclarationNodes.Add((ParameterDeclarationNode)VisitParameterDecl(parameterDeclContext));
            }

            List <StatementNode> statementNodes = GetStatementNodes(context.statementBlock());

            return(new FunctionDefinitionNode(GetLocation(context), typeNameNode, nameNode, varDeclarationNodes, statementNodes, false));
        }