Visión de las Fases

Fases de un Traductor

Supóngase que, de entre los tipos de procesadores de lenguaje, se quiere construir un compilador. Es decir, un programa en el que entra un texto en un lenguaje de alto nivel y sale un programa de bajo nivel.

La construcción de un compilador es un proceso complejo en el que hay que tener en cuenta muchos aspectos. Por ello, esta tarea se divide en distintas fases que permiten tratar con los distintas tareas de manera independiente y, por tanto, más sencilla.

En la imagen anterior aparecen las fases fundamentales de un traductor: análisis léxico, sintáctico, semántico y generación de código. En realidad puede haber más fases (generación de código intermedio, optimización, etc.) pero, dado el escaso tiempo de la asignatura, no se tratarán dichas fases.

Lo que se mencionará en este capítulo no es más que un avance de lo que hará cada fase. En posteriores capítulos se verá el detalle de cada una.

Clasificaciones de las Fases

Antes de ver lo que hace cada fase por separado, se mostrará cómo se pueden organizar las fases anteriores. Se pueden agrupar por distintos criterios:

  • Si se clasifican por su función, se dividen en Fases de Análisis y Síntesis.
  • Si se clasifican por su dependencia de la máquina destino, se dividen en Front-end y Back-end

Fases de Análisis y Síntesis

En función de su objetivo, las fases de un traductor se dividen en dos grupos:

  • Las fases de Análisis tienen el objetivo de comprobar la validez de la entrada y, en caso positivo, identificar su estructura.
  • Las fases de Síntesis son las que, dada una entrada válida, realmente se encargan de generar el código de salida.

En función de lo anterior, las tres fases de Análisis son:

  • El Análisis Léxico. Lo mismo que el análisis léxico del idioma español se encarga de comprobar que cada palabra de un texto sea válido (que esté en el diccionario de la RAE), en un traductor el equivalente es comprobar que cada cadena, individualmente, es válida en el lenguaje de programación.
  • El Análisis Sintáctico. La gramática del español comprueba que las frases estén correctamente formadas (por ejemplo, que estén formadas por sujeto, verbo y predicado). En un traductor, el equivalente es comprobar que todas las cadenas validadas por el léxico están además en el orden adecuado.
  • El Análisis Semántico. La semántica indica el significado de una sentencia. En el caso de los traductores, explicado de manera informal, lo que hace el Análisis Semántico es comprobar que toda sentencia se pueda hacer. Por ejemplo, en Java no se puede hacer una asignación a una variable no definida o sumar un string con un array.

Y las fases de Síntesis son:

  • Las fases de generación de código (intermedio y/o final).
  • Las fases de optimización (dependientes e independientes de la plataforma).

Lectura Adicional Recomendada

🔎 La misión de la fase de optimización puede leerse en el apartado 12.9 del cuaderno didáctico Conceptos Básicos de Procesadores de Lenguajes (en formato PDF).

Fases de Front-end y Back-end

Las mismas fases del traductor, se pueden agrupar de otra manera en función de su independencia de la máquina destino.

Estudio Obligatorio

✋ Este contenido se encuentra en el apartado 12.10 del cuaderno didáctico Conceptos Básicos de Procesadores de Lenguajes (en formato PDF).