View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Repositorio Digital de la Universidad del Norte COMPILADORDEPSEUDOCÓDIGOCOMOHERRAMIENTAPARAEL APRENDIZAJEENLACONSTRUCCIÓNDEALGORITMOS RAFAELANIBALVEGACASTRO UNIVERSIDADDELNORTE PROGRAMADEINGENIERÍADESISTEMAS DIVISIÓNDEINGENIERÍAS 2008 COMPILADORDEPSEUDOCÓDIGOCOMOHERRAMIENTAPARAEL APRENDIZAJEENLACONSTRUCCIÓNDEALGORITMOS RAFAELANIBALVEGACASTRO TesisparaoptaraltítulodeIngenierodeSistemas Ing.ALFONSOMANUELMANCILLAHERRERA DirectordelProyecto UNIVERSIDADDELNORTE PROGRAMADEINGENIERÍADESISTEMAS DIVISIÓNDEINGENIERÍAS 2008 Notadeaceptación _______________________________ _______________________________ _______________________________ _______________________________ _______________________________ _______________________________ Firmadelpresidentedeljurado _______________________________ Firmadeljurado _______________________________ Firmadeljurado Barranquilla,Diciembrede2008 DEDICATORIA ADios,quesiempremeiluminó. A mi padre y madre, por el apoyo que siempre me han brindado, por confiar en mi, por darmetodoloquehoytengoyporhacermetodoloquesoy. A mi hermano, quien siempre se alegra por los logros que consigo y quien quiere seguir losmismopasosqueyoseguígraciasalavocaciónqueDiosnosdio. A mi novia, que siempre me apoyaba y me llenaba de fuerzas para continuar cuando quería rendirme.. Amiprimo,quedesdeelcielosiempremeacompaña,alquenuncaolvidaré. AlIng.AlfonsoMancilla,quiensiemprehaconfiadoenmi,mehatendidosumanoymeha aconsejadoenlatomademuchasdelasdecisionesmasimportantesenmivida. Amistías,abuelas,primos,demásfamiliaresyamigos., AGRADECIMIENTOS En mi vida he tenido la posibilidad de trabajar en varios proyectos, pero ninguno que me diera la satisfacción que siento al terminar los objetivos de este. Digo terminar los objetivos porqueaesteproyectoselepuedellevarmuylejos. Agradezco enormemente a todas las ayudas recibidas por parte del Ingeniero Jose Marquez, jefedelprogramadeIngenieríadeSistemasdelaUniversidaddelNorte,quiensiempresaca- ba un rato de su valioso tiempo para resolver mis dudas o darme consejos para resolver mis problemas. No tengo como agradecer al Ingeniero Alfonso Mancilla, docente de planta del programa de Ingeniería de Sistemas de la Universidad del Norte, mi director de tesis, quien me dio la oportunidad y me apoyó en la idea que le plantee en un principio, la cual era un poco ambiciosa, pero el día de hoy nos damos cuenta que cualquier cosa puede lograrse si tieneladedicaciónylasganasquesenecesitan. RafaelAnibalVegaCastro Barranquilla,Colombia Octubre29de2008 Tabla de Contenido ListadeFiguras VI ListadeTablas VII Introducción 1 1.Objetivos 2 1.1.ObjetivoGeneral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.ObjetivosEspecíficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.TeoríadeCompiladores 3 2.1.Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1.Conceptodetraductor . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2.Tipodetraductores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Traductoresdeidioma . . . . . . . . . . . . . . . . . . . . . . . . . 4 Compiladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Intérpretes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Preprocesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Intérpretesdecomandos . . . . . . . . . . . . . . . . . . . . . . . . 6 Conversoresfuente-fuente . . . . . . . . . . . . . . . . . . . . . . . 6 Compiladorcruzado . . . . . . . . . . . . . . . . . . . . . . . . . . 7 I 2.1.3.Teoríabásicarelacionadaconlatraducción . . . . . . . . . . . . . . . 7 Pasadasdecompilación . . . . . . . . . . . . . . . . . . . . . . . . 7 Compilaciónincremental . . . . . . . . . . . . . . . . . . . . . . . . 8 Autocompilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Descompilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Metacompilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.4.Estructuradeuntraductor . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.5.Tabladesímbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.Análisislexicográfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.1.Procesodeunanalizadorléxico . . . . . . . . . . . . . . . . . . . . . 13 2.2.2.ExpresionesRegulares . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Definicióndeexpresionesregulares . . . . . . . . . . . . . . . . . . 14 Extensionesparalasexpresionesregulares . . . . . . . . . . . . . . 16 2.3.Gramáticaslibresdecontexto . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.1.Convencionesdenotación . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.2.Derivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.3.Ambigüedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3.4.Escrituradeunagramática . . . . . . . . . . . . . . . . . . . . . . . . 21 Expresionesregulares,ogramáticaslibresdecontexto . . . . . . . . 21 Comprobacióndellenguajegeneradoporunagramática . . . . . . . 22 Eliminacióndelarecursiónporlaizquierda . . . . . . . . . . . . . . 22 Factorizaciónporlaizquierda . . . . . . . . . . . . . . . . . . . . . 23 2.4.Análisissintácticoascendente . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.1.Visióngeneral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4.2.ElementosLR(0)yanálisissintácticoLR(0) . . . . . . . . . . . . . . . 26 ElementoLR(0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 ElalgoritmodeanálisissintácticoLR(0) . . . . . . . . . . . . . . . . 27 II 2.4.3.AnálisissintácticoLALR(1)yLR(1)general . . . . . . . . . . . . . . 28 ELalgoritmodeanálisissintácticoLR(1) . . . . . . . . . . . . . . . 28 AnálisissintácticoLALR(1) . . . . . . . . . . . . . . . . . . . . . . 29 3.JFlex-AnalizadorLéxico 31 3.1.Principalescaracterísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.EscribirunanalizadorléxicoconJFlex . . . . . . . . . . . . . . . . . . . . . 31 3.2.1.Estructuradeunarchivojflex . . . . . . . . . . . . . . . . . . . . . . 31 3.2.2.Opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.3.Reglasyacciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3.Métododeescaneo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.4.Generacióndecódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.5.Codificacióndecaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.6.Reglasléxicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.6.1.Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.6.2.Operadoresenlasexpresionesregulares . . . . . . . . . . . . . . . . . 39 3.6.3.Precedenciadeoperadores . . . . . . . . . . . . . . . . . . . . . . . . 40 3.7.MétodosyatributosdeJFlexasequiblesenelcódigodeacción . . . . . . . . . 41 4.CUP-AnalizadorSintáctico 43 4.1.Especificacióndelasintaxisdeunfichero.CUP . . . . . . . . . . . . . . . . . 44 4.1.1.Definicióndepaqueteysentenciasimport . . . . . . . . . . . . . . 44 4.1.2.Seccióndecódigodeusuario . . . . . . . . . . . . . . . . . . . . . . 45 4.1.3.Declaracióndesímbolosterminalesynoterminales . . . . . . . . . . 46 4.1.4.Declaracionesdeprecedencia . . . . . . . . . . . . . . . . . . . . . . 47 4.1.5.Definicióndelsímboloinicialdelagramáticayreglasdeproducción . 48 4.2.EjecutandoCUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.3.UsodelasclasesJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 III 4.4.GestióndeerroresenCUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.5.GramáticadelasespecificacionesdeunarchivoCUP . . . . . . . . . . . . . . 53 5.OtrasHerramientasutilizadas 56 5.1.C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.1.1.E/SConsoladeC++ . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.1.2.Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Tiposdedatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.1.3.Estructurasdecontrol . . . . . . . . . . . . . . . . . . . . . . . . . . 57 If-Si . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 If-Else-Si-Sino . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 switch-Dependiendo-De . . . . . . . . . . . . . . . . . . . . . . . 58 5.1.4.Ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 while-Mientras-Que . . . . . . . . . . . . . . . . . . . . . . . . . . 59 for-Para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 do-while-Haga-Hasta . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.2.JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.2.1.EntornosdedesarrolloparaJava . . . . . . . . . . . . . . . . . . . . . 62 5.2.2.Sintaxisdellenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Sintaxisbásica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Tipodedatosprimitivos . . . . . . . . . . . . . . . . . . . . . . . . 63 Declaracióndevariables . . . . . . . . . . . . . . . . . . . . . . . . 64 5.3.PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3.1.¿QuéesPHP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3.2.Unaexplicaciónsencilla . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.3.3.InstruccionesenPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 IV Estructurasdecontrol . . . . . . . . . . . . . . . . . . . . . . . . . 71 Ciclosobucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.3.4.SesionesenPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.4.HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.4.1.¿QuéesHTML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.4.2.SintaxisdelasEtiquetas . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.4.3.EtiquetasHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 HEAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 TITLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 BODY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 FONT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 TR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 TD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 FORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 OPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 TEXTAREA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.5.JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.5.1.EncabezadoJavaScipt . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.5.2.ElObjetoForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.5.3.Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.5.4.VariablesenJavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . 83 V
Description: