You are on page 1of 8

Instituto Tecnolgico De Huatabampo

Materia: Programacin Bsica Carrera: Mecatrnica Unidad I.- Introduccin a la computacin Tema: Compilador Alumnos: Garca Lozoya Tania Lizeth Gastelum Cervantes Moises Emmanuel Profesor(a): Leticia Romn Prtela Fecha de entrega: 26-Enero-2011

Compilador
Cuando se dice lenguaje de alto nivel se piensa en uno que permita, con una sola orden, decir cosas complejas; esto es, un lenguaje dotado de una estructura, que le d soporte a lo que recin se dijo. Necesariamente hay que pensar entonces en el problema de la traduccin del lenguaje de alto nivel expresivo, porque lo que se desea hacer es comunicarse con la mquina en un lenguaje de este tipo y esperar que reciba nuestros mensajes mediante un traductor que lo convierta a su lenguaje mquina. Un simple diccionario no basta para lograr una buena traduccin y, a veces, ni siquiera para lograr algo que mediante a la fase original. Esto se debe, por supuesto, a la estructura del lenguaje, que est definida por su gramtica, y a un mundo de significados que no es reducible a un diccionario. Noam Chomsky, lingista del Instituto Tecnolgico de Massachusetts (MIT), que en 1956 public un estudio ya clsico sobre gramticas formales (esto es, estudiados desde un punto de vista matemtico). Secuencia para lograr la traduccin de frases dotadas de estructura interna: El paso inicial consiste en reconocer todos y cada uno de los smbolos aislados que constituyen la frase; lo que, a su vez, implica reconocer las letras (y signos de puntuacin) y reconocer las palabras. Obsrvese que reconocer no necesariamente significa entender; para reconocer un smbolo lo nico que se requiere es buscarlo (y encontrarlo) en un diccionario previamente especificado. Se llama a esta primera etapa anlisis lexicogrfico. Una vez concluido este anlisis se llega a la parte interesante, encontrar la estructura gramatical de la frase cuyos elementos ya se reconocieron. Este proceso es complejo y requiere de mltiples anlisis que utilizan mtodos matemticos para lograr ver la estructura inherente de la frase. La idea general consiste en tratar de acomodar alguna estructura gramatical apropiada para la frase objeto de anlisis, guindose por medio de las palabras que la componen. A esta segunda etapa se le llama anlisis sintctico. Terminada la fase sintctica o gramatical se est ya en posicin de entender lo que significa la frase, por medio del anlisis semntico. El compilador (que es el nombre de este nuevo traductor) tendr entonces que hacer estos tres tipos de anlisis sobre las cadenas de entrada (esto es, sobre el programa fuente), para poder llegar a traducirlo al lenguaje mquina o, por lo menos, al lenguaje de ensamblador y obtener finalmente el mismo programa pero ya en lenguaje objeto. La tarea central del analizador lexicogrfico consiste en separar los componentes lxicos (o tokens) de entre el conjunto de smbolos del programa fuente. Esto es, en un rengln comn coexisten smbolos del programa aunque sean invisibles, y es necesario aislar los componentes sintcticos de este conglomerado de caracteres.

El modelo matemtico de un analizador de este tipo recibe el nombre de autmata finito. Un autmata de este tipo es una funcin matemtica que puede reconocer grupos de caracteres que constituyen un componente sintctico. Sin embargo, el problema del anlisis lxico es sencillo comparado con el que sigue, el anlisis sintctico, que no fue entendido hasta hace algunos aos; todava en la ciudad existen aspectos oscuros sobre su funcionamiento general. Los analizadores sintcticos (pasers) se dividen en dos grandes familias: los que funcionan en forma ascendente y sus contrarios, en forma descendente. Para poder discutir estos puntos, aunque sea mnimamente, ser necesario mencionar antes algunos elementos sobre la teora de las gramticas y los lenguajes formales. Esta teora nace en la dcada de 1950, y trata sobre las propiedades de ciertas construcciones formales llamadas gramticas, que no son sino formulaciones matemticas de la estructura, de la misma forma que la gramtica que todos aprendimos en la escuela elemental describe la estructura del lenguaje ordinario. Para caracterizar el problema de la comunicacin se puede pensar que una gramtica es un generador de palabras (o frases), que luego llegarn a un reconocedor, que se encargar de decidir si una frase es hija legitima de cierta gramtica o no; esto es, el reconocedor debera hacer cierto anlisis sobre las frases recibidas y proceder luego a interpretarlas. A continuacin hay un ejemplo muy elemental, sobre un subconjunto de la gramtica del espaol. Quien sepa nuestro idioma reconocer esta frase La casa es azul Es correcto desde (lexicogrfico, sintctico y semntico) se clasifican en ciertos tipos gramaticales que luego se formaran en ciertos tipos gramaticales que luego se formaran construcciones ms complejos. En suma: la--------artculo casa-----sustantivo es--------verbo azul-----adjetivo Un artculo segundo de un sustantivo es una fase nominal Un verbo seguido de un adjetivo es una frase verbal Una frase nominal seguida de una frase verbal es una oracin ms escuetamente 1. <ORACIN><FRASE NOMINAL><FRASE VERBAL> 2. <FRASE NOMINAL><ARTICULO><SUSTANTIVO> 3. <FRASE VERBAL><VERBO><ADJETIVO> 4. <ARTICULO> la

