El documento presenta preguntas sobre conceptos clave relacionados con la compilación, incluyendo las fases de la compilación, el análisis sintáctico, las gramáticas, los árboles sintácticos y de parsing, el análisis semántico, la generación de código intermedio, la optimización y el uso de tablas de símbolos. Se proveen definiciones detalladas de estos conceptos junto con ejemplos ilustrativos.
2. Resuelva cada una de las interrogantes planteadas y subir el enlace al espacio virtual con la
publicación del enlace de la dirección de su blog.
✓ Mediante un organizador gráfico defina las fases de la compilación
✓ Qué operación realiza el análisis sintáctico.
El análisis sintáctico se encarga de revisar el código de entrada en base a una gramática dada. Y en
caso de que el programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce.
Prácticamente, aquí se agrupan los tokens del código fuente para que el compilador use partes de
este en etapas futuras.
✓ A qué se refiere la gramática, la regla de producciones, símbolos terminales y no terminales.
La gramática comprende un conjunto finito de reglas que describen toda la secuencia de símbolos
pertenecientes a un lenguaje específico. Es el punto de partida de varias codificaciones y lenguajes
de programación. La regla de producciones tiene una parte izquierda y una parte derecha. Tanto la
parte izquierda como la parte derecha son una cadena de símbolos terminales y no terminales. Los
símbolos terminales son los nodos hoja comprendidos en el árbol sintáctico y los no terminales son
los nodos intermedios, ambos forman parte de un lenguaje.
3. ✓ Defina un ejemplo de gramática
Una gramática es una cuádrupla G = (VN , VT , S, P), donde VN es el conjunto de símbolos variables
o no terminales, VT es el conjunto de símbolos terminales (todos los terminales deben pertenecer
al alfabeto), S es el símbolos inicial de la gramática (S siempre es un no terminal), y P es el conjunto
de producciones o reglas de la gramática. La gramática es de importante estudio en teoría de
autómatas.
4. ✓ Qué es un árbol de parsing y coloque un ejemplo
Los arboles de parseo son una representación alternativa de las derivaciones e inferencias
recursivas. Los árboles de parseo se construyen mediante un punto de partida el cual es una
gramática.
✓ A qué se entiende por generación de código
La generación de código es una de las fases mediante el cual un compilador convierte un programa
sintácticamente correcto en una serie de instrucciones a ser interpretadas por una máquina.
5. ✓ Qué es un árbol sintáctico.
Es una representación de árbol de la estructura sintáctica abstracta (simplificada) del código
fuente escrito en cierto lenguaje de programación.
Árbol de sintaxis abstracta para el siguiente código del algoritmo de Euclides:
while b ≠ 0
if a > b
a := a − b
else
b := b − a
return a
Ejemplo extraído de: https://es.wikipedia.org/wiki/Árbol_de_sintaxis_abstracta
6. ✓ En qué consiste el análisis semántico.
El análisis semántico analiza el significado del código fuente o programa para verificar las reglas
que no han sido capturadas por la gramática, pero que pueden verificarse durante el tiempo de
compilación.
✓ Cómo se obtiene el código intermedio.
El código intermedio se puede obtener mediante la localización de espacio de memoria (en tiempo
de compilación), este elimina la necesidad de un nuevo compilador completo para cada máquina de
la sección de análisis mismo de todos los compiladores. El código intermedio tiende a ser código
independiente de la máquina. Por lo tanto, el generador de código supone que tiene número
ilimitado de almacenamiento en memoria (registro) para generar el código.
✓ Dentro de la compilación a que se refiere la optimización.
La optimización se refiere a una mejora mucho más avanzada del código que ya se tiene, es decir
transforma un código base en otro mucho mas eficiente, reduciendo uso de recursos y espacio en
memoria, aunque también se debe considerar que este viene a ser una nueva versión
✓ Presente un ejemplo de optimización de código.
7. ✓ Dentro del proceso de la compilación, qué es, para qué, y cómo se utiliza una tabla de símbolos.
La tabla de símbolos es un almacén donde se encuentran guardados varios caracteres sean estos
especiales o no, como por ejemplo “. , - _ * ¿ !”, la tabla de símbolos sirve para verificar en tiempo
de compilación algunas secciones de código para registrarlos como separadores, operadores o
símbolos especiales. La tabla de símbolos es una importante estructura de datos creada y mantenida
por los compiladores con el fin de almacenar información acerca de la ocurrencia de diversas
entidades, tales como nombres de variables, nombres de funciones, objetos, clases, interfaces, etc.
esta se utiliza en el análisis y la síntesis de un compilador.