Principales aportes de la carrera de William Edwards Deming
Practica análisis léxico y semántico(compiladores)
1. Nombre: Alex Jhonatan Toapanta Molina
Materia: Compiladores
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.
a) Mediante un organizador gráfico defina las fases de la compilación.
FASES DE COMPILACION
b) Qué operación realiza el análisis sintáctico.
Se encarga de chequear el texto 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.
En la práctica, el analizador sintáctico también hace:
• Acceder a la tabla de símbolos (para hacer parte del trabajo del analizador
semántico).
• Chequeo de tipos (del analizador semántico).
• Generar código intermedio.
• Generar errores cuando se producen.
c) A qué se refiere la gramática, la regla de producciones, símbolos terminales y no
terminales.
La gramática.- es una forma de compacta de representar un lenguaje y se deber
tener siempre en cuenta que una gramática genera un único lenguaje, pero un
mismo lenguaje puede ser generado por varias gramáticas.
2. Regla de producciones.- una producción o regla de una gramática 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. También se debe tener en
cuenta que el lenguaje generado por una gramática es el conjunto de cadenas de
terminales obtenidas a partir de derivaciones válidas usando las reglas de la
gramática
Símbolos Terminales y no terminales.-símbolos terminales se dice al conjunto
definido en T ⊆ Σ y para Σ − T se le llama el conjunto de símbolos no terminales.
d) Defina un ejemplo de gramática.
e) Qué es un árbol de pearsing y coloque un ejemplo.
Un árbol de pearsing es una estructura sintáctica jerárquica donde los nodos
internos denotan no terminales y Las hojas (nodos externos) denotan terminales.
3. f) 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.
g) Qué es un árbol sintáctico.
En ciencias de la computación, un árbol de sintaxis abstracta (AST), o
simplemente un árbol de sintaxis, es una representación de árbol de la
estructura sintáctica abstracta (simplificada) del código fuente escrito en cierto
lenguaje de programación.
h) En qué consiste el análisis semántico.
Analiza los aspectos del significado o la interpretación del significado de un
determinado símbolo, palabra, lenguaje o representación formal. Parte de la
premisa que cualquier medio de expresión admite una correspondencia entre las
expresiones de símbolos o palabras, y las situaciones o conjuntos de cosas que se
encuentran en el mundo físico o abstracto.
i) Cómo se obtiene el código intermedio.
Después del análisis sintáctico y semántico, muchos compiladores generan un
representación explicita intermedia del código fuente. Dicha representación puede
verse como la representación de un programa para una maquina abstracta.
El código intermedio debe tener dos características muy importantes: debe ser
fácil de producir y fácil de traducir al programa objeto.
j) Dentro de la compilación a que se refiere la optimización
La optimización se refiere a que se debe de tratar de minimizar ciertos atributos
de un programa informático con el fin de aumentar la eficiencia y el rendimiento.
Se aplican generalmente mediante una secuencia de transformaciones de
optimización, algoritmos que transforman un programa para producir otro con
una salida semánticamente equivalente pero optimizada.
4. k) Presente un ejemplo de optimización de código.
l) Dentro del proceso de la compilación, qué es, para qué, y cómo se utiliza una 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.
Se utiliza para clasificar y tener mucha más eficiencia frente a otros tipos de
clasificaciones o comparaciones.