Exemplo n.º 1
0
 //Validar si es raiz
 public Boolean noRaiz(Nodos nodo)
 {
     for (int i = 0; i < nodosOrdenados.Count; i++)
     {
         Nodos nodoAux = (Nodos)nodosOrdenados[i];
         if (nodo.getNombre().Equals(nodoAux.getNombre()) && nodo.getNivel().Equals(nodoAux.getNivel()))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 2
0
 //Filtrar niveles
 public void filtrarNiveles()
 {
     for (int i = 0; i < nodosOrdenados.Count; i++)
     {
         Nodos nodoNuevo  = (Nodos)nodosOrdenados[i];
         int   nivelNuevo = getNivel(nodoNuevo.getPadre());
         if (nivelNuevo != 0)
         {
             nodoNuevo.getPadre().setNivel(nivelNuevo);
         }
     }
 }
Exemplo n.º 3
0
 //Obtener nivel de los nodos
 public int getNivel(Nodos nodo)
 {
     for (int i = 0; i < nodosOrdenados.Count; i++)
     {
         Nodos nodoAux = (Nodos)nodosOrdenados[i];
         if (nodo.getNivel() != nodoAux.getNivel() && nodo.getNombre().Equals(nodoAux.getNombre()) && !validarHijos(nodoAux) &&
             !noRaiz(nodo))
         {
             return(nodoAux.getNivel());
         }
     }
     return(0);
 }
Exemplo n.º 4
0
        //Filtrar arboles correctos
        public void filtrarArbol()
        {
            Nodos nodoAux;

            for (int i = 0; i < nodos.Count; i++)
            {
                Nodos padre = (Nodos)nodos[i];
                for (int j = 0; j < padre.getHijos().Count; j++)
                {
                    padre.setNivel(i);
                    nodoAux = new Nodos(padre.getHijos()[j].ToString(), padre, (i + 1));
                    nodosOrdenados.Add(nodoAux);
                }
            }
            filtrarNiveles();
        }
Exemplo n.º 5
0
        //Generar arbol
        public void generarArbol()
        {
            //Crear carpeta
            string path       = @"..\Arboles Sintacticos";
            string contenido2 = "";

            if (!Directory.Exists(path))
            {
                DirectoryInfo di = Directory.CreateDirectory(path);
            }
            filtrarArbol();
            for (int i = 0; i < nodosOrdenados.Count; i++)
            {
                Nodos nodo = (Nodos)nodosOrdenados[i];
                contenido2 += "\"" + nodo.getPadre().getNombre() + " " + nodo.getPadre().getNivel() + "\"" + "->" + "\""
                              + nodo.getNombre() + " " + nodo.getNivel() + "\"" + ";\n";
            }
            String inicio     = "digraph G {";
            string contenido1 = "{" +
                                "node [margin=0 fontsize=12 shape=circle]\n";
            String final = " }";

            string graphVizString = inicio + contenido1 + contenido2 + final + final;

            Console.WriteLine(contenido2);
            Bitmap bm     = new Bitmap(Graphviz.RenderImage(graphVizString, "jpg"));
            var    imagen = new Bitmap(bm);

            bm.Dispose();
            Image image = (Image)imagen;

            imagen.Save(path + @"\prueba.jpg", ImageFormat.Jpeg);
            imagen.Dispose();
            IDE.ImagenArbol foto = new IDE.ImagenArbol();
            foto.Show();
        }
Exemplo n.º 6
0
 public Nodos(string nombre, Nodos padre, int nivel)
 {
     this.nombre = nombre;
     this.padre  = padre;
     this.nivel  = nivel;
 }