Esempio n. 1
0
 private TreeNode ToTreeNode(Конус w)
 {
     return(new TreeNode(w.Имя, w.Кообласть.
                         Select <KeyValuePair <string, Конус>, TreeNode>(
                             linksPair => ToTreeNode(linksPair.Value)).
                         ToArray()));
 }
Esempio n. 2
0
        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(результат);
        }
Esempio n. 3
0
        private object Категория(ASTNode node)
        {
            //Категория = '{ Стрелки '} ;
            Конус стрелка = Translate(node.Childs["Стрелки"]) as Конус;

            return(стрелка);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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(стрелка);
        }