public void MueveX_a(List <String> lis_cerraduras, Transiciones transicion, List <String> mueve_ira) { for (int i = 0; i < lis_cerraduras.Count; ++i) { NodeAFN nod_stado = return_nodoMueve(lis_cerraduras.ElementAt(i)); //if (transicion.transicion.Equals(nod_stado.Tran_left)) if (transicion.transicion.Equals(nod_stado.Tran_left) && nod_stado.Tran_left_Tipo == Tipo.TipoN.NORMAL && transicion.tipo.Equals(nod_stado.tipo)) { if (nod_stado.left != null) { //MessageBox.Show(nod_stado.left.lexema, transicion.transicion + " izq"); mueve_ira.Add(nod_stado.left.lexema); } } ////if (transicion.transicion.Equals(nod_stado.Tran_right)) //if (transicion.transicion.Equals(nod_stado.Tran_right) && // nod_stado.Tran_left_Tipo == Tipo.TipoN.NORMAL) //{ // if (nod_stado.right != null) // { // //MessageBox.Show(nod_stado.right.lexema, transicion.transicion + " der"); // mueve_ira.Add(nod_stado.right.lexema); // } //} } }
public Estado Navegar(char entrada) { if (Transiciones.TryGetValue(entrada, out Estado siguiente)) { return(siguiente); } // No encontró la transición // Buscar si entrada aparece en el alfabeto if (AutomataPadre.Alfabeto.Contains(entrada)) { return(this); } throw new TransitionNotInAlphabetException(); }
void Awake() { // Crear una instancia de la clase. instance = this; }
public void AgregarTransicion(char transicion, Estado destino) { Transiciones.Add(transicion, destino); }
public NodeAFN leyendo_expresiones() { //String eleDer, eleIzq; NodeAFN eleDer, eleIzq; /*recorriendo listado de expresiores regulares*/ //for (String expre : pref_expresiones) { //for (int i = 0; i < pref_expresiones.size(); ++i){ for (int i = pref_expresiones.Count - 1; i >= 0; i--) { //////////// JOptionPane.showMessageDialog(null,pref_expresiones.get(i).er); /*verificando si es operador*/ //if (IsOperador(expre)) { //if (IsOperador(pref_expresiones.get(i))) { if (pref_expresiones.ElementAt(i).tipo.Equals("O")) { int tipo = TipoOperador(pref_expresiones.ElementAt(i).er); if (tipo == 2) { //eleDer = pila.Pop(); eleIzq = pila.Pop(); if (!pila.Any()) { MessageBox.Show("Faltan Elementos para armar arbol"); i = pref_expresiones.Count; } eleDer = pila.Pop(); //eleIzq = pila.Pop(); NodeAFN resultado = operar(eleIzq, pref_expresiones.ElementAt(i).er, eleDer, i); //odeAFN resultado = operar(eleIzq, pref_expresiones.get(i).er, eleDer, i); pila.Push(resultado); } else if (tipo == 1) { // //eleDer = pila.pop(); // eleIzq = pila.pop(); if (!pila.Any()) { MessageBox.Show("Faltan Elementos para armar arbol"); i = pref_expresiones.Count; } //eleIzq = pila.pop(); eleDer = pila.Pop(); //NodeArbol resultado = operar_1(pref_expresiones.get(i).er, eleDer, i); NodeAFN resultado = operar(eleDer, pref_expresiones.ElementAt(i).er, null, i); pila.Push(resultado); } } else { //pila.push(pref_expresiones.get(i)); //this.root = new NodeAVL(nombre, contenido, user, fecha_creacion); //NodeArbol n_nodo = new NodeArbol(pref_expresiones.get(i).er, i, "F", 0, 0, 0); //NodeArbol n_nodo = new NodeArbol(pref_expresiones.get(i).er, i, "A", 0, "-", "-"); //NodeAFN n_nodo = new NodeAFN(pref_expresiones.ElementAt(i).er, i, pref_expresiones.ElementAt(i).tipo, Tipo.TipoN.NORMAL); NodeAFN n_nodo = new NodeAFN("N", i, pref_expresiones.ElementAt(i).tipo, Tipo.TipoN.NORMAL); n_nodo.Tran_left = pref_expresiones.ElementAt(i).er; n_nodo.Tran_left_Tipo = Tipo.TipoN.NORMAL; n_nodo.ultimo_ref = n_nodo; pila.Push(n_nodo); //MessageBox.Show(pref_expresiones.ElementAt(i).er, pref_expresiones.ElementAt(i).tipo); //MessageBox.Show(Existe_transicion(pref_expresiones.ElementAt(i).er, pref_expresiones.ElementAt(i).tipo).ToString(), "Existe_transicion"); if (Existe_transicion(pref_expresiones.ElementAt(i).er, pref_expresiones.ElementAt(i).tipo) == false) { Transiciones tran_new = new Transiciones(pref_expresiones.ElementAt(i).er, pref_expresiones.ElementAt(i).tipo); Listado_Tran.Add(tran_new); } listado_Nodos.Add(n_nodo); ///agregar ref de nodos //////JOptionPane.showMessageDialog(null,"("+i+") "+pref_expresiones.get(i)); } } //nodo final return(pila.Pop()); }