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

Introduccion

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