private TreeNode ToTreeNode(Конус w) { return(new TreeNode(w.Имя, w.Кообласть. Select <KeyValuePair <string, Конус>, TreeNode>( linksPair => ToTreeNode(linksPair.Value)). ToArray())); }
private object Стрелки(ASTNode node) { //Стрелки = Стрелка ', Стрелки | Стрелка ; List <Конус> результат = new List <Конус>(); switch (node.RuleTerm) { case "Стрелка ', Стрелки": { Конус стрелка = Translate(node.Childs["Стрелка"]) as Конус; List <Конус> стрелки = Translate(node.Childs["Стрелки"]) as List <Конус>; результат.Add(стрелка); результат.AddRange(стрелки); }; break; case "Стрелка": { Конус стрелка = Translate(node.Childs["Стрелка"]) as Конус; результат.Add(стрелка); }; break; default: throw new ArgumentException("Неизвестный терм " + node.RuleTerm + " правила: " + node.RuleName); } return(результат); }
private object Категория(ASTNode node) { //Категория = '{ Стрелки '} ; Конус стрелка = Translate(node.Childs["Стрелки"]) as Конус; return(стрелка); }
private Конус ToDomain(ASTNode node) { //Домен = Слово '{ Значения '} | Слово '= '{ Значения '} | Слово ; Конус w = Translate(node.Childs["Слово"]) as Конус; if (node.RuleTerm == "Слово '{ Значения '}") //Добавление слов в домен { IEnumerable <Конус> words = Translate(node.Childs["Значения"]) as IEnumerable <Конус>; w.ДобавитьВКообласть(words); } else if (node.RuleTerm == "Слово '= '{ Значения '}") //Замена домена слова { IEnumerable <Конус> words = Translate(node.Childs["Значения"]) as IEnumerable <Конус>; w.Кообласть.Clear(); w.ДобавитьВКообласть(words); } return(w); }
private object Стрелка(ASTNode node) { //Стрелка = Область Слово Кообласть | Слово Кообласть | Область Слово | Слово ; Конус стрелка = Translate(node.Childs["Слово"]) as Конус; switch (node.RuleTerm) { case "Область Слово Кообласть": { List <Конус> область = Translate(node.Childs["Область"]) as List <Конус>; List <Конус> кообласть = Translate(node.Childs["Кообласть"]) as List <Конус>; стрелка.ДобавитьВКообласть(кообласть); стрелка.ДобавитьВОбласть(область); }; break; case "Слово Кообласть": { List <Конус> кообласть = Translate(node.Childs["Кообласть"]) as List <Конус>; стрелка.ДобавитьВКообласть(кообласть); }; break; case "Область Слово": { List <Конус> область = Translate(node.Childs["Кообласть"]) as List <Конус>; стрелка.ДобавитьВОбласть(область); }; break; case "Слово": { //морфизм "стрелка" уже создан }; break; default: throw new ArgumentException("Неизвестный терм " + node.RuleTerm + " правила: " + node.RuleName); } return(стрелка); }