Fases de un Compilador

Compilador: Es un traductor que convierte un texto escrito en un lenguaje fuente de alto nivel en un programa objeto en código máquina.

Fases de un Compilador

Cada fase lleva a cabo una tarea sobre el programa fuente. Las primeras tres fases suelen agruparse en una sola fase llamada fase de análisis y las últimas tres en una llamada fase de síntesis.

Las fases de un compilador son:

La etapa de análisis (front end o etapa inicial) agrupa aquellas fases que dependen principalmente del lenguaje fuente, y comprende:

Análisis Léxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símbolo indicando el token por cada uno de los elementos reconocidos o el error en caso de no reconocer. Este análisis no logra detectar muchos errores por su característica. Esto comprende expresiones regulares y AFN, diseño de un generador de analizadores léxicos, autómatas finitos determinísticos, autómatas finitos no determinísticos.

Ejemplo:

total=valor*5

Luego del análisis léxico:

id = id * num

Análisis Sintáctico: En esta fase se analiza la estructura de las expresiones en base a gramáticas. Aquí ya se puede determinar si una estructura por ejemplo una expresión matemática mal formada. El análisis que se realiza es jerárquico es decir en base a árboles de derivación que se obtienen de las mismas gramáticas. Ejemplo: position:=initial + rate*60

Análisis Semántico: Este análisis es más dificil de formalizar, determina el tipo de los resultados intermedios, comprobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible, y si son compatibles entre sì.

La etapa de síntesis (back end o etapa final) agrupa aquellas fases que dependen principalmente de la máquina objetivo, y comprende:

Generación de Código Intermedio: El código intermedio es una representación en base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimizaciòn de código.

a=b+c

1: + b c T1

2: = a  T1

Optimización de Código: Consiste en realizar una mejora en el código intermedio, para reducir el número de líneas y hacer que la ejecución sea más rápida

a=b+c

1: + b c a

Generación de Código: Llegamos a la generación de código ensamblador o código máquina del procesador que nos interese por ejemplo:

a:=b+c

LOAD B

ADD C

STORE A

Fuente   Enlace 1

Enlace 2

Enlace 3

Enlace 4

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: