示例#1
0
 private void btnBorrar_Click(object sender, EventArgs e)
 {
     textBoxCalculadora.Clear();
     textBox1.Clear();
     dataGridView1.Rows.Clear();
     dataGridView1.Columns.Clear();
     Analizador.LimpiarErrores();
     this.Size = new Size(408, 431);
 }
示例#2
0
        private void button1_Click(object sender, EventArgs e)
        {
            debuggerConsole.Text = "";
            debuggerConsole.AppendText("Iniciando Ejecucion!\n");
            reporte.limpiarLista();
            Analizador analizador = new Analizador(this.debuggerConsole, Consola, reporte);

            analizador.analizar(Pascal.Text);
            debuggerConsole.AppendText("Finalizando Ejecucion");
        }
示例#3
0
        public async Task Analizar()
        {
            await Task.Yield();

            this.Analizando = true;
            if (this.Documento.TextLength > 0)
            {
                var lineas = this.Documento.Lines.Select(x => new Tuple <string, DocumentLine>(this.Documento.GetText(x), x)).ToList();
                //Thread th = new Thread(() =>
                //{

                this.Errores.Resultados.Clear();
                try
                {
                    this.Analizador =
                        new AnalizadorLexico(this.Documento, this.Errores);
                    this.Analizador.Analizar(lineas);
                    if (this.Analizador.EsValido)
                    {
                        this.Analizador =
                            new AnalizadorSintactico((AnalizadorLexico)this.Analizador, this.Documento, this.Errores);
                        this.Analizador.Analizar();
                        if (this.Analizador.EsValido)
                        {
                        }
                    }

                    Application.Current?.Dispatcher?.Invoke(() =>
                    {
                        TextMarkerService.RemoveAll(m => true);
                        foreach (var ex in this.Errores.Resultados.Where(x => x.Linea != null && !x.Linea.IsDeleted && x.Linea.LineNumber >= 0))
                        {
                            if (ex.EsAdvertencia)
                            {
                                ResaltarError(ex.Linea, System.Windows.Media.Colors.Olive);
                            }
                            else
                            {
                                ResaltarError(ex.Linea, System.Windows.Media.Colors.Red);
                            }
                        }
                    });
                }
                catch (Exception) { }
                this.Analizando = false;
                //});
                //th.SetApartmentState(ApartmentState.STA);
                //th.Priority = ThreadPriority.Lowest;
                //th.Start();
            }
            else
            {
                this.Analizando = false;
            }
        }
 private void cargarDatos(Usuario user)
 {
     rol.Text   += user.rolTxt;
     nombre.Text = user.nombre;
     carnet.Text = user.carnet.ToString();
     //nacimiento.Text = DateTime.Today.ToString("yyyy-MM-dd");
     nacimiento.Text = Analizador.getFecha(user.nacimiento).ToString("yyyy-MM-dd");
     correo.Text     = user.correo;
     telefono.Text   = user.telefono.ToString();
     usuario.Text    = user.usuario;
 }
示例#5
0
        void MostrarErrores()
        {
            //consultar los errores y mostrarlos
            textBox1.Clear();
            var errores = Analizador.ObtenerErrores();

            if (errores.Count >= 1)
            {
                textBox1.Text = errores[0];
            }
        }
示例#6
0
 public void Awake()
 {
     if (single == null)
     {
         single = this;
         DontDestroyOnLoad(gameObject);
     }
     else
     {
         Destroy(gameObject);
     }
 }
示例#7
0
        private void button2_Click(object sender, EventArgs e)
        {
            debuggerConsole.Text = "";
            Debug.WriteLine("Iniciando Traduccion!");
            debuggerConsole.AppendText("Iniciando Traduccion!\n");
            reporte.limpiarLista();
            Analizador analizador = new Analizador(this.debuggerConsole, Pascal, reporte);

            analizador.traducir(CompiPascal.Text);
            debuggerConsole.AppendText("Finalizando Traduccion!\n");
            Debug.WriteLine("Finalizando Traduccion!");
        }
