You are on page 1of 27

FASES DEL PROCESO DE COMPILACIN

conceptos bsicos:

Lenguaje: Conjunto de smbolos y reglas que permiten la comunicacin, es decir, trasmitir una idea, un mensaje. Lxico (vocabulario): Conjunto de palabras que forman parte de un lenguaje especfico. Gramtica: Agrupa los elementos de forma, estructura y significado que permiten expresarse en un lenguaje determinado. Sintaxis: Conjunto de reglas necesarias para construir frases correctas en un lenguaje.

FASES DEL PROCESO DE COMPILACIN


conceptos bsicos:
Semntica: Significado de frases generadas por la sintaxis y el lxico. Lenguaje de programacin: Conjunto de smbolos y reglas que permiten la comunicacin con un computador. Lenguaje de alto nivel: Lenguaje que permite la comunicacin de un computador mediante smbolos convencionales cercanos a un lenguaje natural. Lenguaje de bajo nivel: Similar al lenguaje de mquina con pequeas modificaciones nemotcnicas que facilitan su uso, por ejemplo el lenguaje ensamblador.

COMPILADORES Y TRADUCTORES.
Traductor es un programa que toma como entrada un programa escrito en un lenguaje de programacin (lenguaje fuente) y produce como salida un programa en otro lenguaje (lenguaje objeto). El traductor se escribe en un lenguaje denominado lenguaje de implementacin. Cuando el lenguaje fuente es de alto nivel (Pascal, C++, etc.) y el lenguaje objeto es un lenguaje de bajo nivel o de mquina, al traductor se le denomina compilador.

ESTRUCTURA DE UN COMPILADOR.
El trabajo de un compilador consiste en tomar la cadena fuente del programa, determinar si es sintcticamente vlida y, a la vez, generar un programa equivalente en un lenguaje que la computadora entienda. El trabajo del compilador se puede dividir en diferentes partes:

Anlisis lexicolgico (scanner)


Anlisis sintctico (parser) Anlisis semntico Generacin de cdigo intermedio Optimizacin de cdigo intermedio Generacin de cdigo ejecutable Tabla de smbolos Gestin de errores

FASES DE UN COMPILADOR

ANALIZADOR LXICO (SCANNER)


Anlisis Lineal: La cadena de entrada se lee de izquierda a derecha y se agrupa en componentes lxicos (tokens)

Secuencias de caracteres con un significado colectivo

ANALIZADOR SINTCTICO
Anlisis Jerrquico Agrupa los componentes lxicos en frases gramaticales que el compilador utiliza

ANALIZADOR SEMNTICO
Busca errores semnticos, rene informacin de tipos; identifica operadores y operandos en base al rbol sintctico producido en el anlisis anterior

OPTIMIZACIN
Esta fase trata de mejorar el cdigo intermedio, o las estructuras que generaran el cdigo definitivo de modo de que resulte un cdigo de maquina ms rpido de ejecutar para guardarlos valores calculados por cada instruccin.

GENERADOR DE CDIGO
Esta fase final de un compilador. Genera el cdigo objeto, que por lo general consiste en un cdigo de maquina relocalizable o cdigo ensamblador. Las posiciones de memoria relativas se seleccionan para cada variable. El uso de los registros de la CPU es relevante.

LENGUAJES FORMALES
Un lenguaje formal es un conjunto (finito o infinito) de cadenas finitas de smbolos primitivos.

Noan Chomsky en los aos 50, fue el creador de una jerarqua de lenguajes segn las gramticas que los generan. Esta gramtica est organizada en base al poder generativo formal de la gramtica y donde se destaca 4 tipos de gramticas (denominados tipo 0, tipo 1, tipo 2 y tipo 3), cada una definida por la clase de reglas que contiene.

LENGUAJES RECURSIVAMENTE ENUMERABLES (DE TIPO 0)


Un lenguaje recursivamente enumerable es un lenguaje formal para el cual existe una mquina de Turing que acepta y se detiene con cualquier cadena del lenguaje. Pero que puede parar y rechazar, o bien iterar indefinidamente, con una cadena que no pertenece al lenguaje, en contraposicin a los lenguajes recursivos en cuyo caso se requiere que la mquina de Turing pare en todos los casos. Todos los lenguajes regulares, independientes de contexto, dependientes de contexto y recursivos son recursivamente enumerables.

LENGUAJES RECURSIVAMENTE ENUMERABLES (DE TIPO 0)


Propiedades de cierre: Los lenguajes recursivamente enumerables son cerrados con las siguientes operaciones. Esto es, si L y P son dos lenguajes recursivamente enumerables, entonces los siguiente lenguajes son recursivamente enumerables tambin: El cierre estrella L* de L La concatenacin L P de L y P La unin L U P de L y P La interseccin L P de L y P

Ntese que los lenguajes recursivamente enumerables no son cerrados con la diferencia ni el complementario.

L \ P puede no ser recursivamente enumerable


L es recursivamente enumerable si y solo si L es tambin recursivo.

LENGUAJES DEPENDIENTES DEL CONTEXTO (SENSIBLES AL CONTEXTO, DE TIPO 1)


El lenguaje sensible al contexto es un lenguaje formal que puede ser definido por gramticas sensibles al contexto. Es uno de los cuatro tipos de gramticas en la jerarqua de Chomsky, siendo esta gramtica la menos frecuente, tanto en la teora como en la prctica.

Propiedades:
La unin, interseccin, y concatenacin de dos Lenguajes sensibles al contexto es un lenguaje sensible al contexto. El complemento de un lenguaje sensible al contexto es en si mismo sensible al contexto. Cada gramtica libre de contexto es un lenguaje sensible al contexto. La composicin de una cadena en un lenguaje definido por una gramtica sensible al contexto arbitraria, o por una gramtica determinista sensible al contexto arbitraria, es un problema PSPACE-completo.

LENGUAJES INDEPENDIENTES DEL CONTEXTO (LIBRES DE CONTEXTO, DE TIPO 2)


Gramtica libre de contexto Una gramtica libre de contexto (o de contexto libre) es una gramtica formal en la que cada regla de produccin es de la forma: Vw Donde V es un smbolo no terminal y w es una cadena de terminales y/o no terminales. El trmino libre de contexto se refiere al hecho de que el no terminal V puede siempre ser sustituido por w sin tener en cuenta el contexto en el que ocurra. Un lenguaje formal es libre de contexto si hay una gramtica libre de contexto que lo genera.

LENGUAJES INDEPENDIENTES DEL CONTEXTO (LIBRES DE CONTEXTO, DE TIPO 2)


Las gramticas libres de contexto permiten describir la mayora de los lenguajes de programacin, de hecho, la sntaxis de la mayora de lenguajes de programacin est definida mediante gramticas libres de contexto. Por otro lado, estas gramticas son suficientemente simples como para permitir el diseo de eficientes algoritmos de anlisis sintctico que, para una cadena de caracteres dada determinen cmo puede ser generada desde la gramtica. Los analizadores LL y LR tratan restringidos subconjuntos de gramticas libres de contexto.

Definicin formal
As como cualquier gramtica formal, una gramtica libre de contexto puede ser definida mediante la 4-tupla:

LENGUAJE REGULAR
Un lenguaje regular es un tipo de lenguaje formal que satisface las siguientes propiedades: Los lenguajes ms sencillos que se considerarn son los lenguajes regulares, es decir, los que se pueden generar a partir de los lenguajes bsicos, con la aplicacin de las operaciones de unin, concatenacin y * de Kleene un nmero finito de veces.

AUTMATAS
En el campo de los Traductores, Procesadores y Compiladores, lo fundamental es la simulacin de procesos para tratar informacin. La informacin se codifica en cadenas de smbolos. Un autmata es un dispositivo que manipula cadena de smbolos que se presentan a su entrada, produciendo otras tiras o cadenas de smbolos a su salida

