private void EmitImportNode(ImportNode node, out AssociativeNode outnode)
        {
            Validity.Assert(node != null);

            ProtoCore.AST.AssociativeAST.ImportNode importNode = null;

            importNode            = new ProtoCore.AST.AssociativeAST.ImportNode();
            importNode.ModuleName = node.ModuleName;

            //(AstRootNode as CodeBlockNode).Body.Add(importNode);
            outnode = importNode;
        }
        public void AddNodesToAST()
        {
            AstRootNode = new CodeBlockNode();

            List <Node> rootNodes = FindRoots();

            Validity.Assert(rootNodes.Count() > 0);

            // TODO Jun: Check with Aparajit, the relevance of this assert...
            //Validity.Assert(GraphUtilities.ImportNodes != null);

            // TODO: Aparajit: To check if the AST nodes for preloaded assemblies and built-ins need to be added to this AST

            /*foreach(AssociativeNode node in GraphUtilities.ImportNodes.Body)
             * {
             *  (AstRootNode as CodeBlockNode).Body.Add(node);
             * }*/

            // First emit all the ImportNode's
            foreach (Node rNode in rootNodes)
            {
                ImportNode importNode = rNode as ImportNode;
                if (importNode != null)
                {
                    AssociativeNode outNode = null;
                    EmitImportNode(importNode, out outNode);

                    (AstRootNode as CodeBlockNode).Body.Add(outNode);
                }
                else if (importNode == null)
                {
                    AssociativeNode outNode = null;
                    DFSTraverse(rNode, out outNode);

                    (AstRootNode as CodeBlockNode).Body.Add(outNode);
                }
            }
        }
Exemple #3
0
        public bool CreateImportNode(uint guid, string library)
        {
            if (guid < 0)
            {
                throw new ArgumentException("Invalid argument value!", "guid");
            }
            if (String.IsNullOrEmpty(library))
            {
                throw new ArgumentException("Invalid argument value!", "identifier");
            }

            ImportNode id = new ImportNode(library, guid);
            graph.AddNode(id);
            return true; // If failed, return 'false'.
        }