示例#8
0
        private void buttonAnalizar_Click(object sender, System.EventArgs e)
        {
            SingletonListas s = SingletonListas.GetInstance();

            s.LimpiarListas();
            richTextBoxRestult.Clear();
            string        texto = richTextBoxSource.Text;
            ParseTreeNode raiz  = Analizador.AnalisisLexicoSintactico(texto);

            if (raiz != null)
            {
                Analizador.GenerarImagen(raiz);
                MessageBox.Show("Arbol Sintáctico Abstracto generado");
                Analizador.AnalisisSemantico(raiz);
                richTextBoxRestult.Text += "*==================================================*\n";
                richTextBoxRestult.Text += "*==================================================*\n";
                richTextBoxRestult.Text += $"* {System.DateTime.Today}\n";
                richTextBoxRestult.Text += "*==================================================*\n";

                foreach (Ambito a in s.Ambitos)
                {
                    foreach (Variable v in a.Variables)
                    {
                        richTextBoxRestult.Text += $"* {v}\n";
                    }
                }

                richTextBoxRestult.Text += "*==================================================*\n";
            }
            else
            {
                MessageBox.Show("Arbol Sintáctico Abstracto no generado");
            }
            if (s.Errores.Count > 0)
            {
                MessageBox.Show("Se detectaron erorres");
                richTextBoxRestult.Text += "*==================================================*\n";
                richTextBoxRestult.Text += "*==================================================*\n";
                richTextBoxRestult.Text += $"* {System.DateTime.Today}\n";
                foreach (Error err in s.Errores)
                {
                    richTextBoxRestult.Text += $"* {err}\n";
                }
                richTextBoxRestult.Text += "*==================================================*\n";
            }
        }
        private void BtnAnalizar_Click(object sender, EventArgs e)
        {
            if (tabControl.SelectedTab != null)
            {
                if (!getTextBox(null).Text.Equals(""))
                {
                    limpiarCampos();
                    generador    = new GeneradorArchivo();
                    analizar     = new Analizador();
                    salidaTokens = new List <Token>();
                    salidaTokens = analizar.analizar(getTextBox(null).Text, getTextBox(null));
                    if (!Analizador.lexicError)
                    {
                        html_tokensFile = "tokens.html";
                        generateImg     = "graphic" + contador + ".png";

                        analizar.imprimirTokens();
                        generador.generateHTMLTokensFile(salidaTokens, html_tokensFile);
                        Process.Start(html_tokensFile);
                        gGraphic = new GenerarGrafica();
                        grafico  = new Grafico();
                        grafico  = gGraphic.generar(salidaTokens);
                        generador.generateDOTArchive(grafico, "Grafico.dot");
                        btnGenerarPDF.Enabled = true;
                        generador.generateProcess(generateImg, "png");
                        paisEncontrado = new Pais();
                        paisEncontrado = encontrar(grafico);
                        generarDescripcion(generateImg, paisEncontrado);
                        contador += 1;
                    }
                    else
                    {
                        getTextBox(null).SelectionStart  = 0;
                        getTextBox(null).SelectionLength = getTextBox(null).Text.Length;
                        getTextBox(null).SelectionColor  = Color.Black;
                        detailsContainer.Panel1.Controls.Clear();
                        limpiarCampos();
                        html_tokensFile = "erroes.html";
                        generador.generateErrorsHTMLFile(Analizador.listaErrores, html_tokensFile);
                        MessageBox.Show("Ocurrió un error al leer el código", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Analizador.lexicError = false;
                        Process.Start(html_tokensFile);
                    }
                }
            }
        }
示例#10
0
        static bool Embed(int i)
        {
            Analizador analizador = new Analizador(enlace[i]);

            if (MiembrosEstaticos.AvanzarA(analizador.html, "img", "src", "http://www.peliculon.net/ver-partes.jpg"))
            {
                int ch;
                while ((ch = analizador.html.Read()) != -1)
                {
                    if (ch == 0)
                    {
                        //si es un salto de linea se acabaron las partes
                        //if (analizador.Tag.Name == "br")
                        //break;
                        //Por cada ancla que se encuentre hasta entonces, una parte
                        if (analizador.html.Tag.Name == "a")
                        {
                            //Console.WriteLine(analizador.html.Tag["href"].ToString());
                            if (analizador.html.Tag["href"].StartsWith("javascript:veoh"))
                            {
                                ProcesarVeoh(analizador.html.Tag["href"]);
                            }
                            else if (analizador.html.Tag["href"].IndexOf("mvideo") > -1)
                            {
                                ProcesarMegavideo(analizador.html.Tag["href"]);
                            }
                            else if (analizador.html.Tag["href"].StartsWith("javascript:link('http://stagevu.com"))
                            {
                                ProcesarStage(analizador.html.Tag["href"]);
                            }
                            else
                            {
                                analizador.Cerrar();
                                break;
                            }
                        }
                    }
                }
                analizador.Cerrar();
            }
            return(true);
        }
示例#11
0
        public static void Obtener()
        {
            Analizador analizador = new Analizador("http://www.peliculon.net/");

            do
            {
                MiembrosEstaticos.AvanzarA(analizador.html, "div", "class", "post");
                enlace.Add(Enlace(analizador.html));
                titulo.Add(MiembrosEstaticos.tituloAmigable(Titulo(analizador.html).Trim()));
                Console.WriteLine("Obteniendo película: " + titulo[titulo.Count - 1]);
                categoria.Add(ProcesarCategoria(Categoria(analizador.html)));
                imagen.Add(Imagen(analizador.html));
                MiembrosEstaticos.DescargarBinario(new Uri(imagen[imagen.Count - 1]), "C:/imagenes/" + titulo[titulo.Count - 1] + ".jpg");
                imagen[imagen.Count - 1] = titulo[titulo.Count - 1] + ".jpg";
                descripcion.Add(Descripcion(analizador.html));
                //Console.ReadLine();
                Embed(titulo.Count - 1);
            }while (enlace[enlace.Count - 1] != ultima);
            analizador.Cerrar();
        }
示例#12
0
        private void b_correr_Click(object sender, EventArgs e)
        {
            //Lenguaje
            string dato = richTextBox1.Text;

            fila = dato.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            identificadores creacionIdentificador = new identificadores();

            Analizador analiz = new Analizador();

            Lenguaje mensaje = new Lenguaje();

            for (var i = 0; i < fila.Length; i++)
            {
                creacionIdentificador.recogerAsignacion(fila[i]);
                creacionIdentificador.identificadoresAsignacion(i);
            }

            for (var i = 0; i < fila.Length; i++)
            {
                if (i == 0 || i == 1)
                {
                    mensaje.asignacion(fila[i]);

                    mensaje.reacomodarCadena();
                }
                else
                {
                    mensaje.asignacion(fila[i], i);//Asignar operador

                    mensaje.reacomodarCadena();
                }
                analiz.Analizador_cadena(dato);
                analiz.generarLista();
                comen.Text = analiz.getRetorno();


                lis_toks = new List <Token>();
                lis_toks = analiz.getListaTokens();
            }
        }
示例#13
0
文件: Main.cs 项目: ottoolivarez/olc1
        private void button1_Click(object sender, EventArgs e)
        {
            Analizador a = new Analizador(new Gramatica());
            //se parsea el texto con el metodo "parse" de la clase Analizador.
            Object salida = a.parse(textBox1.Text, new AccionesGramatica());

            this.richTextBox1.Text = "" + salida.GetType().ToString();
            if (salida.GetType().ToString() == "System.String")
            {
                this.richTextBox1.Text = "\n" + salida.ToString();
            }
            else if (salida.GetType().ToString() == "OLC1_practica1.Juego.frm_menujuego")
            {
                var frmjuego = (frm_menujuego)salida;
                frmjuego.Show();
            }

            //en este caso se asocia el parseo a un string ya que la salida se muestra en un cuadro de texto pero si
            //solamente se necesita parsear se hace de la forma
            //a.parse(textBox1.Text, new AccionesGramatica());
        }
        private void CapturarInformacion(Analizador an, Hashtable clasesPreanalizadas)
        {
            List <ClasePreAnalizada> clases = an.clases;

            Progreso.Value = 80;
            System.Threading.Thread.Sleep(200);
            foreach (ClasePreAnalizada a in clases)
            {
                if (!clasesPreanalizadas.Contains(a.id))
                {
                    Clase aux = a.obtenerClase();
                    clasesPreanalizadas.Add(a.id, a);//METO LAS CLASES AL HASHTABLE PARA LUEGO LAS PREANALIZADAS LLEVARLAS A ANALIZARLAS
                    Estatico.clasesDisponibles.addClass(aux);
                }
                else
                {
                    Estatico.errores.Add(new TError("Advertencia", "Se encontro una nueva definicion de la clase: " + a.id + " En el archivo: " + a.archivoOringen + ", Por lo que Se descarto", 0, 0, true));
                }
            }
            if (Estatico.NumeroErroes() > 0)//SI HAY ERRORES REVISAR
            {
                MessageBox.Show("Existen: " + Estatico.NumeroErroes() + " en La cadena! Revisalos en el reporte", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                //EN ESTE PUNTO YA TENGO LAS CLASES CON SU AST..... AHORA DEBERIA DE EMPEZAR LA EJECUCION DEL PROGRAMA
                Clase inicio = Estatico.clasesDisponibles.getFirstClassWithMain();
                if (inicio != null)
                {
                    Ambito am = new Ambito(null, inicio.idClase.ToLower(), inicio.ArchivoOrigen);

                    am = (Ambito)inicio.Ejecutar(am);
                    inicio.ejecutaMain(am);

                    //am.ImprimeAmbito();
                }
            }
        }
示例#15
0
        static void Main(string[] args)
        {
            var analizador = new Analizador();

            while (true)
            {
                List <IInput> inputs = analizador.EmpezarAnalizador();

                foreach (var reglasAplicada in inputs)
                {
                    System.Console.WriteLine(reglasAplicada.TipoDeRegla.ToString());

                    foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(reglasAplicada))
                    {
                        string name  = "\n" + descriptor.Name + "\n";
                        object value = descriptor.GetValue(reglasAplicada) + "\n";
                        System.Console.WriteLine("{0}={1}", name, value);
                    }
                }

                System.Console.ReadLine();
            }
        }
示例#16
0
        static void Obtener()
        {
            Ultima();
            bool       x = false;
            string     codigo = MiembrosEstaticos.DescargarCadena(new Uri("http://www.cinetube.es/subindices/inovedades.html"), null);
            string     imagen = null, enlace = null, titulo, descripcion, embed = null;
            int        i          = 1;
            Analizador analizador = new Analizador("http://www.cinetube.es/subindices/inovedades.html");

            MiembrosEstaticos.AvanzarA(analizador.html, "table", "class", "sample");
            int ch;

            while ((ch = analizador.html.Read()) != -1)
            {
                if (ch == 0)
                {
                    if (analizador.html.Tag.Name == "img" && imagen == null)
                    {
                        imagen = analizador.html.Tag["src"];
                        Console.WriteLine("Imagen: " + imagen);
                    }
                    if (analizador.html.Tag.Name == "a" && enlace == null)
                    {
                        Servidor = "1";
                        enlace   = analizador.html.Tag["href"];
                        if (enlace != ultima && !x)
                        {
                            string strConexion = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                                 "Data Source=./Pelis.mdb";
                            OleDbConnection conexion = new OleDbConnection(strConexion);
                            conexion.Open();
                            OleDbDataAdapter adaptador = new OleDbDataAdapter("UPDATE CineTube " +
                                                                              "SET ultima = '" + enlace + "' WHERE id = 1", conexion);
                            DataSet conjunto = new DataSet();
                            adaptador.Fill(conjunto);
                            conexion.Close();
                            x = true;
                        }
                        if (enlace == ultima)
                        {
                            break;
                        }
                        Console.WriteLine("Enlace: " + enlace);
                        if (enlace.IndexOf("online") > -1)
                        {
                            embed = ObtenerEmbed(enlace);
                        }
                        else if (enlace.IndexOf("indices") > -1)
                        {
                            embed = ObtnerIndice(enlace);
                        }
                        Console.WriteLine("Embed: " + embed);
                        titulo = MiembrosEstaticos.Extraer(codigo, "more_link Estilo17 Estilo16\">", "</a>", i);
                        titulo = titulo[0].ToString().ToUpper() + titulo.Substring(1);
                        titulo = MiembrosEstaticos.tituloAmigable(titulo);
                        Console.WriteLine("Titulo: " + titulo);

                        // No olvidar el i++
                        descripcion = MiembrosEstaticos.Extraer(codigo, "class=\"cover\" align=\"left\">SINOPSIS: ", "</div>", i++).Replace("á", "a").Replace("é", "e").Replace("í", "i").Replace("ó", "o").Replace("ú", "u").Replace("ñ", "n").Replace("É", "E").Replace("Á", "A").Replace("Í", "Í").Replace("Ó", "O").Replace("Ú", "Ú").Replace("'", "").Replace(",", "");
                        descripcion = descripcion[0].ToString().ToUpper() + descripcion.Substring(1);
                        MiembrosEstaticos.DescargarBinario(new Uri(imagen), "./imagenes/" + titulo + ".jpg");
                        if (embed != null)
                        {
                            Clases.Añadir(titulo, "17", titulo + ".jpg", embed, Servidor, descripcion);
                        }

                        imagen = enlace = titulo = descripcion = embed = null;
                        MiembrosEstaticos.Avanzar(analizador.html, "tr", 0);
                    }
                }
            }
        }
示例#17
0
        private void btnIgual_Click(object sender, EventArgs e)
        {
            Analizador.LimpiarErrores();
            Analizador.LimpiarValores();
            string expresion = textBoxCalculadora.Text;

            //validaciones
            if (cantidadDeProposicionesValidas(expresion))
            {
                if (Analizador.ValidarExpresion(expresion))
                {
                    //configuracion del dataGridValue
                    dataGridView1.Rows.Clear();
                    dataGridView1.Columns.Clear();
                    valorIgual               = true;
                    dataGridView1.ReadOnly   = true;
                    dataGridView1.DataSource = null;
                    dataGridView1.AllowUserToOrderColumns = false;

                    try
                    {
                        //Analizar expresion
                        expresion = "(" + expresion + ")";
                        var diccionario = Analizador.AnalizarExpresion(expresion);

                        //recorrer el diccionario e imprimirlo en el datagridview
                        foreach (var item in diccionario)
                        {
                            var nuevaExpresion = "";
                            var valorById      = Analizador.ObtenerValorById(item.Key);
                            if (valorById == null)
                            {
                                nuevaExpresion = item.Key;
                            }
                            else
                            {
                                nuevaExpresion = Analizador.ArmarExpresion(valorById);
                            }

                            dataGridView1.Columns.Add(item.Key, nuevaExpresion);
                        }

                        var cantidad = diccionario.ElementAt(0).Value.Count;
                        int index    = 0;
                        var lista    = new List <string>();
                        for (int x = 0; x < cantidad; x++)
                        {
                            for (int i = 0; i < diccionario.Count; i++)
                            {
                                var item = diccionario.ElementAt(i);
                                lista.Add(item.Value[index]);
                            }
                            var vector = lista.ToArray();
                            dataGridView1.Rows.Add(vector);
                            lista.Clear();
                            index++;
                        }
                        MostrarErrores();
                        this.Size = new Size(1328, 431);
                    }catch (Exception err)
                    {
                        MessageBox.Show(err.Message);
                    }
                }
                else
                {
                    MostrarErrores();
                }
            }
            else
            {
                MessageBox.Show("La cantidad de proposiciones están limitadas a 2 como minimo y 6 como maximo\npor favor ingresa una cantidad valida",
                                "Cantidad de proposiciones no valida", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        //PERMITE LA GENERACION DEL FORMULARIO
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            StatusControl.Text = "Estatus";
            Estatico.setUp(Consola);
            Hashtable clasesPreanalizadas = new Hashtable();

            if (Editor.TabCount > 0)
            {
                //RichTextBox principal = (RichTextBox)Editor.TabPages[Editor.SelectedIndex].Controls[0].Controls[1];
                this.archivo = Editor.TabPages[Editor.SelectedIndex].Name;

                FastColoredTextBox principal = (FastColoredTextBox)Editor.TabPages[Editor.SelectedIndex].Controls[0].Controls[0];
                String             cadena    = principal.Text;//PARA QUE TODO ESTE EN MINUSCULAS Y NO TENGA CLAVOS CON LA COMPROBACION DE NOMBRES
                Progreso.Value     = 40;
                StatusControl.Text = "Iniciando Proceso...";
                System.Threading.Thread.Sleep(200);
                Analizador an = new Analizador(cadena, this.ProyectoPath, archivo);
                if (an.analizar())//SI SE ANALIZA LA CADENA...
                {
                    // PROCEDE A INTENTAR CAPTURAR LA INFO...
                    if (Estatico.NumeroErroes() > 0) //SO EXISTEN ERRORES ANTES DE CAPTURAR LA INFO...
                    {
                        //REVISAR...
                        Progreso.Value     = 0;
                        StatusControl.Text = "Proceso Interrumpido!";
                        Estatico.consolaSalida.AppendText("\n>> Proceso detenido, Errores detectados...");
                        MessageBox.Show("Existen: " + Estatico.NumeroErroes() + " en La cadena! Revisalos en el reporte", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else//SINO PROCEDER A CAPTURA LA INFORMACION
                    {
                        CapturarInformacion(an, clasesPreanalizadas);
                        ///////////////////////////////////////////////////////
                        Progreso.Value     = 100;
                        StatusControl.Text = "Proceso Terminado!";
                        System.Threading.Thread.Sleep(200);
                        Progreso.Value = 0;
                        ///////////////////////////////////////////////////////
                        if (Estatico.resps.Count > 0)
                        {
                            String nombre = Microsoft.VisualBasic.Interaction.InputBox("Nombre Del Formulario A Guardar: ", "Nuevo Form", "", 100, 100);
                            if (!nombre.Equals(""))
                            {
                                SavedForm s = new SavedForm(nombre, Estatico.resps);
                                if (s.writeForm())
                                {
                                    MessageBox.Show("Formulario: " + nombre + " Almacenado!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                                else
                                {
                                    MessageBox.Show("No se almaceno el formulario!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                        }
                        //AQUI DEBO DE PREGUNTAR SI EN CASO HAY UN PROBLEMA CON LAS ADVERTENCIAS
                    }
                }
                else//SI NO SE PUEDE, ENTONCES EL ERROR ES FATAL... REVISAR
                {
                    MessageBox.Show("No se logro Analizar la cadena de entrada", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                errorLabel.Text    = Convert.ToString(Estatico.NumeroErroes());
                warningsLabel.Text = Convert.ToString(Estatico.NumeroAdvertencias());
            }
        }
示例#19
0
        private void button5_Click(object sender, EventArgs e)
        {
            Analizador analizador = new Analizador(this.debuggerConsole, Consola, reporte);

            analizador.reporteAst(Pascal.Text);
        }
示例#20
0
        public static void Obtener()
        {
            Win32.AllocConsole();  // Abrir una consola
            int estado = 0;

            Ultima();
            for (int i = 1; i < 221; i++)
            {
                if (estado == 2)
                {
                    break;
                }
                Analizador analizador = new Analizador("http://www.newcineonline.com/page/" + i + "/");
                MiembrosEstaticos.AvanzarA(analizador.html, "div", "class", "post-title");

                while (true)
                {
                    try
                    {
                        MiembrosEstaticos.AvanzarA(analizador.html, "div", "class", "post-title");
                        string   enlace, titulo, categoria, imagen, descripcion;
                        string[] emb = new string[2];
                        enlace = Enlace(analizador.html);
                        if (enlace == ultima)
                        {
                            Console.WriteLine("SE encontro coincidencia");
                            estado = 2;
                            break;
                        }
                        if (estado == 0)
                        {
                            string strConexion = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                                 "Data Source=./Pelis.mdb";
                            OleDbConnection conexion = new OleDbConnection(strConexion);
                            conexion.Open();
                            OleDbDataAdapter adaptador = new OleDbDataAdapter("UPDATE Peliculon " +
                                                                              "SET ultima = '" + enlace + "' WHERE id = 1", conexion);
                            DataSet conjunto = new DataSet();
                            adaptador.Fill(conjunto);
                            conexion.Close();
                            estado = 1;
                        }
                        //Si es una serie nos la saltamos
                        if (enlace.IndexOf("series") > -1)
                        {
                            continue;
                        }
                        //Console.WriteLine(enlace);
                        titulo = MiembrosEstaticos.tituloAmigable(Titulo(analizador.html));
                        Console.WriteLine("titulo: " + titulo);
                        MiembrosEstaticos.Avanzar(analizador.html, "a", 0);
                        categoria = ProcesarCategoria(Categoria(analizador.html));
                        imagen    = Imagen(analizador.html);
                        MiembrosEstaticos.DescargarBinario(new Uri(imagen), "./imagenes/" + titulo + ".jpg");
                        imagen = titulo + ".jpg";
                        MiembrosEstaticos.Avanzar(analizador.html, "/b", 4);
                        descripcion = Descripcion(analizador.html);
                        if (enlace.IndexOf("anime") > -1)
                        {
                            Console.WriteLine("Encontrado un anime");
                            continue;
                        }
                        emb = Embed(enlace);
                        Console.WriteLine("Embed: " + emb[0]);
                        //Console.WriteLine(emb[1]);
                        //Ahora grabamos todoooo
                        if (emb[0] != "false")
                        {
                            Clases.Añadir(titulo, categoria, imagen, emb[0], emb[1], descripcion);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                        break;
                    }
                }
                Console.WriteLine("FIN de pagina " + i);
                analizador.Cerrar();
            }
            Console.WriteLine("FIN");

            Win32.FreeConsole();   // Cerrar consola
        }
示例#21
0
        public void codigoaEvaluar(string strCodigoaEvaluar)
        {
            //MessageBox.Show("" + codF);

            Analizadores.Analizador analizar = new Analizador(new Gramatica());
            ParseTree arbol = analizar.isValid(strCodigoaEvaluar);

            if (arbol != null)
            {
                ConstructorAst constAst = new ConstructorAst();
                AST            arbolAux = constAst.Analizar(arbol.Root);
                Ambito         global   = new Ambito(null);

                try {
                    if (arbolAux != null)
                    {
                        foreach (Instruccion inst in arbolAux.Instrucciones)
                        {
                            //if (inst is Funcion) {

                            //}
                            if (inst is Declaracion)
                            {
                                Declaracion declaracion = (Declaracion)inst;
                                declaracion.ejecutar(global, arbolAux);
                            }
                            //toca deficion clase
                        }

                        foreach (Instruccion ins in arbolAux.Instrucciones)
                        {
                            if (ins is Funcion)
                            {
                                Funcion funcion = (Funcion)ins;
                                global.agregar(funcion.Id, funcion);
                                foreach (NodoAST instruccion in funcion.LLInstrucciones)
                                {
                                    //if (instruccion is DefinicionStruct)
                                    //{
                                    //    DefinicionStruct crear = (DefinicionStruct)instruccion;
                                    //    crear.ejecutar(global, auxArbol);
                                    //}
                                }
                            }
                            if (ins is Declaracion)
                            {
                                Declaracion declaracion = (Declaracion)ins;
                                declaracion.ejecutar(global, arbolAux);
                            }
                            //if (ins is DefinicionStruct)
                            //{
                            //    DefinicionStruct crear = (DefinicionStruct)ins;
                            //    crear.ejecutar(global, auxArbol);
                            //}
                        }

                        foreach (Instruccion ins in arbolAux.Instrucciones)
                        {
                            if (ins is Principal)
                            {
                                Principal main = (Principal)ins;

                                Ambito local = new Ambito(global);

                                main.ejecutar(local, arbolAux);
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Cadena invalida");
                    }
                }
                catch (Exception ex) {
                    MessageBox.Show(ex.ToString());
                }

                //analizar.parse(arbol, new PrimeraPasada());
                MessageBox.Show("Cadena Valida");
            }
            else
            {
                MessageBox.Show("No Valida");
            }
        }
示例#22
0
        private void button1_Click(object sender, EventArgs e)
        {
            log.Text = "";
            Console.WriteLine("Iniciando");
            String             entrada = txtEntrada.Text;
            Analizador         lexico  = new Analizador();
            LinkedList <Token> tokens  = lexico.cadenaEntrante(entrada);

            Console.WriteLine("conteo: " + tokens.Count);
            lexico.printList(tokens);



            //(List<String> alfabeto, List<string> lstProducciones)
            List <string>            alfabeto     = new List <string>();
            Dictionary <String, int> producciones = new Dictionary <String, int>();

            //entero	decimal	caracter	cadena  booleano	id	;	,	=	numero	texto	booleano

            /*
             * producciones.Add( "DEF_VAR",0);
             * producciones.Add("KW_TIPO",1);
             * producciones.Add("ID_VALUE",2);
             * producciones.Add("ID_FACTOR",3);
             * producciones.Add("ID_FACT_IGUAL",4);
             * producciones.Add("VALOR",5);
             */

            producciones.Add("INICIO", 0);
            producciones.Add("BLOQUE", 1);
            producciones.Add("SENTENCIA", 2);
            producciones.Add("SEN", 3);
            producciones.Add("SEN_FACT", 4);
            producciones.Add("DEF_VAR", 5);
            producciones.Add("KW_TIPO", 6);
            producciones.Add("ID_VALUE", 7);
            producciones.Add("ID_FACT", 8);
            producciones.Add("ID_FACT_IGUAL", 9);
            producciones.Add("VALOR", 10);
            producciones.Add("CONDICIONAL", 11);
            producciones.Add("WHILE", 12);
            producciones.Add("DO", 13);
            producciones.Add("FOR", 14);
            producciones.Add("IF", 15);
            producciones.Add("SI_CONTINUA", 16);
            producciones.Add("CONDICION_TIPO", 17);
            producciones.Add("OPERADOR", 18);
            producciones.Add("CONDICION_LOGICA", 19);
            producciones.Add("SUMA_RESTA", 20);
            producciones.Add("SR", 21);
            producciones.Add("MD", 22);
            producciones.Add("MDP", 23);
            producciones.Add("P", 24);
            producciones.Add("PP", 25);
            producciones.Add("U", 26);
            producciones.Add("E", 27);
            producciones.Add("LEER", 28);
            producciones.Add("IMPRIMIR", 29);
            producciones.Add("IM_TIPOS", 30);
            producciones.Add("IM_TIPOS_ID", 31);
            producciones.Add("IM_TIPOS_TEXTO", 32);



            alfabeto.Add("principal");
            alfabeto.Add("par_abierto");
            alfabeto.Add("par_cerrado");
            alfabeto.Add("llave_abierta");
            alfabeto.Add("llave_cerrada");
            alfabeto.Add("punto_coma");
            alfabeto.Add("coma");
            alfabeto.Add("entero");
            alfabeto.Add("decimal");
            alfabeto.Add("caracter");
            alfabeto.Add("cadena");
            alfabeto.Add("kw_booleano");
            alfabeto.Add("id");
            alfabeto.Add("igual");
            alfabeto.Add("texto");
            alfabeto.Add("booleano");
            alfabeto.Add("numero");
            alfabeto.Add("while");
            alfabeto.Add("hacer");
            alfabeto.Add("desde");
            alfabeto.Add("op_relacional");
            alfabeto.Add("incremento");
            alfabeto.Add("si");
            alfabeto.Add("sino_si");
            alfabeto.Add("sino");
            alfabeto.Add("op_logico");
            alfabeto.Add("mas");
            alfabeto.Add("menos");
            alfabeto.Add("division");
            alfabeto.Add("por");
            alfabeto.Add("potencia");
            alfabeto.Add("leer");
            alfabeto.Add("imprimir");
            alfabeto.Add("$");



            Matriz        matriz  = new Matriz(alfabeto, producciones, log);
            Queue <Token> oldList = new Queue <Token>(tokens);

            for (int i = 0; i < tokens.Count; i++)
            {
                Console.WriteLine("Token 1: TypeToken: " + " clasificacion: " + tokens.ElementAt <Token>(i).GetClasificacion());
            }
            matriz.IntroducirErroes();
            matriz.setProduccionesDentro();
            matriz.ImprimirMatriz();
            matriz.imprimirPila();
            matriz.cola(tokens);
        }