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

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

¿Qué es y como funciona un compilador?

definicion

Generacion de la salida

optimizacion

Manejo de Errores

Operacion sobre la Tabla de simbolos

Analizador Lexico, Sintactico, Semantico

Creacion de la Tabla de Simbolos

Manejo de errores