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);
                //    }

                //}
            }
        }
Пример #2
0
 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();
 }
Пример #3
0
 void Awake()
 {
     // Crear una instancia de la clase.
     instance = this;
 }
Пример #4
0
 public void AgregarTransicion(char transicion, Estado destino)
 {
     Transiciones.Add(transicion, destino);
 }
Пример #5
0
        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());
        }