Diferencia entre revisiones de «Compilador»

Contenido eliminado Contenido añadido
Sin resumen de edición
SeroBOT (discusión · contribs.)
m Revertidos los cambios de 181.113.115.170 (disc.) a la última edición de SeroBOT
Etiqueta: Reversión
Línea 6:
La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.
 
* [[Análisis de algoritmos|Análisis]]: se trata de la comprobación de la corrección del programa fuente, según la definición del lenguaje en términos de [[Lenguaje desformalformal|teoría de lenguajes formales]]. Incluye las fases correspondientes al [[Analizador léxico|análisis léxico]] (que consiste en la descomposición del programa fuente en componentes léxicos), [[Analizador sintáctico|análisis sintáctico]] (agrupación de los componentes léxicos en frases gramaticales ) y análisis semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de análisis sintáctico).
* [[Síntesis]]: su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de generación de código (normalmente se trata de [[Compilador#Código intermedio|código intermedio]] o de [[Código objeto|código objeto]]) y de [[Compilador optimizador|optimización de código]] (en las que se busca obtener un programa objetivo lo más eficiente posible, según su [[Teoría de la complejidad computacional|complejidad computacional]] o [[Complejidad de Kolmogórov|complejidad de putonKolmogórov]]: tiempo de ejecución, espacio durante ejecución, espacio para ser almacenado fuera de ejecución, etc).
 
Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en: