Introduccion

2,539 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,539
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
88
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduccion

  1. 1. INTERPRETE <ul><li>Un interprete es un programa que </li></ul><ul><li>lee un programa en un lenguaje y </li></ul><ul><li>lo traduce a un programa equivalente en otro lenguaje, </li></ul><ul><li>y además informa al usuario sobre </li></ul><ul><li>la presencia de errores en el programa de entrada </li></ul><ul><li>programa programa </li></ul><ul><li>fuente objeto </li></ul><ul><li>mensajes </li></ul><ul><li>de error </li></ul><ul><li>Aparente complejidad - Tareas básicas </li></ul>interprete
  2. 2. TEORIA DE SOFTWARE DE SISTEMAS <ul><li>Un computador digital es una máquina que puede resolver problemas ejecutando ciertas instrucciones. </li></ul><ul><li>Un programa es una secuencia de instrucciones. </li></ul><ul><li>Los circuitos electrónicos de cada computadora reconocen un conjunto limitado de instrucciones muy simples. </li></ul><ul><li>Lenguaje máquina es el conjunto de instrucciones básicas de una computadora </li></ul>
  3. 3. TRADUCTORES <ul><li>Utilizar lenguaje máquina es difícil y tedioso. </li></ul><ul><li>Solución: </li></ul><ul><ul><ul><li>sea L1 el lenguaje máquina </li></ul></ul></ul><ul><ul><ul><li>y L2 un lenguaje más fácil de utilizar </li></ul></ul></ul>programa en L2 programa en L1 compilación (compilador) interpretación (intérprete)
  4. 4. MÁQUINAS MULTINIVEL ACTUALES <ul><li>La mayoría de las máquinas actuales constan de 6 niveles. </li></ul><ul><li>Los microprogramas son directamente ejecutados por el hardware. </li></ul>Lenguajes de alto nivel Lenguaje ensamblador Sistema operativo Máquina convencional Microprogramación Lógica digital nivel 5 nivel 4 nivel 3 nivel 2 nivel 1 nivel 0 Traducción (compilador) Traducción(ensamblador) Interpretación (sistema operativo) Interpretación (microprograma) Ejecutados directamente
  5. 5. Nivel 0: nivel de lógica digital <ul><li>Es el hardware de la máquina. </li></ul><ul><li>El nivel inferior sería el nivel de dispositivo. </li></ul><ul><li>En este nivel: </li></ul><ul><ul><ul><li>Puertas lógicas </li></ul></ul></ul><ul><ul><ul><li>Circuitos integrados </li></ul></ul></ul><ul><ul><ul><li>Circuitos combinacionales </li></ul></ul></ul><ul><ul><ul><li>Circuitos aritméticos </li></ul></ul></ul><ul><ul><ul><li>Relojes </li></ul></ul></ul><ul><ul><ul><li>Memorias </li></ul></ul></ul><ul><ul><ul><li>Microprocesadores </li></ul></ul></ul><ul><ul><ul><li>Buses </li></ul></ul></ul>
  6. 6. Nivel 1: nivel de microprogramación <ul><li>Existe un programa llamado microprograma. </li></ul><ul><li>La función del microprograma es interpretar las instrucciones del nivel 2. </li></ul><ul><li>En algunas máquinas no existe el nivel de microprogramación. </li></ul>
  7. 7. Nivel 2: nivel de máquina convencional <ul><li>Cada fabricante publica el “Manual de referencia del lenguaje máquina” para cada uno de los computadores. </li></ul><ul><li>Las instrucciones del nivel de máquina las interpreta el microprograma. </li></ul><ul><li>En las máquinas en las que no existe el nivel de microprogramación, las instrucciones del nivel de máquina son realizadas directamente por los circuitos electrónicos. </li></ul>
  8. 8. Nivel 3: nivel del sistema operativo <ul><li>La mayoría de las instrucciones de este nivel están también en el nivel 2 pero además tiene un nuevo conjunto de instrucciones, una organización diferente de la memoria, posibilidad de ejecutar 2 o más programas ... </li></ul><ul><li>Las nuevas instrucciones las interpreta el sistema operativo . </li></ul><ul><li>Las que son idénticas a las del nivel 2 las lleva a cabo el microprograma. </li></ul>
  9. 9. Nivel 4: nivel del lenguaje ensamblador <ul><li>Los niveles 4 y superiores son utilizados por los programadores de aplicaciones . </li></ul><ul><li>Los niveles inferiores están diseñados para ejecutar los intérpretes y traductores de los niveles superiores y son escritos por los programadores de sistemas . </li></ul><ul><li>El ensamblador es el programa que lleva a cabo la traducción de un programa del nivel 4. </li></ul>
  10. 10. Nivel 5: nivel de lenguajes de alto nivel <ul><li>Los lenguajes de alto nivel son más fáciles de utilizar que los lenguajes de niveles inferiores. </li></ul><ul><li>Son utilizados por los programadores de aplicaciones. </li></ul><ul><li>Los traductores de programas en lenguaje de alto nivel pueden ser compiladores o intérpretes. </li></ul>
  11. 11. Conceptos relacionados <ul><li>Con algunas técnicas básicas de escritura de compiladores se pueden construir traductores para una gran variedad de lenguajes y máquinas </li></ul>Arquitectura de Computadoras Lenguajes de Programación Teoría de Lenguajes Teoría de Algoritmos Ingeniería de Software Compiladores
  12. 12. <ul><li>CLASIFICACION GENERAL DE COMPILADORES </li></ul><ul><li>De una pasada o de múltiples pasadas </li></ul><ul><li>De carga y de ejecución </li></ul><ul><li>De depuración o de optimización </li></ul><ul><li>HISTORIA </li></ul><ul><li>Experimentación relacionada a traducción de </li></ul><ul><li>fórmulas </li></ul><ul><li>1950: difícil escritura </li></ul><ul><li>Primer FORTRAN: 18 años </li></ul><ul><li>Hoy: técnicas sistemáticas, lenguajes de implementación , entornos de programación y </li></ul><ul><li>herramientas de software </li></ul>
  13. 13. <ul><li>Computadoras Hombre </li></ul>HISTORIA Código Máquina Lenguaje Ensamblador Código Máquina Ensamblador Código Máquina Lenguaje Ensamblador Lenguaje de Alto Nivel Compilador Ensamblador
  14. 14. <ul><li>El Diseño de un compilador surge como resultado de: </li></ul><ul><ul><li>Desarrollo de un nuevo lenguaje de programación </li></ul></ul><ul><ul><li>Adición de extensiones a los ya existentes </li></ul></ul><ul><ul><li>Explotación de las características del hardware </li></ul></ul><ul><li>A futuro: </li></ul><ul><ul><li>Extensión para el cómputo paralelo y distribuido </li></ul></ul><ul><ul><li>Explotación de características multimedia (MMX) </li></ul></ul>HOY…. Y A FUTURO
  15. 15. <ul><li>ENSAMBLADOR </li></ul><ul><ul><li>Traducen prog ramas escritos en leng uaje ensamblador a código máquina </li></ul></ul><ul><ul><li>Traducen prog ramas escritos en leng uaje de alto nivel a código intermedio o a código máquina </li></ul></ul><ul><li>INTERPRETE </li></ul><ul><ul><li>No genera código objeto, analiza y ejecuta directamente cada proposición del Programa Fuente (PF) </li></ul></ul><ul><li>PREPROCESADOR </li></ul><ul><ul><li>Sustituyen macros, incluyen archivos o extensión del lenguaje. </li></ul></ul>COMPILADOR TIPOS DE SISTEMAS DE COMPILACIÓN
  16. 16. SISTEMA PARA PROCESAMIENTO DE UN LENGUAJE <ul><li>estructura del programa fuente </li></ul><ul><li>programa fuente </li></ul><ul><li>programa objeto en lenguaje ensamblador </li></ul><ul><li>código de máquina relocalizable </li></ul><ul><li>biblioteca </li></ul><ul><li>archivos obj.relocal. </li></ul><ul><li>código de máquina absoluto </li></ul>preprocesador ensamblador compilador editor de carga y enlace
  17. 17. <ul><li>ANÁLISIS (Etapa Inicial) : </li></ul><ul><li>Divide al PF en sus elementos componentes y crea una representación intermedia. </li></ul><ul><li>Se determinan las operaciones y se registran en una estructura de árbol (ej. árbol sintáctico) </li></ul><ul><li>SÍNTESIS (Etapa Final) : </li></ul><ul><li>Construye el PO deseado a partir de la rep resentación Intermedia (requiere técnicas más especializadas) </li></ul>PARTES DE LA COMPILACIÓN
  18. 18. UN AMBIENTE GENERAL DE COMPILACIÓN Fuente Análisis léxico Análisis sintáctico Análisis semántico Intermedio Generador de código Código relocalizable Enlazador Objeto Más: Sistemas de edición y depuración
  19. 19. ANÁLISIS DEL PROGRAMA FUENTE <ul><li>ANALISIS LINEAL (Léxico- Exploración- Scanner) </li></ul><ul><li>Se lee el programa como una cadena de izquierda a derecha, se agrupan y se generan componentes léxicos o tokens (secuencia de caracteres con significado colectivo) </li></ul><ul><li>ANALISIS JERARQUICO (Sintáctico- Parser) </li></ul><ul><li>Los componentes léxicos se agrupan en colecciones anidadas con un significado colectivo ( frases gramaticales que por lo general se representan mediante </li></ul><ul><li>árboles sintácticos ) </li></ul><ul><li>ANALISIS SEMANTICO </li></ul><ul><li>Se realizan revisiones para asegurar que los componentes de un programa se ajustan de un modo significativo </li></ul>
  20. 20. EJEMPLO DE ANÁLISIS: posicion := inicial + velocidad * 60 <ul><ul><ul><li>a ) Componentes léxicos: </li></ul></ul></ul><ul><ul><ul><ul><li>1. El identificador posicion </li></ul></ul></ul></ul><ul><ul><ul><ul><li>2. El símbolo de asignación := </li></ul></ul></ul></ul><ul><ul><ul><ul><li>3. El identificador inicial </li></ul></ul></ul></ul><ul><ul><ul><ul><li>4. El signo de suma: + </li></ul></ul></ul></ul><ul><ul><ul><ul><li>5. El identificador velocidad </li></ul></ul></ul></ul><ul><ul><ul><ul><li>6. El signo de multiplicación: * </li></ul></ul></ul></ul><ul><ul><ul><ul><li>7. El número 60 </li></ul></ul></ul></ul><ul><li>Los identificadores o nombres reconocidos se organizan en una </li></ul><ul><li>tabla de símbolos que se usará en los pasos siguientes </li></ul>
  21. 21. FASES DE UN COMPILADOR <ul><li>PROGRAMA FUENTE </li></ul><ul><li>analizador léxico </li></ul><ul><li>analizador sintáctico </li></ul><ul><li>administrador analizador semántico manejador </li></ul><ul><li>de la tabla generador de código intermedio de errores </li></ul><ul><li>de símbolos optimizador de código </li></ul><ul><li>generador de código </li></ul><ul><li>PROGRAMA OBJETO </li></ul><ul><li>Cada fase transforma al PF de una representación a otra </li></ul>
  22. 22. ESQUEMA DE BLOQUES DE UN COMPILADOR <ul><li>FUENTE Compilador </li></ul><ul><li>ANALISIS </li></ul><ul><li>Scanner </li></ul><ul><li>Tabla </li></ul><ul><li>Parser de </li></ul><ul><li>símbolos </li></ul><ul><li>SINTESIS </li></ul><ul><li>Prep. para la Gen. </li></ul><ul><li>del código </li></ul><ul><li>OBJETO Gener. del código </li></ul>
  23. 23. ESTRUCTURA FUNCIONAL DE UN COMPILADOR (de una pasada) <ul><li>SENTENCIA </li></ul><ul><li>Fuente Explorador Recono- Generador Objeto </li></ul><ul><li>cedor de código </li></ul><ul><li>Tabla de </li></ul><ul><li>símbolos </li></ul>
  24. 24. <ul><li>Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilación, permitiendo detectar más errores </li></ul><ul><li>Las fases de Analisis Sintáctico y Semántico manejan la mayoría de los errores </li></ul><ul><li>En el Anáilsis Semántico se detectan errores donde la estructura sintáctica es correcta pero no tiene significado la operación </li></ul><ul><li>( Por. ej. sumar dos ID , donde uno es el nombre de una matriz y el otro un nombre de procedimiento) </li></ul>DETECCIÓN E INFORMACIÓN DE ERRORES
  25. 25. <ul><li>MODELO LENGUAJE CARACTERISTICAS </li></ul><ul><li>Compilado Fortran, COBOL, Sintaxis rigurosa, </li></ul><ul><li>C/C++, Pascal velocidad y tamaño </li></ul><ul><li>Interpretado Lisp,AWK, BASIC, Desempeño lento. </li></ul><ul><li>SQL Actividades no planea- </li></ul><ul><li>das. Sintaxis relajadas </li></ul><ul><li>Pseudocompilado Java Transportabilidad </li></ul><ul><li>absoluta, desempeño </li></ul><ul><li>intermedio. Sintaxis </li></ul><ul><li>rigurosa </li></ul>EL LENGUAJE Y LA HERRAMIENTA

×