14 using System.Collections.Generic;
21 #if SILICONSTUDIO_PLATFORM_WINDOWS_DESKTOP
22 public static class ParseTreeExtensions {
24 public static string ToXml(
this ParseTree parseTree) {
25 if (parseTree == null || parseTree.Root == null)
return string.Empty;
26 var xdoc = ToXmlDocument(parseTree);
28 XmlTextWriter xw =
new XmlTextWriter(sw);
29 xw.Formatting = Formatting.Indented;
35 public static XmlDocument ToXmlDocument(
this ParseTree parseTree) {
36 var xdoc =
new XmlDocument();
37 if (parseTree == null || parseTree.Root == null)
return xdoc;
38 var xTree = xdoc.CreateElement(
"ParseTree");
39 xdoc.AppendChild(xTree);
40 var xRoot = parseTree.Root.ToXmlElement(xdoc);
41 xTree.AppendChild(xRoot);
45 public static XmlElement ToXmlElement(
this ParseTreeNode node, XmlDocument ownerDocument) {
46 var xElem = ownerDocument.CreateElement(
"Node");
47 xElem.SetAttribute(
"Term", node.Term.Name);
48 if (node.Term.AstNodeType != null)
49 xElem.SetAttribute(
"AstNodeType", node.Term.AstNodeType.Name);
50 if (node.Token != null) {
51 xElem.SetAttribute(
"Terminal", node.Term.GetType().Name);
53 if (node.Token.Value != null)
54 xElem.SetAttribute(
"Value", node.Token.Value.ToString());
56 foreach (var child
in node.ChildNodes) {
57 var xChild = child.ToXmlElement(ownerDocument);
58 xElem.AppendChild(xChild);
System.IO.StringWriter StringWriter