/// <summary> /// Creates a new uninitialized AST node. Since a specific AST Node Type /// wasn't indicated, the new AST node is created using the current default /// AST Node type - <see cref="defaultASTNodeTypeObject_"/> /// </summary> /// <returns>An uninitialized AST node object.</returns> public virtual AST create() { AST newNode; if (defaultCreator_ == null) { newNode = createFromNodeTypeObject(defaultASTNodeTypeObject_); } else { newNode = defaultCreator_.Create(); } return(newNode); }
private AST createFromNodeType(int nodeTypeIndex) { Debug.Assert((nodeTypeIndex >= 0) && (nodeTypeIndex <= nodeTypeObjectList_.Length), "Invalid AST node type!"); AST newNode = null; ASTNodeCreator creator = (ASTNodeCreator)typename2creator_[nodeTypeIndex.ToString()]; if (creator != null) { newNode = creator.Create(); } else { Type nodeTypeObject = nodeTypeObjectList_[nodeTypeIndex]; if (nodeTypeObject == null) { if (defaultCreator_ == null) { newNode = createFromNodeTypeObject(defaultASTNodeTypeObject_); } else { newNode = defaultCreator_.Create(); } } else { newNode = createFromNodeTypeObject(nodeTypeObject); } } return(newNode); }
private AST createFromNodeName(string nodeTypeName) { AST newNode = null; ASTNodeCreator creator = (ASTNodeCreator)typename2creator_[nodeTypeName]; if (creator != null) { newNode = creator.Create(); if (newNode == null) { throw new ArgumentException("Unable to create AST Node Type: '" + nodeTypeName + "'"); } } else { newNode = createFromNodeTypeObject(loadNodeTypeObject(nodeTypeName)); } return(newNode); }
private AST createFromAST(AST node) { AST newNode = null; Type nodeAsTypeObj = node.GetType(); ASTNodeCreator creator = (ASTNodeCreator)typename2creator_[nodeAsTypeObj.FullName]; if (creator != null) { newNode = creator.Create(); if (newNode == null) { throw new ArgumentException("Unable to create AST Node Type: '" + nodeAsTypeObj.FullName + "'"); } } else { newNode = createFromNodeTypeObject(nodeAsTypeObj); } return(newNode); }