Exemplo n.º 1
0
        private void CreateAutomat()
        {
            viewport.Controls.Clear();

            rootNode      = new NodeControl();
            rootNode.Name = "S";

            var p1 = rootNode
                     .Connect(new NodeControl(), "\\d")
                     .Connect(new NodeControl(), "\\d");

            var p2 = p1.Connect(new NodeControl(), "\\s")
                     .Connect(new NodeControl(), "[A-Яа-я]", "\\s")
                     .Connect(new NodeControl(), "\\s", "[A-Яа-я]");

            var p3 = p1.Connect(new NodeControl(), "\\.")
                     .Connect(new NodeControl(), "\\d")
                     .Connect(new NodeControl(), "\\d")
                     .Connect(new NodeControl(), "\\.");

            var p4 = p2.Connect(new NodeControl(), "\\d", "\\s");

            p3.Connect(p4, "\\d");

            p4.Connect(new NodeControl(), "\\d")
            .Connect(new NodeControl(), "\\d")
            .Connect(new NodeControl(), "\\d")
            .Name = "E";

            rootNode.ResetFlag();
            AddNodeToViewport(rootNode);
            viewport.Invalidate();
        }
Exemplo n.º 2
0
        // Создание автомата
        private void CreateAutomat()
        {
            //Удаляем все что было во вьюпорте
            viewport.Controls.Clear();

            // Стартовый узел
            rootNode      = new NodeControl();
            rootNode.Name = "S";

            // Создае узлы и ребра
            var p1 = rootNode
                     .Connect(new NodeControl(), "\\d")
                     .Connect(new NodeControl(), "\\d");

            var p2 = p1.Connect(new NodeControl(), "\\s")
                     .Connect(new NodeControl(), "[A-Яа-я]", "\\s")
                     .Connect(new NodeControl(), "\\s", "[A-Яа-я]");

            var p3 = p1.Connect(new NodeControl(), "\\.")
                     .Connect(new NodeControl(), "\\d")
                     .Connect(new NodeControl(), "\\d")
                     .Connect(new NodeControl(), "\\.");

            var p4 = p2.Connect(new NodeControl(), "\\d", "\\s");

            p3.Connect(p4, "\\d");

            p4.Connect(new NodeControl(), "\\d")
            .Connect(new NodeControl(), "\\d")
            .Connect(new NodeControl(), "\\d")
            .Name = "E";


            rootNode.ResetFlag();        // Сбрасываем флаг защиты от цикличного обхода
            AddNodeToViewport(rootNode); //Добавляем все узлы связвнные со стартового узла во вьюпорт
            viewport.Invalidate();
        }