SEGUNDA PARTE IE. Fernando Jiménez Valencia. Noviembre 2009.
Al terminar la unidad el alumno describirá los conceptos y las diferentes partes de los compiladores
Antecedentes. Programa, lenguajes de programación, etc. Clasificación y generaciones. Compilación. Proceso. Estructura. Bibliografía.
Programa de proceso, proceso de compilación y estructura general de un compilador
Son los que están enfocados preferentemente para ayudar al programador en la puesta punto de los programas. Programas de proceso Traductores .- son meta-programas que toman como entrada un programa escrito  en lenguaje simbólico  semejante al natural y proporciona como salida un programa escrito en  lenguaje compresible para el hardware  de la computadora. De servicio .- grupo de programas que realizan funciones útiles para el sistema o para el usuario. (comandos o utilerías) Ensambladores Compiladores Interpretes
Programa ensamblador .- transforman  programas fuente escritos en lenguaje ensamblador , en un  programas objeto escritos en lenguaje maquina  y ejecutables directamente por el hardware de la computadora. Programa compilador .- realiza la traducción completa del  programa fuente  escrito en lenguaje simbólico de alto nivel, en un  programa objeto  escritos en lenguaje maquina. La traducción se realiza completa en caso de no existir errores. Programa interprete .- transforma cada instrucción del  programa fuente  en instrucciones de lenguaje maquina y lo va ejecutando a la vez.
Programa escrito por el programador en lenguaje simbólico alejado del lenguaje maquina (binario). (extensión “.CPP” o “.C” para lenguaje C) Programa binario generado  por el compilador  a partir de un programa fuente. (extensión es “.OBJ”)
Interpretes Cada que se ejecuta el programa traduce  instrucción por instrucción a código máquina. Ejemplos:  DOS , Born shell de Unix, bash de Linux, BASIC, etc. Compiladores Traducen solo una vez todo el programa a código objeto (binario) para después crear un ejecutable . Ejemplos:  C/C++ , PASCAL, etc. PRACTICA CON DOS Y EL COMPILADOR  DE “C”
Código fuente Interprete (traductor ) Ejecución  (De la instrucción) Código Fuente (programa fuente) Compilador (traductor) Programa objeto Ejecución directa
Editar y ejecutar un programa (“.BAT”)
Consiste en obtener el  programa objeto  codificado en lenguaje maquina a partir del  programa fuente .
El programa se instala en el sistema informático, para la disposición de los usuarios. Se evalúa periódicamente y se hacen  adaptaciones y modificaciones necesarias para mantenerla actualizada. EDICIÓN (programa fuente)  COMPILACIÓN (programa objeto) PRUEBAS DE EJECUCIÓN.  Se crea el  programa fuente (“.CPP”)  almacenado en la computadora. EJERCICIO EDITAR Se obtiene un  programa objeto (“.OBJ”) , codificado  en lenguaje maquina a partir del  programa fuente . Realizada automáticamente mediante  el compilador del lenguaje. El  programa ejecutable (“.EXE”) , se obtiene enlazando el programa objeto y los módulos o rutinas internas del lenguaje que forman parte del la aplicación necesarias. Proceso llevado a acabo en la etapa del “MAKE”. El programa ejecutable se somete a un  juego de datos prueba  capaz de detectar las posibles incorrecciones en su funcionamiento. EXPLOTACIÓN Y MANTENIMIENTO. ENLACE (programa ejecutable)
 
