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(); }
// Создание автомата 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(); }