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(стрелка); }