proceso de compilacion

19

Click here to load reader

Upload: guest9a91e2

Post on 08-Jun-2015

17.047 views

Category:

Technology


2 download

DESCRIPTION

Muestra una parte del proceso de compilacion de los lenguajes de programacion

TRANSCRIPT

Page 1: Proceso de Compilacion

Modelos de Lenguajes Modelos de Lenguajes de Programaciónde Programación

Analí J. Alfaro AlfaroIng. Informático

Escuela académico-Profesional de InformáticaUniversidad Nacional de Trujillo

Page 2: Proceso de Compilacion

Paradigmas de los LPParadigmas de los LP

Podemos citar :◦Modelo Imperativo

Describe los programas en términos de estados y cambio de estados Asignación de datos a variables. Existencia de estructuras repetitivas Basa en el uso procedimientos y funciones

◦Modelo Funcional Fundamenta uso de funciones matemáticas. Usa recursividad No hace uso de construcciones secuenciales ni iterativas Evalúa toda la expresión, no hay asignaciones Uso de listas

Analí J. Alfaro Alfaro Ingeniero Informático

Page 3: Proceso de Compilacion

Paradigmas de los LPParadigmas de los LPPodemos citar :

◦ Modelo OO Encapsulamiento y TAD (tipos abstractos de datos) Clases y objetos Herencia , paso de mensajes y polimorfismo

◦Modelo Lógico Basado en la lógica de predicados Uso de reglas Modelo que usa hechos (datos), reglas (formalización) y deduce

conocimiento.◦Modelo Concurrente

Centrado en la comunicación y sincronización de procesos Acceso exclusivo a datos compartidos.

Analí J. Alfaro Alfaro Ingeniero Informático

Page 4: Proceso de Compilacion

Criterios de Evaluación LP:Criterios de Evaluación LP:LegibilidadExpresividadBuena DefiniciónTipos y estructuras de datosModularidadEntrada /SalidaTransportabilidad

Page 5: Proceso de Compilacion

Criterios de Evaluación LP:Criterios de Evaluación LP:

EficienciaGeneralidadReutilizaciónExtensibilidadDistribuciónArquitectura NeutralRobustez.

Page 6: Proceso de Compilacion

Proceso de un LP :Proceso de un LP :Consideraciones:

◦Computador comprende lenguaje máquina.◦Programamos en lenguajes de alto nivel (facilidad y

fiabilidad).Cómo puede un programa escrito en LP de alto nivel

ejecutarse?Puede hacerlo de 3 formas :

◦Proceso de Compilación◦Proceso de Interpretación◦Proceso Híbrido

Page 7: Proceso de Compilacion

1.- Proceso 1.- Proceso de Compilación :de Compilación :Compilador :

◦ Programa en lenguaje máquina◦Transformación : programa fuente en programa

ejecutable.

Código FuenteCódigo FuenteCompilador o

Traductor

Código ObjetoCódigo ObjetoDatos entradaDatos entrada

ResultadosResultados

Page 8: Proceso de Compilacion

1.- Proceso 1.- Proceso de Compilación :de Compilación :•Proceso de Transformación traducción :

Page 9: Proceso de Compilacion

1.- Proceso 1.- Proceso de Compilación :de Compilación :La transformación muestra:

◦Programa Fuente : escrito en un LP de alto nivel

◦Compilador : encargado de la traducción y comprobar las llamadas a las

librerías para que se ejecuten correctamente.◦Programa Objeto :

Programa traducido, puede o no estar en lenguaje máquina Aún no es directamente ejecutable

Page 10: Proceso de Compilacion

1.- Proceso 1.- Proceso de Compilación :de Compilación :La transformación muestra:

◦Programa Ejecutable : Traducción completa a lenguaje máquina. Hecha por el Enlazador (Linker)o Montador. Es directamente ejecutable

◦Enlazador (Linker) : Encargado de insertar al programa objeto el código máquina

de las funciones de las librerías (archivos de biblioteca) usadas en el programa y de realizar el proceso de montaje.

Page 11: Proceso de Compilacion

1.1. Etapas en el proceso Compilación1.1. Etapas en el proceso Compilación

Las etapas en el proceso de Compilación son:◦Análisis◦Síntesis

Análisis :◦Divide al programa en sus elementos componentes◦Crea el código o programa intermedio.

Síntesis :◦Construye el código objeto, a partir del código intermedio.

Page 12: Proceso de Compilacion

1.1. Etapas en el proceso Compilación1.1. Etapas en el proceso Compilación

Tabla de Símbolos

Código Fuente

Código Intermedio

Código Objeto

Análisis Síntesis

Page 13: Proceso de Compilacion

1.1.1. Análisis1.1.1. AnálisisAnalizador Léxico (Scaning):

◦Funciones: construir una secuencia de unidades significativas

sintácticas llamadas Token. Reducir el trabajo del analizador sintáctico.

◦Entrada : cadenas de caracteres y los depura.

◦Construcción Tokens: Elimina espacios blancos, comentarios, etc. Reconocer token correctos mediante reconocedor de

patrones (autómatas).

Page 14: Proceso de Compilacion

1.1.1. Análisis1.1.1. AnálisisAnalizador Léxico (Scaning):

◦Reconocimiento token : Se construyen autómatas finitos, usando tabla de símbolos Un token reconocido lexema

◦Tabla de símbolos, almacena todos los identificadores usados en el programa además sus tipos y la posición de memoria que ocupan.

◦Ejemplo

Page 15: Proceso de Compilacion

1.1.1. Análisis1.1.1. AnálisisAnalizador Sintáctico (Parser)

◦Función: Determinar si un programa es correcto sintácticamente,

mediante la construcción de árboles sintácticos.◦Árbol sintáctico:

Organiza los Tokens, usando reglas recursivas conocidas como gramáticas de libre contexto.

◦Gramáticas de libre contexto: Definidas formalmente con BNF.

◦Ejemplo

Page 16: Proceso de Compilacion

1.1.1. Análisis1.1.1. AnálisisAnalizador Semántico

◦Función: Verifica que no ocurran errores semánticos

◦Proceso de verificación, incluye: Consultar la tabla de símbolos, para encontrar información

de un identificador y la información ligada a éste.◦Además, ayuda en :

Cada identificador debe ser declarado antes de ser usado. No existan identificadores usados en contextos

inapropiados.

Page 17: Proceso de Compilacion

1.1.1. Análisis1.1.1. AnálisisAnalizador Semántico

◦Función: Verifica que no ocurran errores semánticos, usando un

verificador de tipos. ◦Proceso de verificación, incluye:

Consultar la tabla de símbolos, para encontrar información de un identificador y la información ligada a éste.

◦Verificador de tipos: Conversión de tipos Resuelve por ejemplo sobrecarga de operadores No exista declaración repetida de identificadores

Page 18: Proceso de Compilacion

1.1.1. Análisis1.1.1. AnálisisAnalizador Semántico

◦Además, ayuda a verificar : Cada identificador debe ser declarado antes de ser usado. No existan identificadores usados en contextos

inapropiados. Concuerden el orden, cantidad y los tipos de parámetros

usados.Generación de código intermedio:

◦Representación intermedia independiente de la máquina

Page 19: Proceso de Compilacion

1.1.1. Síntesis1.1.1. SíntesisOptimización del código intermedio:

◦Función: Mejorar el código intermedio para producir código objeto

más eficiente.Generación del código Objeto:

◦Finalmente se transforma el código intermedio mejorado en código objeto.

◦Código objeto, puede estar en: Lenguaje máquina Lenguaje ensamblador Lenguaje de alto nivel