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); } } }
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'. }