Fases del compilador: análisis léxico, sintáctico, semántico y representaciones intermedias

Clasificado en Informática

Escrito el en español con un tamaño de 18,5 KB
Actualizado el

Resumen

Este documento recoge preguntas y respuestas sobre compiladores: su definición, las herramientas que intervienen (scanner, parser, analizador semántico, enlazador) y el proceso de traducción de código fuente a código objeto. Además, enumera las fases de compilación, los tipos de compiladores, las partes front-end y back-end, las representaciones intermedias y la tabla de símbolos. Algunos ejercicios aparecen sin respuesta completa.

Puntos clave

  • La compilación es el proceso que traduce programas escritos en código fuente a código objeto.
  • El scanner (analizador léxico) divide el programa en símbolos y genera la tabla de símbolos.
  • El parser (analizador sintáctico) usa una gramática para recuperar la estructura sintáctica de la oración.
  • Las fases son: análisis léxico, sintáctico, semántico, generación de código intermedio, optimización y generación de código objeto.
  • Los tipos de compiladores son cruzados, optimizadores, de una sola pasada, de varias pasadas y JIT.
  • Las representaciones intermedias posibles son tercetos, cuádruplos (cuartetos) y notación polaca inversa (RPN).

Resumen generado con IA a partir del documento. Ponte a prueba

Preguntas y respuestas sobre compiladores

Definiciones y funciones básicas

Pregunta: ¿Es el proceso por el cual se traducen programas en código fuente a programas en código objeto?

R = compilación

Pregunta: Toma el programa escrito en código fuente y lo divide en símbolos, generando la llamada tabla de símbolos.

R = scanner (analizador léxico)

Pregunta: ¿Es un programa que toma los ficheros de código objeto generados en los primeros pasos del proceso de compilación?

R = enlazador (linker)

Pregunta: ¿Toma la tabla de símbolos y, mediante el uso de una gramática, recupera la estructura sintáctica de la oración?

R = parser (analizador sintáctico)

Pregunta: ¿Chequea el programa fuente para detectar posibles errores semánticos y verifica la compatibilidad de tipos?

R = analizador semántico

Pregunta: ¿Es la representación del código fuente como un programa escrito para ser ejecutado en una máquina abstracta?

R = código intermedio

Pregunta: Asigna una variable al registro.

R =

Pregunta: Identifica ciclo como un rótulo o etiqueta.

R =

Pregunta: Cambia A + 4 * 3 a A + 12.

R =

Pregunta: Encuentra una variable que no ha sido declarada.

R =

Pregunta: Cambia A := A + 12 a suma#12,A.

R =

Pregunta: Crea un árbol de análisis gramatical.

R =

Fases del proceso de compilación

Pregunta: Menciona las fases del proceso de compilación.

R = análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio, optimización, generación de código objeto

Ejercicio: tokens

Pregunta: Encontrar y representar todos los tokens para un programa compuesto de la asignación única:

max := min + 4 * 3;

R =

Tipos de compiladores

Pregunta: Menciona los tipos de compiladores que existen.

R = compiladores cruzados, optimizadores, de una sola pasada, de varias pasadas y JIT (just-in-time)

Partes de un compilador

Pregunta: Menciona y describe las partes de un compilador.

  • Front-end: Es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores en la tabla de símbolos.
  • Back-end: 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 el front-end.

Ejercicio: árbol sintáctico

Pregunta: Realizar el árbol sintáctico de la siguiente expresión.

R =

Representaciones intermedias

Pregunta: Mencione las posibles representaciones intermedias.

R = tercetos, cuádruplos (cuartetos) y notación polaca inversa (RPN)

Tabla de símbolos

Pregunta: ¿Es una estructura de datos que contiene un registro para cada identificador utilizado en el código fuente?

R =

Estructura general del compilador

Pregunta: Dibuje la estructura general de un compilador.

R =

Captura

Preguntas frecuentes

¿Qué es la compilación?

Es el proceso por el cual se traducen programas escritos en código fuente a programas en código objeto.

¿Cuáles son las fases del proceso de compilación?

Las fases son análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio, optimización y generación de código objeto.

¿Qué representaciones intermedias existen en un compilador?

Se mencionan los tercetos, los cuádruplos (cuartetos) y la notación polaca inversa (RPN).

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué proceso traduce programas de código fuente a código objeto?
2. ¿Qué componente divide el programa fuente en símbolos y genera la tabla de símbolos?
3. ¿Qué componente recupera la estructura sintáctica usando una gramática?
4. ¿Cuál de estas es una representación intermedia mencionada en el texto?
5. ¿Qué parte de un compilador genera código máquina específico de una plataforma?
6. ¿Cuál es una fase del proceso de compilación?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.