AUTMATAS FINITOS
Un autmata finito es un conjunto de nodos y aristas que representan trayectorias para generar una expresin bajo un alfabeto. Un diagrama de transicin es un autmata finito. La autmata finita se clasifica en: Autmatas finitos no determinsticos. NFA Autmatas finitos determinsticos. DFA

AUTMATAS FINITOS NO DETERMINSTICOS. NFA


Un NFA es un modelo matemtico que consiste de:

1.- Un conjunto de estados.


2.- Un conjunto de smbolos de entrada. 3.- Una funcin de transicin que corresponde pares estado-smbolo a conjuntos de estados. 4.- Un estado So que denota como el estado inicial. 5.- Un conjunto de estados F que denotan los estados de aceptacin o finales.

AUTMATAS A PILA
Un autmata con pila, autmata a pila o autmata de pila es un modelo matemtico de un sistema que recibe una cadena constituida por smbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autmata reconoce. El lenguaje que reconoce un autmata con pila pertenece al grupo de los lenguajes libres de contexto en la clasificacin de la Jerarqua de Chomsky.

AUTMATAS LINEALMENTE ACOTADOS


Un autmata linealmente acotado es una mquina de Turing cuya cinta est formada solamente por celdas de kn de largo, donde la longitud n es la secuencia de la entrada y k es una constante asociada al autmata linealmente-acotado particular, es decir la cantidad de cinta que el autmata permite usar se limita por un factor lineal k para que cuando entre una palabra de tamao n (los smbolos de n) , la mquina determine si la palabra es aceptable, o si la palabra est en el lenguaje del autmata.

MQUINA DE TURING
Es un modelo matemtico que consiste en un autmata capaz de implementar cualquier problema matemtico expresado por medio de un algoritmo. Es un autmata que se mueve sobre una secuencia lineal de datos. En cada instante la mquina puede leer un solo dato de la secuencia (generalmente un carcter) y realiza ciertas acciones en base a una tabla que tiene en cuenta su "estado" actual (interno) y el ltimo dato ledo. Entre las acciones est la posibilidad de escribir nuevos datos en la secuencia; recorrer la secuencia en ambos sentidos y cambiar de "estado" dentro de un conjunto finito de estados posibles.

Cuadro sinptico de las fases de la compilacin vs lenguajes formales vs autmatas

Fases de la compilacin

Consisten en la traduccin de un programa fuente escrito en un lenguaje de alto nivel a un programa objeto y luego se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa en lenguaje mquina directamente ejecutable.

Fase de anlisis

El anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a derecha y se agrupa en componentes lxicos (tokens), que son secuencias de caracteres que tienen un significado.

Por ejemplo, identificadores, palabras reservadas, signos de final de instruccin. Cada componente es asociada a la categora que pertenece.

Realiza un anlisis jerrquico agrupado de los componentes lxicos en frases gramaticales que el compilador utiliza. El anlisis semntico verifica que el rbol sintctico tenga un significado vlido dentro de las reglas semnticas del lenguaje. Analizador semntico En una asignacin, el tipo de la variable concuerde con el tipo de la expresin asignada. Que los subndices se apliquen a variables tipo arreglo y no a otras. Que las variables estn declaradas antes de ser usadas. Fcil de producir Fcil de traducir al programa objeto

Fase sntesis

Despus de los anlisis sintctico y semntico, algunos compiladores generan una representacin intermedia explcita del programa fuente. Se puede considerar esta representacin intermedia como un programa para una mquina abstracta

Optimizaci n de cdigo

Lenguaje formal

Un lenguaje formal es un conjunto (finito o infinito) de cadenas finitas de smbolos primitivos

Alfabeto Gramti ca