5. <SUSTANTIVO> casa 6. <VERBO> es 7. <ADJETIVO> azul Estas siete reglas gramaticales configuran una primera gramtica formal, con la que se trabajar un poco se observan smbolos nuevos: llaves triangulares se encierran palabras de la gramtica que se llaman no terminales, mientras que con las comillas se distinguen las palabras terminales. Estas ltimas son las que forman las frases terminales, o sea, los elementos finales de una construccin gramatical, que son los nicos que se muestran al mundo exterior. Una frase u oracin tiene una estructura interna y los elementos que se usan para definir esta estructura profunda de la frase son precisamente los no terminales. El otro elemento nuevo es la flecha, que liga miembros izquierdos (no terminales), con los miembros derechos (que pueden ser terminales o no) la regla 6) <VERBO> es; se lee el no terminal VERBO produce el terminal es El lector podr comprobar que la frase la casa es azul tiene la siguiente estructura.

Raz del rbol <ORACIN> / / / / / / <FRASE NOMINAL> / / / / \ \ \ \ / / / \ \ \ \ \ \ <FRASE VERBAL> / \ \ \ \

<ARTICULO> <SUSTANTIVO> <VERBO> <ADJETIVO> | | | la ^ | | \ \ \ \ \ \ \ \ | | | | | | | | | | | | casa ^ | | | | | | | | | / / / / / / / | | | es ^ | | / | | | azul ^

Hojas del rbol

se puede, entender un poco mejor los conceptos del anlisis sintctico. Si partirnos de la parte superior de este programa (que recibe el nombre de

rbol sintctico) y se intenta aplicar una a una de las reglas de produccin son siete-, se obtiene lo siguiente: <ORACIN><FRASE NOMINAL><FRASE VERBAL> <ARTICULO><SUSTANTIVO><FRASE VERBAL> la casa<FRASE VERBAL> la casa<VERBO><ADJETIVO> la casa es<ADJETIVO> la casa es azul (la doble flecha se lee genera mediante la aplicacin de una regla de produccin o simplemente genera). Obsrvese que se parti de tope (o raz) del rbol y lleg a las hojas terminales. Este fue el primer anlisis sintctico descendente; aunque trivial, es representativo. Cmo ser el anlisis sintctico ascendente? Hagamos lo siguiente: la<ARTICULO> casa<SUSTANTIVO> <ARTICULO><SUTANTIVO><FRASE NOMINAL> es<VERBO> azul<ADJETIVO> <VERBO><ADJETIVO><FRASE VERVAL> <FRASE NOMINAL><FRASE VERBAL><ORACIN> Obsrvese que ahora procedi exactamente a la inversa, partiendo de los elementos terminales se encontr un camino que lleva hasta la raz del rbol. Aunque en apariencia el anlisis ascendente no es ms que el inverso del descendente, en realidad es mucho ms complejo, la razn de lo anterior reside, intuitivamente, en que el problema central del anlisis descendente consiste en escoger alguna regla y desaplicarla pero ahora ya no existe un solo elemento del lado derecho, sino varios y, por lo tanto, aumenta la gama de combinaciones posibles. De hecho apenas 15 aos que se encontraran algoritmos eficientes para realizar anlisis sintcticos ascendentes, mientras que los descendentes fueron inventados hace ms de treinta. El anlisis semntico averigua, por ejemplo, si una expresin dentro de un programa de computadora significa algo, y no pide hacer una operacin aritmtica sobre una cadena de caracteres, cosa que no tendra sentido.

En muchas referencias sobre compiladores se llama fase semntica a la parte que se encarga de lo recin descrito, pero adems suele incluirse tambin all las funciones de generacin de cdigo que ahora se explican. La traduccin o generacin de cdigo busca representar la frase fuente original en trminos de elementos de un lenguaje mucho ms sencillo, que ya no est dotado de estructura. O sea, precisamente, traducir la frase fuente al lenguaje de mquina (o por lo menos al lenguaje ensamblador). A la generacin de cdigo recin escrita se le conoce como generacin de cdigo intermedio, ya que no se trata de lenguaje de mquina, sino de una especificacin relativamente informal, en trminos de elementos (temporales o no) que son producidos a ciegas por medio de reglas predefinidas. Una operacin importante que se puede hacer sobre el cdigo recin generado es la optimizacin. Una vez generadas las lneas de cdigo intermedio es posible observarlas desde lejos y tratar de eliminar redundancias y repeticiones. Ntese que esto no se puede hacer al tiempo de generacin de cdigo intermedio, porque equivaldra a quitar a las reglas predefinidas a su carcter genrico. Independientemente del objetivo del programa, conviene manejar los elementos temporales libremente, y slo decidir si se eliminan o no en una segunda fase. En todo caso, luego se convertir el cdigo intermedio (quiz ya optimizado) en cdigo objeto propiamente dicho, esto es, en lenguaje mquina. A esta fase se le conoce como generacin de cdigo objeto. Todo compilador, pues, requiere de otra etapa final- que se conoce como optimizacin de cdigo objeto. Cuando el traductor ejecuta inmediatamente el cdigo obtenido recibe el nombre de intrprete. Un intrprete no genera cdigo, sino que lo ejecuta tan pronto lo obtiene. Hay una gran diferencia de velocidad entre la ejecucin de un programa (objeto) compilado y un programa (fuente) interpretado. La segunda siempre es ms lenta que la primera, ya que el intrprete debe analizar, traducir y ejecutar cada instruccin, aun cuando sta forme parte de un ciclo de repeticiones.

Bibliografa
Titulo: Introduccin a la computacin y a la programacin estructurada. Autor: Guillermo Levine. Pginas: 89-99

You might also like