private static XmlNode BuildInnerContextNode(InnerContextNode IN, XmlDocument Doc) { XmlElement icNode = Doc.CreateElement("i"); XmlAttribute icNodeType = Doc.CreateAttribute("Type"); icNodeType.InnerText = IN.Type; icNode.Attributes.Append(icNodeType); icNode.InnerText = string.Join(" ", IN.Name); return icNode; }
private static InnerContextNode TryReadInnerContextNode(XmlNode Node, dynamic Lexer) { InnerContextNode Result = new InnerContextNode(); Result.Name = new List<string>(); Result.Type = Node.Attributes["Type"]?.InnerText; Result.Name = TokenizeString(Node.InnerText, Lexer); return Result; }
private static List<InnerContextNode> TryReadInnerContext(XmlNode Node) { List<InnerContextNode> Result = new List<InnerContextNode>(); foreach (XmlNode subNode in Node.ChildNodes) { List<string> name = new List<string>(); XmlNode NameNode = TryFindNode(subNode, "Name"); InnerContextNode IC = new InnerContextNode(); IC.Name = TryReadListOfStrings(NameNode); IC.Type = TryFindValue(Node, "Type"); Result.Add(IC); } return Result; }
private static InnerContextNode TryReadInnerContextNode(XmlNode Node) { InnerContextNode Result = new InnerContextNode(); Result.Name = new List<string>(); foreach (XmlAttribute attr in Node.Attributes) if (attr.Name == "Type") Result.Type = attr.InnerText; foreach (XmlNode subNode in Node.ChildNodes) { if (subNode.Name == "string") Result.Name.Add(subNode.InnerText); else Result.SubNodes.Add(TryReadInnerContextNode(subNode)); } return Result; }
/// <summary> /// Преобразует внутренний контекст в список списков лексем /// </summary> /// <param name="Node"></param> /// <returns></returns> private static List<List<string>> ConvertInnerContextToList(InnerContextNode Node) { List<List<string>> Result = new List<List<string>>(); Result.Add(Node.Name); if (Node.SubNodes != null) foreach (InnerContextNode subnode in Node.SubNodes) Result.AddRange(ConvertInnerContextToList(subnode)); return Result; }