Un compilador es una herramienta esencial en la programación que convierte el código fuente escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel, más cercano al lenguaje de máquina que entiende el procesador.
Hecho por Cristian Alonso Castro Martínez Carrera: Ingeniería en Sistemas Computacionales Materia: Lenguajes y Autómatas l
4
3
2
1
Este ultimo modulo es el que produce como salida el codigo binario enlazado
El ensamblado transforma el programa escrito en lenguaje ensamblador a código objeto, un
archivo binario en lenguaje de máquina ejecutable por el procesador.
En esta etapa se somete el código fuente puro de entrada a un análisis léxico grafico, a un análisis sintáctico, a un análisis semántico, que construyen la tabla de símbolos, se genera un código intermedio al cual se optimiza para así poder producir un código de salida generalmente en algun lenguaje ensamblador
En esta etapa se interpretan las directivas al preprocesador.
etapas
Enlazado
Ensamblado
es
Compilación
El proceso de compilación involucra cuatro etapas sucesivas: preprocesamiento, compilación,
ensamblado y enlazado. Para pasar de un programa fuente escrito por un humano a un archivo
ejecutable es necesario realizar estas cuatro etapas en forma sucesiva.
Preprocesado
Inicio
Etapas de Compilación (Estructura)
forman parte de un intérprete y compilan partes del código según se necesitan.
necesitan leer el código fuente varias veces antes de poder producir el código máquina.
generan el código máquina a partir de una única lectura del código fuente.
Genera un código ejecutable en un ordenador distinto de aquel en que se realiza la compilación.
realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
se clasifican
Compiladores JIT (just in time)
Compiladores de varias pasadas
Compiladores de una sola pasada
Compiladores optimizadores
Compiladores cruzados
Tipos de compiladores
Fases que dependen de la máquina destino
Fases que dependen del lenguaje fuente
Se divide
es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por este generador.
es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos.
Generador o back-end:
Analizador o front-end
Partes del Compilador
Esta constituye la fase final de un compilador. En ella se genera el código objeto que por lo general consiste en código en lenguaje maquina (código relocalizable) o código en lenguaje ensamblador
En esta fase se trata de mejorar el código intermedio de medo que resulte un código de maquina mas rápido de ejecutar
En esta etapa se lleva el código del programa fuente a un código interno para para poder trabajar más fácilmente sobre el
Generación de código
Optimización de código
Generación de código intermedio
Después del proceso de análisis se procede a generar grupos de los componentes que conforman el programa, para generar una salida.
La verificación e inferencia de tipos en asignaciones y expresiones, la declaración del tipo de variables y funciones antes de su uso, el correcto uso de operadores, el ámbito de las variables y la correcta llamada a funciones.
tareas basicas
El analizador semántico detecta la valides semántica de las sentencias aceptadas por el analizador sintáctico
Se determinan las relaciones estructurales entre los componentes léxicos, esto es semejante a realizar el análisis gramatical sobre una frase en lenguaje natural
¿cómo?
Se encarga de revisar que los tokens este ubicados y agrupados de acuerdo a la definición del lenguaje
No determinista
Determinista
son
Expresiones Regulares
Maquina de pila
acepten
es una secuencia de caracteres en el programa fuente, que coinciden con el patrón para un token y que el analizador léxico identifica como una instancia de ese token.
es una descripción de la forma que pueden tomar los lexemas de un token
se compone
Patrón
Lexemas
Metodos
elimina
llamado
Automatas Finitos
Tokens
Espacios en blanco líneas, comentarios y demás
En esta fase se analiza la entrada carácter a carácter y se divide en una serie de unidades elementales: los componentes léxicos.
realiza
objetivo
Analizador Semantico
Analizador Sintáctico
Analizador Léxico
El objetivo de esta etapa es obtener una representación de la entrada que nos permita realizar la síntesis o la interpretación con comodidad.
se divide
Fase Análisis
Fase Síntesis
Proceso de Compilación
Compiladores
Es un programa que traduce el código fuente de un programa hecho en lenguaje de alto nivel a un lenguaje de bajo nivel