Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Modelos de Lenguajes de Programación Analí J. Alfaro Alfaro Ing. Informático  Escuela académico-Profesional de Informática...
Paradigmas de los LP <ul><li>Podemos citar : </li></ul><ul><ul><li>Modelo Imperativo </li></ul></ul><ul><ul><ul><li>Descri...
Paradigmas de los LP <ul><li>Podemos citar : </li></ul><ul><ul><li>Modelo OO </li></ul></ul><ul><ul><ul><li>Encapsulamient...
Criterios de Evaluación LP: <ul><li>Legibilidad </li></ul><ul><li>Expresividad </li></ul><ul><li>Buena Definición </li></u...
Criterios de Evaluación LP: <ul><li>Eficiencia </li></ul><ul><li>Generalidad </li></ul><ul><li>Reutilización </li></ul><ul...
Proceso de un LP : <ul><li>Consideraciones: </li></ul><ul><ul><li>Computador comprende lenguaje máquina. </li></ul></ul><u...
1.- Proceso  de Compilación : <ul><li>Compilador : </li></ul><ul><ul><li>Programa en lenguaje máquina </li></ul></ul><ul><...
1.- Proceso  de Compilación : <ul><li>Proceso de Transformación traducción : </li></ul>
1.- Proceso  de Compilación : <ul><li>La transformación muestra: </li></ul><ul><ul><li>Programa Fuente :  </li></ul></ul><...
1.- Proceso  de Compilación : <ul><li>La transformación muestra: </li></ul><ul><ul><li>Programa Ejecutable : </li></ul></u...
1.1. Etapas en el proceso Compilación <ul><li>Las etapas en el proceso de Compilación son: </li></ul><ul><ul><li>Análisis ...
1.1. Etapas en el proceso Compilación Código  Fuente Código  Intermedio Código  Objeto Análisis Síntesis Tabla de Símbolos
1.1.1. Análisis <ul><li>Analizador Léxico (Scaning): </li></ul><ul><ul><li>Funciones: </li></ul></ul><ul><ul><ul><li>const...
1.1.1. Análisis <ul><li>Analizador Léxico (Scaning):  </li></ul><ul><ul><li>Reconocimiento token : </li></ul></ul><ul><ul>...
1.1.1. Análisis <ul><li>Analizador Sintáctico (Parser) </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Deter...
1.1.1. Análisis <ul><li>Analizador Semántico </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Verifica que no...
1.1.1. Análisis <ul><li>Analizador Semántico </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Verifica que no...
1.1.1. Análisis <ul><li>Analizador Semántico </li></ul><ul><ul><li>Además, ayuda a verificar : </li></ul></ul><ul><ul><ul>...
1.1.1. Síntesis <ul><li>Optimización del código intermedio: </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>...
Upcoming SlideShare
Loading in …5
×

Proceso de Compilacion

24,444 views

Published on

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

Published in: Technology
  • Login to see the comments

Proceso de Compilacion

  1. 1. Modelos de Lenguajes de Programación Analí J. Alfaro Alfaro Ing. Informático Escuela académico-Profesional de Informática Universidad Nacional de Trujillo
  2. 2. Paradigmas de los LP <ul><li>Podemos citar : </li></ul><ul><ul><li>Modelo Imperativo </li></ul></ul><ul><ul><ul><li>Describe los programas en términos de estados y cambio de estados </li></ul></ul></ul><ul><ul><ul><li>Asignación de datos a variables. </li></ul></ul></ul><ul><ul><ul><li>Existencia de estructuras repetitivas </li></ul></ul></ul><ul><ul><ul><li>Basa en el uso procedimientos y funciones </li></ul></ul></ul><ul><ul><li>Modelo Funcional </li></ul></ul><ul><ul><ul><li>Fundamenta uso de funciones matemáticas. </li></ul></ul></ul><ul><ul><ul><li>Usa recursividad </li></ul></ul></ul><ul><ul><ul><li>No hace uso de construcciones secuenciales ni iterativas </li></ul></ul></ul><ul><ul><ul><li>Evalúa toda la expresión, no hay asignaciones </li></ul></ul></ul><ul><ul><ul><li>Uso de listas </li></ul></ul></ul>Analí J. Alfaro Alfaro Ingeniero Informático
  3. 3. Paradigmas de los LP <ul><li>Podemos citar : </li></ul><ul><ul><li>Modelo OO </li></ul></ul><ul><ul><ul><li>Encapsulamiento y TAD (tipos abstractos de datos) </li></ul></ul></ul><ul><ul><ul><li>Clases y objetos </li></ul></ul></ul><ul><ul><ul><li>Herencia , paso de mensajes y polimorfismo </li></ul></ul></ul><ul><ul><li>Modelo Lógico </li></ul></ul><ul><ul><ul><li>Basado en la lógica de predicados </li></ul></ul></ul><ul><ul><ul><li>Uso de reglas </li></ul></ul></ul><ul><ul><ul><li>Modelo que usa hechos (datos), reglas (formalización) y deduce conocimiento. </li></ul></ul></ul><ul><ul><li>Modelo Concurrente </li></ul></ul><ul><ul><ul><li>Centrado en la comunicación y sincronización de procesos </li></ul></ul></ul><ul><ul><ul><li>Acceso exclusivo a datos compartidos. </li></ul></ul></ul>Analí J. Alfaro Alfaro Ingeniero Informático
  4. 4. Criterios de Evaluación LP: <ul><li>Legibilidad </li></ul><ul><li>Expresividad </li></ul><ul><li>Buena Definición </li></ul><ul><li>Tipos y estructuras de datos </li></ul><ul><li>Modularidad </li></ul><ul><li>Entrada /Salida </li></ul><ul><li>Transportabilidad </li></ul>
  5. 5. Criterios de Evaluación LP: <ul><li>Eficiencia </li></ul><ul><li>Generalidad </li></ul><ul><li>Reutilización </li></ul><ul><li>Extensibilidad </li></ul><ul><li>Distribución </li></ul><ul><li>Arquitectura Neutral </li></ul><ul><li>Robustez. </li></ul>
  6. 6. Proceso de un LP : <ul><li>Consideraciones: </li></ul><ul><ul><li>Computador comprende lenguaje máquina. </li></ul></ul><ul><ul><li>Programamos en lenguajes de alto nivel (facilidad y fiabilidad). </li></ul></ul><ul><li>Cómo puede un programa escrito en LP de alto nivel ejecutarse? </li></ul><ul><li>Puede hacerlo de 3 formas : </li></ul><ul><ul><li>Proceso de Compilación </li></ul></ul><ul><ul><li>Proceso de Interpretación </li></ul></ul><ul><ul><li>Proceso Híbrido </li></ul></ul>
  7. 7. 1.- Proceso de Compilación : <ul><li>Compilador : </li></ul><ul><ul><li>Programa en lenguaje máquina </li></ul></ul><ul><ul><li>Transformación : programa fuente en programa ejecutable. </li></ul></ul>Código Fuente Código Objeto Datos entrada Resultados Compilador o Traductor
  8. 8. 1.- Proceso de Compilación : <ul><li>Proceso de Transformación traducción : </li></ul>
  9. 9. 1.- Proceso de Compilación : <ul><li>La transformación muestra: </li></ul><ul><ul><li>Programa Fuente : </li></ul></ul><ul><ul><ul><li>escrito en un LP de alto nivel </li></ul></ul></ul><ul><ul><li>Compilador : </li></ul></ul><ul><ul><ul><li>encargado de la traducción y comprobar las llamadas a las librerías para que se ejecuten correctamente. </li></ul></ul></ul><ul><ul><li>Programa Objeto : </li></ul></ul><ul><ul><ul><li>Programa traducido, puede o no estar en lenguaje máquina </li></ul></ul></ul><ul><ul><ul><li>Aún no es directamente ejecutable </li></ul></ul></ul>
  10. 10. 1.- Proceso de Compilación : <ul><li>La transformación muestra: </li></ul><ul><ul><li>Programa Ejecutable : </li></ul></ul><ul><ul><ul><li>Traducción completa a lenguaje máquina. </li></ul></ul></ul><ul><ul><ul><li>Hecha por el Enlazador (Linker)o Montador. </li></ul></ul></ul><ul><ul><ul><li>Es directamente ejecutable </li></ul></ul></ul><ul><ul><li>Enlazador (Linker) : </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul>
  11. 11. 1.1. Etapas en el proceso Compilación <ul><li>Las etapas en el proceso de Compilación son: </li></ul><ul><ul><li>Análisis </li></ul></ul><ul><ul><li>Síntesis </li></ul></ul><ul><li>Análisis : </li></ul><ul><ul><li>Divide al programa en sus elementos componentes </li></ul></ul><ul><ul><li>Crea el código o programa intermedio. </li></ul></ul><ul><li>Síntesis : </li></ul><ul><ul><li>Construye el código objeto, a partir del código intermedio. </li></ul></ul>
  12. 12. 1.1. Etapas en el proceso Compilación Código Fuente Código Intermedio Código Objeto Análisis Síntesis Tabla de Símbolos
  13. 13. 1.1.1. Análisis <ul><li>Analizador Léxico (Scaning): </li></ul><ul><ul><li>Funciones: </li></ul></ul><ul><ul><ul><li>construir una secuencia de unidades significativas sintácticas llamadas Token. </li></ul></ul></ul><ul><ul><ul><li>Reducir el trabajo del analizador sintáctico. </li></ul></ul></ul><ul><ul><li>Entrada : </li></ul></ul><ul><ul><ul><li>cadenas de caracteres y los depura. </li></ul></ul></ul><ul><ul><li>Construcción Tokens: </li></ul></ul><ul><ul><ul><li>Elimina espacios blancos, comentarios, etc. </li></ul></ul></ul><ul><ul><ul><li>Reconocer token correctos mediante reconocedor de patrones (autómatas). </li></ul></ul></ul>
  14. 14. 1.1.1. Análisis <ul><li>Analizador Léxico (Scaning): </li></ul><ul><ul><li>Reconocimiento token : </li></ul></ul><ul><ul><ul><li>Se construyen autómatas finitos, usando tabla de símbolos </li></ul></ul></ul><ul><ul><ul><li>Un token reconocido  lexema </li></ul></ul></ul><ul><ul><li>Tabla de símbolos, almacena todos los identificadores usados en el programa además sus tipos y la posición de memoria que ocupan. </li></ul></ul><ul><ul><li>Ejemplo </li></ul></ul>
  15. 15. 1.1.1. Análisis <ul><li>Analizador Sintáctico (Parser) </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Determinar si un programa es correcto sintácticamente, mediante la construcción de árboles sintácticos. </li></ul></ul></ul><ul><ul><li>Árbol sintáctico: </li></ul></ul><ul><ul><ul><li>Organiza los Tokens, usando reglas recursivas conocidas como gramáticas de libre contexto. </li></ul></ul></ul><ul><ul><li>Gramáticas de libre contexto: </li></ul></ul><ul><ul><ul><li>Definidas formalmente con BNF. </li></ul></ul></ul><ul><ul><li>Ejemplo </li></ul></ul>
  16. 16. 1.1.1. Análisis <ul><li>Analizador Semántico </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Verifica que no ocurran errores semánticos </li></ul></ul></ul><ul><ul><li>Proceso de verificación, incluye: </li></ul></ul><ul><ul><ul><li>Consultar la tabla de símbolos, para encontrar información de un identificador y la información ligada a éste. </li></ul></ul></ul><ul><ul><li>Además, ayuda en : </li></ul></ul><ul><ul><ul><li>Cada identificador debe ser declarado antes de ser usado. </li></ul></ul></ul><ul><ul><ul><li>No existan identificadores usados en contextos inapropiados. </li></ul></ul></ul>
  17. 17. 1.1.1. Análisis <ul><li>Analizador Semántico </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Verifica que no ocurran errores semánticos, usando un verificador de tipos. </li></ul></ul></ul><ul><ul><li>Proceso de verificación, incluye: </li></ul></ul><ul><ul><ul><li>Consultar la tabla de símbolos, para encontrar información de un identificador y la información ligada a éste. </li></ul></ul></ul><ul><ul><li>Verificador de tipos: </li></ul></ul><ul><ul><ul><li>Conversión de tipos </li></ul></ul></ul><ul><ul><ul><li>Resuelve por ejemplo sobrecarga de operadores </li></ul></ul></ul><ul><ul><ul><li>No exista declaración repetida de identificadores </li></ul></ul></ul>
  18. 18. 1.1.1. Análisis <ul><li>Analizador Semántico </li></ul><ul><ul><li>Además, ayuda a verificar : </li></ul></ul><ul><ul><ul><li>Cada identificador debe ser declarado antes de ser usado. </li></ul></ul></ul><ul><ul><ul><li>No existan identificadores usados en contextos inapropiados. </li></ul></ul></ul><ul><ul><ul><li>Concuerden el orden, cantidad y los tipos de parámetros usados. </li></ul></ul></ul><ul><li>Generación de código intermedio: </li></ul><ul><ul><li>Representación intermedia independiente de la máquina </li></ul></ul>
  19. 19. 1.1.1. Síntesis <ul><li>Optimización del código intermedio: </li></ul><ul><ul><li>Función: </li></ul></ul><ul><ul><ul><li>Mejorar el código intermedio para producir código objeto más eficiente. </li></ul></ul></ul><ul><li>Generación del código Objeto: </li></ul><ul><ul><li>Finalmente se transforma el código intermedio mejorado en código objeto. </li></ul></ul><ul><ul><li>Código objeto, puede estar en: </li></ul></ul><ul><ul><ul><li>Lenguaje máquina </li></ul></ul></ul><ul><ul><ul><li>Lenguaje ensamblador </li></ul></ul></ul><ul><ul><ul><li>Lenguaje de alto nivel </li></ul></ul></ul>

×