Esta fase trata de mejorar el cdigo intermedio, o las estructuras que generaran el cdigo definitivo de modo de que resulte un cdigo de maquina ms rpido de ejecutar para guardarlos valores calculados por cada instruccin. Tipo 0: Gramticas libres que El alfabeto es un conjunto finito no vaco de generan lenguajes sin ningn smbolos tipo de restriccin La gramtica es un conjunto finito de reglas para formar cadenas finitas juntando smbolos del alfabeto Chomsky clasific jerrquicamente las gramticas formales que generan lenguajes formales, en estos tipos: Tipo 1: Gramticas contextuales que generan lenguajes contextuales

Tipo 2: Gramticas incontextuales que generan lenguajes incontextuales Tipo 3: Gramticas regulares que generan lenguajes regulares incontextuales

Se han desarrollado como un medio para formalizar matemticamente una teora; Su sintaxis es capaz de definir oraciones rigurosamente definidas; Constituyen un poderoso instrumento para la investigacin y el procesamiento del Lenguaje Natural por computadora.

Autmatas Finitos En el campo de los Traductores, Procesadores y Compiladores, lo fundamental es la simulacin de procesos para tratar informacin. La informacin se codifica en cadenas de smbolos. Un autmata es un dispositivo que manipula cadena de smbolos que se presentan a su entrada, produciendo otras tiras o cadenas de smbolos a su salida

Autmatas

Un autmata finito es un conjunto de nodos y aristas que representan trayectorias para generar una expresin bajo un alfabeto. Un diagrama de transicin es un autmata finito.

Autmatas finitos no determinsticos. NFA

Un NFA es un modelo matemtico que consiste de: 1.- Un conjunto de estados. 2.- Un conjunto de smbolos de entrada. 3.- Una funcin de transicin que corresponde pares estado-smbolo a conjuntos de estados. 4.- Un estado So que denota como el estado inicial. 5.- Un conjunto de estados F que denotan los estados de aceptacin o finales.

Mquina de Turing

Es un modelo matemtico que consiste en un autmata capaz de implementar cualquier problema matemtico expresado por medio de un algoritmo. Autmatas finitos determinsticos. DFA

Un DFA es un caso especial de NFA en el que ningn estado tiene transiciones para diversos estados bajo el mismo smbolo no se permiten transiciones psilon.

Autmatas a Pila

Un autmata con pila, autmata a pila o autmata de pila es un modelo matemtico de un sistema que recibe una cadena constituida por smbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autmata reconoce.

Autmatas linealmente acotados

Un autmata linealmente acotado es una mquina de Turing cuya cinta est formada solamente por celdas de kn de largo, donde la longitud n es la secuencia de la entrada y k es una constante asociada al autmata linealmente-acotado particular, es decir la cantidad de cinta que el autmata permite usar se limita por un factor lineal k para que cuando entre una palabra de tamao n (los smbolos de n) , la mquina determine si la palabra es aceptable, o si la palabra est en el lenguaje del autmata.

REFERENCIAS BIBLIOGRFICAS
[1] J. Glenn Brookshear. Theory of Computation. Formal Languages, Automata, and Complexity, The Benjamin/Cummings Publishing Company, Inc. 1989 [2] J. E. Hopcroft, R. Motwani, J. D. Ullman. Introduccin a la Teora de Autmatas, Lenguajes y Computacin. Addison Wesley Longman, Pearson Education Company, Segunda Edicin 2001. [3] John C. Martin. Introduction to Languages and the theory of Computation. WCB/McGraw-Hill, Second Edition. 1996. [4] Michael Sipser. Introduction to the theory of Computation. PWS Publishing Company, 1997. [5] Dean Kelly. Teora de Autmatas y Lenguajes Formales. Prentice-Hall, 1998. [6] Pedro Garca, Toms Prez, etc. Teora de Autmatas y Lenguajes Formales. Alfa omega Grupo Editor. 2001. Matemticas [7] H. Contreras: Los fundamentos de la gramtica transformacional, Mxico, siglo XXI, 1971. [8] J. Nivette: Principios de gramtica generativa. Madrid, Fragua, 1973. [9] Vidal Lamiquiz, Lingstica Espaola. Publicaciones de la Universidad de Sevilla, 1973.

You might also like