private void concatenacion(Estados estadoInicial, Estados estadoFinal)
        {
            Transiciones tr1 = new Transiciones("ε", estadoInicial, estadoFinal);

            transiciones.Add(tr1);
            pilaFinal.Push(finalSal);
            finalSal = null;
        }
        private void ExpresionToAutomata()  //private void regExpToAFN()
        {
            for (int i = 0; i < expresionRegularPostFijo.Length; i++)
            {
                if (simbolos.Contains(expresionRegularPostFijo.ElementAt(i)))
                {
                    Transiciones tr1 = new Transiciones(Char.ToString(expresionRegularPostFijo.ElementAt(i)));
                    transiciones.Add(tr1);

                    Estados estadoInicio = tr1.getEstadoInicial();
                    Estados estadoFinal  = tr1.getEstadoFinal();

                    pilaInicial.Push(estadoInicio);
                    pilaFinal.Push(estadoFinal);
                }
                else if (Char.ToString(expresionRegularPostFijo.ElementAt(i)).Equals("|"))
                {
                    Estados inicioLow = pilaInicial.Pop();
                    Estados finalLow  = pilaFinal.Pop();
                    Estados inicioUpp = pilaInicial.Pop();
                    Estados finalUpp  = pilaFinal.Pop();
                    or(inicioUpp, finalUpp, inicioLow, finalLow);
                }
                else if (Char.ToString(expresionRegularPostFijo.ElementAt(i)).Equals("*"))
                {
                    Estados estadoInicio = pilaInicial.Pop();
                    Estados estadoFinal  = pilaFinal.Pop();
                    asterisco(estadoInicio, estadoFinal);
                }
                else if (Char.ToString(expresionRegularPostFijo.ElementAt(i)).Equals("."))
                {
                    finalSal = pilaFinal.Pop();
                    Estados estadoFinal  = pilaFinal.Pop();
                    Estados estadoInicio = pilaInicial.Pop();
                    concatenacion(estadoFinal, estadoInicio);
                }
                if (i == expresionRegularPostFijo.Length - 1)
                {
                    estadosFinales.Add(pilaFinal.Pop());
                    if (simbolos.Contains('ε')) //epsilon
                    {
                        simbolos.Remove('ε');   //symbolList.remove(symbolList.indexOf('ε'));
                    }
                }
            }
        }
        private void asterisco(Estados estadoInicial, Estados estadoFinal)
        {
            Estados in_  = new Estados(contadorEstados);
            Estados out_ = new Estados(contadorEstados);

            Transiciones tr1 = new Transiciones("ε", estadoFinal, estadoInicial);
            Transiciones tr2 = new Transiciones("ε", in_, out_);
            Transiciones tr3 = new Transiciones("ε", in_, estadoInicial);
            Transiciones tr4 = new Transiciones("ε", estadoFinal, out_);

            transiciones.Add(tr1);
            transiciones.Add(tr2);
            transiciones.Add(tr3);
            transiciones.Add(tr4);

            pilaInicial.Push(in_);
            pilaFinal.Push(out_);
        }
        private void or(Estados inicioUpp, Estados finaUpp, Estados inicioLow, Estados finalLow)
        {
            Estados in_  = new Estados(contadorEstados);
            Estados out_ = new Estados(contadorEstados);

            Transiciones tr1 = new Transiciones("ε", in_, inicioUpp);
            Transiciones tr2 = new Transiciones("ε", in_, inicioLow);
            Transiciones tr3 = new Transiciones("ε", finaUpp, out_);
            Transiciones tr4 = new Transiciones("ε", finalLow, out_);

            transiciones.Add(tr1);
            transiciones.Add(tr2);
            transiciones.Add(tr3);
            transiciones.Add(tr4);

            pilaInicial.Push(in_);
            pilaFinal.Push(out_);
        }
        private void btnTransiciones_Click(object sender, EventArgs e)
        {
            Transiciones transiciones = new Transiciones(txaExpresiones.Text);

        }