public void Expresion()
        {
            actual = tokens.ElementAt(i);
            path   = actual.lexema + ".dot";
            file   = File.CreateText(path);
            file.WriteLine("digraph G{");
            file.WriteLine("node[shape=circle, style=filled, color= Gray70];");
            file.WriteLine("edge[color=black]");
            i++;
            actual = tokens.ElementAt(i);
            if (actual.codigo.Equals(27))
            {
                i++;
                actual = tokens.ElementAt(i);
                if (actual.codigo.Equals(26))
                {
                    //arbol = new Arbol(estado);
                    i++;
                    actual = tokens.ElementAt(i);
                    tokens Opaux = null;
                    while (actual.codigo != 16)
                    {
                        if (actual.tipo.Equals("Operacion"))
                        {
                            Opaux = actual;
                            pila.Push(actual);

                            i++;
                            actual = tokens.ElementAt(i);
                        }
                        else if (actual.codigo.Equals(14) || actual.codigo.Equals(15))
                        {
                            i++;
                            actual = tokens.ElementAt(i);
                        }
                        else
                        {
                            Graph(Opaux);
                            Opaux = null;
                            i++;

                            actual = tokens.ElementAt(i);
                        }
                        while (Verificar() == true)
                        {
                            nodoP auxiliar = pila.peek();
                            GraphnodoP(auxiliar);
                        }
                    }
                    while (pila.primero != null)
                    {
                        nodoP aux = pila.peek();
                        GraphnodoP(aux);
                    }
                    estado = 0;
                    file.WriteLine("}");
                    file.Close();
                    arbol.reporte(path);
                    i++;
                    actual = tokens.ElementAt(i);
                    while (actual.codigo.Equals(5) || actual.codigo.Equals(6))
                    {
                        i++;
                        actual = tokens.ElementAt(i);
                    }
                    if (actual.codigo.Equals(7))
                    {
                        Expresion();
                    }
                    while (actual.codigo.Equals(5) || actual.codigo.Equals(6))
                    {
                        i++;
                        actual = tokens.ElementAt(i);
                    }
                    ValidarExpresiones valExpr = new ValidarExpresiones(i, tokens, SIGNOS, conjuntos);
                    valExpr.Validar();
                }
            }
        }
 public void GraphnodoP(nodoP aux)
 {
     ElegirOp(aux);
 }
        public void Graph(tokens Opaux)
        {
            nodoP aux = pila.peek();

            if (Opaux == null)
            {
                pila.Push(actual);
            }
            else if (Opaux.codigo.Equals(8))
            {
                if (aux.actual.tipo != "Operacion")
                {
                    //arbol.Disyuncion(aux.actual, actual);
                    GraficarDisyuncion(aux.actual, actual);
                    pila.Pop();
                    pila.Pop();
                    tokens tokenP = new tokens(aux.actual, actual, inicial, final, 8);

                    //tokens tokenP = new tokens(arbol, arbol.eInicio, arbol.eFinal);
                    pila.Push(tokenP);
                }
                else
                {
                    pila.Push(actual);
                }
            }
            else if (Opaux.codigo.Equals(9))
            {
                if (aux.actual.tipo != "Operacion")
                {
                    //arbol.Concatenacion(aux.actual, actual);
                    GraficarConcatenacion(aux.actual, actual);
                    pila.Pop();
                    pila.Pop();
                    tokens tokenP = new tokens(aux.actual, actual, inicial, final, 9);
                    //tokens tokenP = new tokens(arbol, arbol.eInicio, arbol.eFinal);
                    pila.Push(tokenP);
                }
                else
                {
                    pila.Push(actual);
                }
            }
            else if (Opaux.codigo.Equals(10))
            {
                pila.Pop();

                Graficar0oUnaVez(actual);
                tokens tokenP = new tokens(aux.actual, actual, inicial, final, 10);

                /*arbol.G0oUnaVez(actual);
                 * tokens tokenP = new tokens(arbol, arbol.eInicio, arbol.eFinal);*/
                pila.Push(tokenP);
            }
            else if (Opaux.codigo.Equals(11))
            {
                pila.Pop();
                //arbol.G1oMasVeces(actual);
                Graficar1oMasVeces(actual);
                tokens tokenP = new tokens(aux.actual, actual, inicial, final, 11);
                //tokens tokenP = new tokens(arbol, arbol.eInicio, arbol.eFinal);
                pila.Push(tokenP);
            }
            else if (Opaux.codigo.Equals(12))
            {
                pila.Pop();
                //arbol.kleene(actual);
                GraficarKleene(actual);
                tokens tokenP = new tokens(aux.actual, actual, inicial, final, 12);
                //tokens tokenP = new tokens(arbol, arbol.eInicio, arbol.eFinal);
                pila.Push(tokenP);
            }
        }