Analizador lexicográfico(scanner) .- examina en el programa fuente las unidades básicas (léxicas) o tokens de información pertenecientes al lenguaje. Un token es un elemento o cadena con significado propio en el programa (palabras reservadas del lenguaje, identificadores, operadores, etc.). Un error puede ser una palabra reservada mal escrita, un identificador no permitido, etc.
Analizador sintáctico (parser) .- recibe la tira de tokens del scanner e investiga en ellas los posibles errores sintácticos que aparezcan. Errores de formato de instrucciones, duplicidad de identificadores de distintas variables, etc. Los errores son reportados mediante un listado de compilación.
Generador de código intermedio .- traduce el resultado del análisis anterior (en caso de ausencias de errores) a un código intermedio propio del compilador, para que con él permita la portabilidad del lenguaje (posibilidad de utilización en distintas computadoras).
Optimizador de código .- su misión es tomar el código intermedio y optimizarlo, adaptándolo a las características del procesador que va dirigido.
Generador de código final .- Traduce el código intermedio optimizado en el código final, es decir, en el lenguaje máquina del procesador al que el compilador va dirigido.
Modulo de tratamiento de errores .- facilita la detección de errores y, en algún caso, recupera errores en las distintas fases de compilación.
Tipos de errores: Lexicográficos : se producen por tokens no reconocibles. Sintácticos : son los que no cumplen con las reglas de sintaxis del lenguaje. Semánticos : Se detecta en alguna fase de la compilación y en algún caso en la de ejecución y son aquellos que no interrumpen el proceso (warnings). Lógicos : son los debidos a la utilización de un algoritmo o expresión incorrecta para el problema que se trata de resolver. Ejecución : son errores relacionados con desbordamientos, operaciones matemáticamente irresolubles, etc.
Tabla de símbolos : es el elemento que almacena todos los datos referidos a variables y estructuras de datos del programa que se está compilando.
Eduardo Alcalde, Miguel García. Informática Básica. Segunda Edición. Edit. McGrawHill. 1994.

