Compiladores: Un Análisis General

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 7,2 KB

1. ¿Qué es un Traductor?

Un traductor es un programa que recibe como entrada código en un lenguaje escrito y produce como salida código en otro lenguaje.

2. Ejemplos de Traductores

Algunos ejemplos de traductores son los ensambladores y los compiladores.

3. ¿Qué es un Ensamblador?

Un ensamblador es un programa que traduce código de un lenguaje ensamblador a lenguaje máquina.

4. Definición de un Lenguaje de Programación

Un lenguaje de programación se define por dos componentes:

  • Sintaxis del lenguaje
  • Semántica del lenguaje

5. Estructura de un Compilador

La estructura de un compilador se compone de las siguientes etapas:

  1. Código fuente
  2. Preprocesador
  3. Compilador
  4. Código en ensamblador
  5. Ensamblador
  6. Código objeto
  7. Ligador
  8. Código ejecutable

6. Etapa de Análisis Léxico

El análisis léxico consiste en leer los caracteres del programa fuente y agruparlos en cadenas que representan los componentes léxicos (tokens).

7. Etapa de Análisis Sintáctico

En el análisis sintáctico, se agrupan los componentes léxicos en frases gramaticales que el compilador utiliza para sintetizar la salida.

8. Etapa de Análisis Semántico

El análisis semántico detecta instrucciones que, aunque tengan una estructura sintáctica correcta, carecen de significado para la operación implicada.

9. Etapa de Código Intermedio

La etapa de código intermedio genera una representación intermedia explícita del programa fuente una vez realizadas las fases de análisis.

10. Etapa de Generación de Código

La generación de código produce el código objeto, que generalmente consiste en código en lenguaje máquina o en lenguaje ensamblador.

11. Tabla de Símbolos

La tabla de símbolos es una estructura de datos que contiene un registro por cada identificador. Cada registro incluye los campos para los atributos del identificador.

12. Manejador de Errores

El manejador de errores gestiona de forma centralizada los errores de cada fase del proceso de compilación.

13. Analizador Léxico (Analizador Lineal)

El analizador léxico, también conocido como analizador lineal, crea tokens de una secuencia de caracteres de entrada y los transforma en una secuencia de componentes.

14. Tipos de Tokens

Los tokens se dividen en:

  • Tiras específicas: Solo tienen tipo.
  • Tiras no específicas: Tienen tipo y valor.

15. Función del Analizador Léxico

El analizador léxico crea tokens de una secuencia de caracteres de entrada.

16. Transformaciones del Analizador Lineal

El analizador lineal transforma la secuencia de símbolos de entrada en una secuencia de componentes.

17. Construcción de un Analizador Lineal

Las fases para la construcción de un analizador lineal son:

  1. Definición de todas las palabras reservadas del lenguaje.
  2. Construcción del autómata en base a las palabras reservadas.
  3. Construcción de la tabla de transiciones.

18. Proceso de Análisis Léxico

El proceso de análisis léxico se refiere al trabajo que realiza el escáner con relación al procesador de compilación.

19. Objetivo del Parser

El objetivo del parser es generar un árbol de sintaxis del programa fuente, tal como ha sido definido por una gramática.

20. ¿Qué es un Patrón?

Un patrón representa la regla para que una secuencia de caracteres sea considerada una unidad léxica.

21. ¿Qué es un Lexema?

Un lexema es el valor actual de un conjunto de caracteres que satisfacen un patrón.

22. ¿Qué es un Token o Ficha?

Un token o ficha es un grupo de caracteres con alguna relación entre sí, compuesto por el tipo de token y su valor.

23. ¿Qué son las Unidades Léxicas?

Las unidades léxicas son las categorías en que se clasifican las cadenas de caracteres válidas en un lenguaje.

24. Rol del Analizador Léxico

El analizador léxico realiza su procesamiento y envía los resultados al analizador gramatical.

25. Descripción de un Patrón

Un patrón representa la regla para que una secuencia de caracteres sea considerada una unidad léxica.

26. Aceptador de Estado Finito (Autómata Finito)

Un aceptador de estado finito o autómata finito es un modelo matemático que describe cómo se reconocen (o aceptan) los tokens.

27. Diagrama de Estado Finito (Diagrama de Transición)

Un diagrama de estado finito o diagrama de transición representa el aceptor para un número con al menos un dígito después del punto decimal. Tiene estructuras iniciales, finales e intermedias.

28. Nodos

Los nodos representan los estados del aceptor de estado finito.

29. Arcos

Los arcos indican las transiciones de estado.

30. Estado de Aceptación

Los estados finales son los estados de aceptación.

31. Construcción de un Diagrama de Transición

Para construir un diagrama de transición, se debe asegurar que a cada estado se llegue con el mismo conjunto de caracteres en todas las ocasiones en que haya una transición.

32. Descripciones Informales de Unidades Léxicas

Las descripciones informales de unidades léxicas incluyen: identificador, comentario, EOF (fin de archivo) y error.

33. Caracteres Selectores para cada Patrón

Los caracteres selectores para cada patrón (identificador, comentario, EOF y error) son los mismos que los mencionados anteriormente.

34. Representación de Información en un Diagrama de Transición

La información en un diagrama de transición se representa mediante: buffer = primer bloque, buffer + n/2 = segundo bloque, buffer + n = tercer bloque.

35. Tabla del Analizador Léxico

En la tabla del analizador léxico, los estados finales o de aceptación de las unidades léxicas quedan sin información en las columnas, ya que no existe una transición al reconocer o aceptar un patrón.

36. Funciones del Analizador Léxico

El analizador léxico utiliza las siguientes funciones:

  • Inspecciona: Regresa un carácter aceptado por ap pero no lo incrementa.
  • Avanza: No regresa nada, pero incrementa el valor de ap para estar en el siguiente símbolo a leer.

37. Memoria en el Analizador Léxico

La memoria en el analizador léxico permite depositar imágenes del contenido del archivo del programa fuente. Las funciones inspecciona y avanza se realizan directamente en la RAM.

Entradas relacionadas: