private XmlElement CreateIParseableNode(XmlDocument doc, IParseable parseable) { ParseableElementAttribute metadata = parseable.GetType().GetCustomAttribute <ParseableElementAttribute>(); XmlElement parseableElem = doc.CreateElement(metadata.Name); foreach (PersistentProperty prop in parseable.Properties) { parseableElem.SetAttribute(prop.Name, prop.Getter()); } foreach (IParseable child in parseable.Children) { parseableElem.AppendChild(CreateIParseableNode(doc, child)); } return(parseableElem); }
private void AddNode(TreeIter parent, IParseable node) { if (node is ParseGraphNode) { AddNode(parent, (ParseGraphNode)node); } else if (node is Alt) { AddNode(parent, (Alt)node); } else { throw new Exception("Unsupported grammar node type " + node.GetType() + " in viewer"); } }
private void AddNode(TreeIter parent, IParseable node) { if (node is ParseGraphNode) AddNode(parent, (ParseGraphNode) node); else if (node is Alt) AddNode(parent, (Alt) node); else throw new Exception("Unsupported grammar node type " + node.GetType() + " in viewer"); }