Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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(стрелка);
        }