Definicion de Fases de un compilador

Description

Definición de fases de un compilador
Ronaldo Gomez
Note by Ronaldo Gomez, updated more than 1 year ago
Ronaldo Gomez
Created by Ronaldo Gomez over 4 years ago
46
1

Resource summary

Page 1

Análisis Léxico: A la primera fase de un compilador se le llama análisis léxico o escaneo. La cadena de entrada se recibe como una sucesión de caracteres. El análisis léxico agrupa los  caracteres en secuencias con significado colectivo y mínimo en el lenguaje, llamadas componentes léxicos (palabras o “token”), con ciertos atributos léxicos.

Análisis sintáctico: Los componentes léxicos se agrupan para formar frases. El valor léxico de los componentes es en este momento irrelevante. Normalmente las frases se representan mediante una estructura de árbol sintáctico, siguiendo reglas que describen el lenguaje.

Análisis semántico: En esta etapa se revisa el resultado del análisis sintáctico, recopilando por ejemplo información de tipos y construyendo una representación aún más abstracta. En el ejemplo que estamos considerando, en esta fase se anotará el tipo de los identificadores cuando se revise la declaración de variables (var inicial, posicion, velocidad: real), de forma que la tabla de símbolos ahora contendrá más información.

Generación de código intermedio: Se genera en esta fase un código intermedio para una máquina abstracta, y es posible que explícitamente . Esta representación debe ser fácil de producir y fácil de traducir al programa objeto. Puede tener diversas formas. Una posible es la llamada código de tres direcciones, que consiste en una secuencia de instrucciones, cada una de las cuales involucra:  a lo sumo un operador (unario o binario), además de la asignación , tres direcciones a lo sumo (las de los operandos y la del resultado)

Optimización de código: Se trata en esta fase de mejorar el código, en el sentido de reducir la cantidad de recursos (tiempo y memoria) necesarios. Algunas optimizaciones son triviales, como por ejemplo hacer algunas transformaciones directamente en la compilación, en lugar de dejarlo para la ejecución (sustituir InToReal(60) por 60.0). Otras pueden requerir un trabajo mucho mayor, pero mejorar significativamente la eficiencia, normalmente a costa de alejarse bastante del código original, como eliminar código inactivo (inaccesible), eliminar variables intermedias o reutilizar sentencias independientes de un bucle fuera de éste. Muchos compiladores permiten elegir la cantidad de optimización a realizar o no hacerla.

Generación de código: En esta fase final se genera por fin el código objeto, normalmente código máquina re-localizable o ensamblador. Se seleccionan entonces posiciones de memoria relativas o registros para las variables y cada sentencia del código intermedio se traduce a una secuencia de instrucciones que ejecutan la tarea.

Show full summary Hide full summary

Similar

FUNDAMENTOS DE REDES DE COMPUTADORAS
anhita
Test: "La computadora y sus partes"
Dayana Quiros R
Abreviaciones comunes en programación web
Diego Santos
Seguridad en la red
Diego Santos
Excel Básico-Intermedio
Diego Santos
Evolución de la Informática
Diego Santos
Introducción a la Ingeniería de Software
David Pacheco Ji
Conceptos básicos de redes
ARISAI DARIO BARRAGAN LOPEZ
La ingenieria de requerimientos
Sergio Abdiel He
TECNOLOGÍA TAREA
Denisse Alcalá P
Navegadores de Internet
M Siller