public static NodeController getInstancia() { if (instancia == null) { instancia = new NodeController(); } return(instancia); }
public void Insert(String name, ArrayList ar, String path) { ArrayList vuelta = new ArrayList(); // array que va a almacenar los elementos en orden inverso for (int i = ar.Count - 1; i >= 0; i--) { vuelta.Add(ar[i]); NodeController.getInstancia().InsertStack(ar[i].ToString()); } String ast = ""; foreach (var item in vuelta) { ast = ast + " " + item; } Console.WriteLine(ast); RegularExpression re = new RegularExpression(name, vuelta); arrayListER.Add(re); NodeController.getInstancia().Print(name, path); //Convierte la expresion regular de prefija a pos ArrayList regularExpresion = NodeController.getInstancia().ConvertExpression(NodeController.getInstancia().getRoot()); ArrayList regex = new ArrayList(); try { regex = RegexController.Instance.infixToPostfix(regularExpresion); } catch (Exception a) { Console.WriteLine("Expresión mal ingresada"); } string st = ""; foreach (var item in regularExpresion) { st = st + item; } Console.WriteLine(name + "->" + st); //CONSTRUYE EL AUTOMATA ANF AFN aFN = new AFN(); aFN.construirAutomata(regex); Automata.Automata afn_result = aFN.Afn; ThompsonControlador.Instance.generarDOT("AFN", name, afn_result); InsertAutomataAFNName("AFN " + name); //CONSTRUYE EL AUTOMATA AFD AFD AFD = new AFD(); AFD.conversionAFN(afn_result); Automata.Automata afd_result = AFD.Afd; //CONSTRUYE EL AUTOMATA SIN ESTADO STRAMPA Automata.Automata afd_trampa = AFD.RemoveCheatStates(afd_result); ThompsonControlador.Instance.generarDOT("AFD", name, afd_trampa); InsertAutomataAFDName("AFD " + name); //CONSTRUYE LA TABLA ThompsonControlador.Instance.TableConstructor(name, path, afd_trampa); InsertTablaName(name + "Table"); //ENVIA EL AUTOMATA A SER GUARDADO PARA POSTERIOR EVALUACION EvaluatorController.Instance.Insert(name, afd_trampa); NodeController.getInstancia().clearList(); }