Está en la página 1de 29

COMPILADORES

YEILER ALBERTO QUINTERO BARCO


CONCEPTOS BASICOS
LENGUAJE DE PROGRAMACIÓN
• Notación formal para describir algoritmos o funciones que serán
ejecutadas por un ordenador.
Clasificación de los lenguajes de
programación
• Según su grado de independencia de la máquina (lenguaje máquina,
ensamblador, de medio nivel, de alto nivel, orientados a problemas
concretos.

• Según la forma de sus instrucciones (Lenguajes imperativos o


procedimentales, declarativos, concurrentes, orientados a objetos.

• Por generaciones (1a generación, 2a generación, 3a generación, 4a


generación, 5a generación, generación orientada a objetos, visual,
internet).
Ventajas de los Lenguajes de Alto Nivel
• No se necesita conocer la forma en que se colocan los datos en
memoria.
• Gran variedad de estructuras de control.
• Más fáciles de aprender.
• Mayor capacidad de la creación de estructura de datos.
• Los programas se depuran más fácilmente que los escritos en
lenguaje maquina o ensamblador.
• Relativamente independientes de la maquina.
PROCESADORES DE LENGUAJE
• Para que un ordenador comprenda un lenguaje, necesita procesarse,
por medio de un procesador de lenguaje como traductores,
compiladores, desensambladores, que realizan ciertas operaciones
con los lenguajes.
Traductor
• LenguajeFuente--->Lenguaje interprete---->Lenguaje Objeto
Ensamblador
• Lenguaje ensamblador -Ensamblador-> Lenguaje maquina
Compilador
• Lenguaje de alto nivel --Compilador-> Lenguaje maquina
PROCESO DE COMPILACIÓN MONTAJE
Y EJECUCIÓN
• Tiempo de Compilación. Tiempo que se necesita para traducir un
lenguaje de alto nivel a lenguaje de bajo nivel.

• Tiempo de ejecución. Tiempo que tarda en ejecutarse un programa


objeto.
Depuradores
• Herramientas que permiten encontrar y corregir errores de los
programas (suelen ir ligados a los compiladores)

Analizadores de rendimiento
• Herramientas que permiten examinar el comportamiento de los
programas en tiempo de ejecución, permitiendo comprobar qué
zonas de código trabajan eficientemente y cuáles deberían ser
revisadas por su bajo rendimiento.
Optimizadores de código
• Herramientas independientes o están incluidas en los compiladores que
optimizan la velocidad de ejecución, tamaño de código ejecutable,
eliminación de código muerto o no utilizado, funciones no utilizadas, etc.

Compresores
• Herramienta habitual para reducir el tamaño de archivos, (ficheros
ejecutables). WIN ZIP
Preprocesadores
• Caso especial de traductor. Traduce un lenguaje de alto nivel a “otro”,
cuando el primero no puede pasar a lenguaje máquina directamente.
Procesan un texto fuente modificándolo en cierta forma previamente a
la compilación.

Formateadores
• Estable cierto “formato”. De muchos tipos y diferentes fines: formatear
texto, formatear ecuaciones, formatear programas (resaltan la sintaxis
a su estructura para lo cual es necesario conocer la sintaxis del
programa a formatear). Conversores de formato.
Editores
• Los editores de lenguajes de programación con sintaxis resaltada por
medio de colores o tipos de letra permiten llamar la atención del
programador en el momento mismo que está escribiendo el
programa, sin necesidad de compilar, dado que llevan incorporada la
sintaxis del lenguaje.
FASES DE UN COMPILADOR
• Para cada lenguaje de programación se requiere un compilador
separado.
• El compilador traduce todo el programa antes de ejecutarlo.
• Los programas compilados se ejecutan más rápido que los
interpretados, debido a que han sido completamente traducidos a
lenguaje máquina.
• Informa al usuario de la presencia de errores en el programa fuente.
• Poseen un editor integrado con un sistema de coloreado para los
comandos, funciones, variables y demás partes de un programa.
Etapa Inicial Compilación 1/4
Análisis lineal o léxico
• En esta etapa la cadena de caracteres que constituye el programa
fuente se lee de izquierda a derecha (de arriba hacia abajo) y se
agrupa en componentes léxicos que son secuencias de caracteres que
tienen un significado colectivo.

• NOTA: Los espacios en blanco y comentarios se eliminan durante el


análisis léxico.
Etapa Inicial Compilación 2/4
Análisis jerárquico

• En esta etapa los caracteres o componentes léxicos se agrupan


jerárquicamente en colecciones anidadas con un significado colectivo.
La representación gráfica del programa fuente se hace mediante un
árbol de análisis sintáctico (jerarquías).
Etapa Inicial Compilación 3/4
Análisis semántico

• En esta etapa se revisa el programa fuente para tratar de encontrar


errores semánticos y se reúne la información de los tipos para la fase
posterior de generación de código. Utiliza la estructura jerárquica.

• Verificador de tipos.- El compilador verifica si cada operador tiene


operandos permitidos por la especificación del lenguaje fuente.
Etapa Inicial Compilación 4/4
Generación de código intermedio.

• Algunos compiladores generan una representación intermedia


explícita del programa fuente. El código intermedio debe cumplir con
dos propiedades importantes: ser fácil de producir y fácil de traducir
al programa objeto.
Etapa Final Compilación 1/2
Optimización de código

• Trata de mejorar el código intermedio de modo que resulte un código


máquina más fácil de ejecutar.
Etapa Final Compilación 2/2
Generación de código Fase final de un compilador.

• Por lo general, consiste en código máquina o ensamblador. Las


posiciones de memoria se seleccionan para cada una de las variables
usadas por el programa. Después, cada una de las instrucciones
intermedias se traducen a una secuencia de instrucciones de máquina
que ejecutan la misma tarea.
Herramientas de Compilación 1/2
Administrador de la Tabla de Símbolos

• Una función esencial del compilador es registrar los identificadores


utilizados en el programa fuente y reunir la información sobre los
atributos de cada identificador. Información que proporcionan los
atributos: memoria asignada, tipo, ámbito (locales, globales).
Herramientas de Compilación 2/2
Manejador de Errores

• Cada fase del compilador puede encontrar errores. Después de


detectar un error, cada fase debe tratar de alguna forma ese error
para poder continuar la compilación, permitiendo la detección de más
errores en el programa fuente.
GRACIAS
Tomado de:
http://compiladoresasignatura.blogspot.com/2011/05/unidad-i-
conceptos-basicos-de.html

También podría gustarte