Compiladores iswi (parte 2)

  • 1.
    SEGUNDA PARTE IE.Fernando Jiménez Valencia. Noviembre 2009.
  • 2.
    Al terminar launidad el alumno describirá los conceptos y las diferentes partes de los compiladores
  • 3.
    Antecedentes. Programa, lenguajesde programación, etc. Clasificación y generaciones. Compilación. Proceso. Estructura. Bibliografía.
  • 4.
    Programa de proceso,proceso de compilación y estructura general de un compilador
  • 5.
    Son los queestán enfocados preferentemente para ayudar al programador en la puesta punto de los programas. Programas de proceso Traductores .- son meta-programas que toman como entrada un programa escrito en lenguaje simbólico semejante al natural y proporciona como salida un programa escrito en lenguaje compresible para el hardware de la computadora. De servicio .- grupo de programas que realizan funciones útiles para el sistema o para el usuario. (comandos o utilerías) Ensambladores Compiladores Interpretes
  • 6.
    Programa ensamblador .-transforman programas fuente escritos en lenguaje ensamblador , en un programas objeto escritos en lenguaje maquina y ejecutables directamente por el hardware de la computadora. Programa compilador .- realiza la traducción completa del programa fuente escrito en lenguaje simbólico de alto nivel, en un programa objeto escritos en lenguaje maquina. La traducción se realiza completa en caso de no existir errores. Programa interprete .- transforma cada instrucción del programa fuente en instrucciones de lenguaje maquina y lo va ejecutando a la vez.
  • 7.
    Programa escrito porel programador en lenguaje simbólico alejado del lenguaje maquina (binario). (extensión “.CPP” o “.C” para lenguaje C) Programa binario generado por el compilador a partir de un programa fuente. (extensión es “.OBJ”)
  • 8.
    Interpretes Cada quese ejecuta el programa traduce instrucción por instrucción a código máquina. Ejemplos: DOS , Born shell de Unix, bash de Linux, BASIC, etc. Compiladores Traducen solo una vez todo el programa a código objeto (binario) para después crear un ejecutable . Ejemplos: C/C++ , PASCAL, etc. PRACTICA CON DOS Y EL COMPILADOR DE “C”
  • 9.
    Código fuente Interprete(traductor ) Ejecución (De la instrucción) Código Fuente (programa fuente) Compilador (traductor) Programa objeto Ejecución directa
  • 10.
    Editar y ejecutarun programa (“.BAT”)
  • 11.
    Consiste en obtenerel programa objeto codificado en lenguaje maquina a partir del programa fuente .
  • 12.
    El programa seinstala en el sistema informático, para la disposición de los usuarios. Se evalúa periódicamente y se hacen adaptaciones y modificaciones necesarias para mantenerla actualizada. EDICIÓN (programa fuente) COMPILACIÓN (programa objeto) PRUEBAS DE EJECUCIÓN. Se crea el programa fuente (“.CPP”) almacenado en la computadora. EJERCICIO EDITAR Se obtiene un programa objeto (“.OBJ”) , codificado en lenguaje maquina a partir del programa fuente . Realizada automáticamente mediante el compilador del lenguaje. El programa ejecutable (“.EXE”) , se obtiene enlazando el programa objeto y los módulos o rutinas internas del lenguaje que forman parte del la aplicación necesarias. Proceso llevado a acabo en la etapa del “MAKE”. El programa ejecutable se somete a un juego de datos prueba capaz de detectar las posibles incorrecciones en su funcionamiento. EXPLOTACIÓN Y MANTENIMIENTO. ENLACE (programa ejecutable)
  • 13.
  • 14.
    Analizador lexicográfico(scanner) .-examina en el programa fuente las unidades básicas (léxicas) o tokens de información pertenecientes al lenguaje. Un token es un elemento o cadena con significado propio en el programa (palabras reservadas del lenguaje, identificadores, operadores, etc.). Un error puede ser una palabra reservada mal escrita, un identificador no permitido, etc.
  • 15.
    Analizador sintáctico (parser).- recibe la tira de tokens del scanner e investiga en ellas los posibles errores sintácticos que aparezcan. Errores de formato de instrucciones, duplicidad de identificadores de distintas variables, etc. Los errores son reportados mediante un listado de compilación.
  • 16.
    Generador de códigointermedio .- traduce el resultado del análisis anterior (en caso de ausencias de errores) a un código intermedio propio del compilador, para que con él permita la portabilidad del lenguaje (posibilidad de utilización en distintas computadoras).
  • 17.
    Optimizador de código.- su misión es tomar el código intermedio y optimizarlo, adaptándolo a las características del procesador que va dirigido.
  • 18.
    Generador de códigofinal .- Traduce el código intermedio optimizado en el código final, es decir, en el lenguaje máquina del procesador al que el compilador va dirigido.
  • 19.
    Modulo de tratamientode errores .- facilita la detección de errores y, en algún caso, recupera errores en las distintas fases de compilación.
  • 20.
    Tipos de errores:Lexicográficos : se producen por tokens no reconocibles. Sintácticos : son los que no cumplen con las reglas de sintaxis del lenguaje. Semánticos : Se detecta en alguna fase de la compilación y en algún caso en la de ejecución y son aquellos que no interrumpen el proceso (warnings). Lógicos : son los debidos a la utilización de un algoritmo o expresión incorrecta para el problema que se trata de resolver. Ejecución : son errores relacionados con desbordamientos, operaciones matemáticamente irresolubles, etc.
  • 21.
    Tabla de símbolos: es el elemento que almacena todos los datos referidos a variables y estructuras de datos del programa que se está compilando.
  • 22.
    Eduardo Alcalde, MiguelGarcía. Informática Básica. Segunda Edición. Edit. McGrawHill. 1994.

Notas del editor

  • #13 Edición . Usando un editor de programas o procesador de textos el programa es escrito en lenguaje alto nivel llamado programa fuente y almacenado en la computadora. Compilación. Consiste en obtener un programa objeto , codificado en lenguaje maquina a partir del programa fuente. Tarea realizada automáticamente mediante el compilador del lenguaje , el cual traduce, analiza sintaxis del programa, detecta posibles errores en su escritura y posibilita la corrección de los mismos. Enlace (linkaje) . Fase en la que se obtiene el programa ejecutable , aqui se enlazan rutinas internas de la librería del lenguaje necesarias para el programa y programas o módulos separados que forman parte del la aplicación. Pruebas de ejecución . El programa ejecutable obtenido se somete a un juego de datos prueba capaz de detectar las posibles incorrecciones en su funcionamiento.