Es un programa que traduce el código fuente de un programa hecho en lenguaje de alto nivel a un lenguaje de bajo nivel
Proceso de Compilación
Fase Síntesis
Fase Análisis
se divide
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
Analizador Léxico
Analizador Sintáctico
Analizador Semantico
objetivo
realiza
realiza
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.
Espacios en blanco líneas, comentarios y demás
Tokens
Automatas Finitos
llamado
elimina
Metodos
Lexemas
Patrón
se compone
es una descripción de la forma que pueden tomar los lexemas de un token
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.
acepten
Maquina de pila
Expresiones Regulares
son
Determinista
No determinista
Se encarga de revisar que los tokens este ubicados y agrupados de acuerdo a la definición del lenguaje
¿cómo?
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
realiza
El analizador semántico detecta la valides semántica de las sentencias aceptadas por el analizador sintáctico
tareas basicas
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.
objetivo
Después del proceso de análisis se procede a generar grupos de los componentes que conforman el programa, para generar una salida.
se divide
Generación de código intermedio
Optimización de código
Generación de código
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
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
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
Partes del Compilador
Analizador o front-end
Generador o back-end:
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.
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.
Se divide
Fases que dependen del lenguaje fuente
Fases que dependen de la máquina destino
Tipos de compiladores
Compiladores cruzados
Compiladores optimizadores
Compiladores de una sola pasada
Compiladores de varias pasadas
Compiladores JIT (just in time)
se clasifican
realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
Genera un código ejecutable en un ordenador distinto de aquel en que se realiza la compilación.
generan el código máquina a partir de una única lectura del código fuente.
necesitan leer el código fuente varias veces antes de poder producir el código máquina.
forman parte de un intérprete y compilan partes del código según se necesitan.
Etapas de Compilación (Estructura)
Inicio
Preprocesado
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.
Compilación
es
Ensamblado
Enlazado
etapas
En esta etapa se interpretan las directivas al preprocesador.
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
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.
Este ultimo modulo es el que produce como salida el codigo binario enlazado
1
2
3
4
Hecho por Cristian Alonso Castro Martínez Carrera: Ingeniería en Sistemas Computacionales Materia: Lenguajes y Autómatas l