Preguntas de Gramática Libre de Contexto PDF
Document Details
Uploaded by Deleted User
Tags
Summary
Este documento contiene preguntas sobre gramáticas libres de contexto y sus conceptos relacionados, como análisis sintáctico. Las preguntas cubren diferentes aspectos de la teoría y la práctica de análisis sintáctico, incluyendo diagramas de sintaxis, árboles de derivación, manejo de errores, y más.
Full Transcript
## 6.1 Diagrama de Sintaxis **Puntos: 38%** 1. ¿Qué son los diagramas de sintaxis? - Son herramientas que permiten visualizar los elementos constitutivos de una instrucción. 2. ¿Para qué son útil los diagramas de sintaxis? - Para explicar la sintaxis de una instrucción en el manual de u...
## 6.1 Diagrama de Sintaxis **Puntos: 38%** 1. ¿Qué son los diagramas de sintaxis? - Son herramientas que permiten visualizar los elementos constitutivos de una instrucción. 2. ¿Para qué son útil los diagramas de sintaxis? - Para explicar la sintaxis de una instrucción en el manual de usuario de un lenguaje de programación. 3. ¿Qué se debe incluir en las instrucciones que no tienen parámetros? - Solamente se incluye, en el orden indicado, el número asignado, una flecha gruesa, la palabra reservada y el delimitador con flecha sencilla intermedia. 4. ¿Cuándo se indica que el contenido es opcional? - Cuando el argumento puede omitirse pero se debe especificar siempre con un valor. 5. ¿Que puede ser el argumento ARG? - Puede ser un identificador, una constante numérica, una cadena o una operación aritmética. 6. ¿Cómo se define CONDIC? - Se define como una operación lógica o una operación relacional, con todo lo que eso conlleva. 7. ¿Cuál es el propósito de los párametros o argumentos en un diagrama de sintaxis? - Definir el flujo del análisis de la cadena. 8. ¿Qué sucede después de evaluar una condición en el diagrama de sintaxis? - Se ejecuta un bloque "entonces" o "sino". ## 6.2 Arboles de Derivación **Puntos: 83%** 1. ¿Qué permiten los arboles de derivación? - Permiten visualizar gráficamente el flujo de la información ya establecida en los diagramas de sintaxis. 2. ¿Qué facilitan los arboles de derivación? - Facilitan la comprensión del funcionamiento o flujo de la información en una instrucción. 3. ¿Haciendo una analogía, que sería el árbol de derivación? - Sería como el diagrama de flujo de un programa. 4. ¿Qué demanda la construcción de árboles de derivación? - La utilización de diagramas de sintaxis. 5. ¿Qué indica la arista (flecha) punteada? - Indica que ese elemento es opcional. 6. ¿Con que indico la ampliación de un elemento para visualizarlo mejor? - Con flechas gruesas (o conectores de derivación). ## 6.3 Gramáticas libres de contexto & 6.4 Eliminación de ambigüedad **Puntos: 80/100** 1. ¿Qué es la gramática libre de contexto? - Es un conjunto de reglas (o producciones) que permiten evaluar de manera sencilla y práctica una cadena de entrada desde el punto de vista sintáctico, así como la totalidad de las instrucciones definidas en el lenguaje de programación. 2. ¿De qué constan las gramáticas libres de contexto? - De un conjunto de símbolos terminales, un conjunto de símbolos no terminales y un conjunto de instrucciones. ## 6.6 Top-Down **Puntos: 100%** 1. ¿Qué es un parser predictivo en análisis Top-Down? - Un tipo de parser que utiliza tablas de predicción para decidir qué producción aplicar en cada paso. 2. ¿Qué tipo de gramáticas se adaptan mejor al análisis Top-Down? - Gramáticas libres de contexto que no tienen recursión a la izquierda y son factorizadas a la izquierda. 3. ¿Qué problema genera la recursión a la izquierda en un análisis Top-Down? - Causa un bucle infinito en el proceso de derivación. 4. ¿Cómo se evita la recursión a la izquierda en una gramática? - Se reescriben las reglas para eliminar las producciones recursivas y convertirlas en iterativas. 5. ¿Qué es un árbol de derivación en el análisis Top-Down? - Es una representación jerárquica que muestra cómo se deriva una cadena a partir del símbolo inicial de la gramática. 6. ¿Qué es el retroceso en el análisis Top-Down? - Es el proceso de regresar y probar diferentes opciones cuando una producción no conduce a un análisis exitoso. ## 6.7 Bottom-Up **Puntos: 100%** 1. ¿Qué es un análisis sintáctico Bottom-Up? - Es un enfoque que construye el árbol de derivación desde las hojas hacia la raíz. 2. ¿Qué es un parser LR en el contexto Bottom-Up? - Es un tipo de parser Bottom-Up que utiliza una tabla para decidir reducciones basándose en la entrada y el estado actual. ## 6.8 Manejo de Errores Sintácticos y su Recuperación **Puntos: 100%** 1. ¿Qué es un error sintáctico en un programa? - Es una violación de las reglas de la gramática del lenguaje de programación. 2. ¿Qué es el método de pánico en la recuperación de errores? - Es un método que omite tokens hasta encontrar un delimitador, como un punto y coma, para continuar el análisis. 3. ¿Qué técnica usa un parser para corregir errores sintácticos automáticamente? - Inserta, elimina o reemplaza tokens según lo permita la gramática. 4. ¿Qué es un punto de sincronización en la recuperación de errores? - Es un token o conjunto de tokens específicos donde el parser reanuda el análisis tras encontrar un error. 5. ¿Qué es el "diagnóstico de errores" en análisis sintáctico? - Es el proceso de identificar y reportar los errores encontrados durante el análisis. 6. ¿Qué impacto tiene la calidad de los mensajes de error en los desarrolladores? - Los mensajes claros y específicos facilitan la corrección rápida de errores, mejorando la productividad del desarrollo. ## 6.9 Autómatas de Pila **Puntos: 100%** 1. ¿Qué clase de lenguajes puede reconocer un autómata de pila? - Lenguajes libres de contexto, que utilizan reglas basadas en estructuras anidadas. 2. ¿Qué elemento distingue a un autómata de pila de un autómata finito? - La pila, que permite almacenar y recuperar información para procesar estructuras anidadas. 3. ¿Qué operaciones básicas realiza la pila en un autómata de pila? - Push (insertar un elemento), pop (extraer el tope) y mantener la pila sin cambios. 4. ¿Qué es una transición en un autómata de pila? - Una regla que especifica cómo cambiar de estado, qué entrada consumir y qué operación realizar en la pila. 5. ¿Qué significa que un autómata de pila sea determinista? - Que para cada combinación de estado, símbolo de entrada y tope de pila, existe como máximo una transición definida. 6. ¿Cómo se determina si un autómata de pila acepta una cadena? - Si al final del procesamiento el autómata termina en un estado de aceptación con la pila vacía o según una condición específica. ## 7. Análisis Semántico y Generación de Código **Puntos: 100%** 1. ¿Qué es la semántica de un lenguaje de programación? - El significado o la interpretación de las instrucciones del lenguaje. 2. ¿Cuál es el propósito del análisis semántico? - Verificar que el programa cumple con las reglas semánticas del lenguaje y que las operaciones son válidas. 3. ¿Qué es un atributo semántico en un árbol de derivación? - Una información adicional asociada a un nodo del árbol, que representa una propiedad o valor. 4. ¿Qué es un error semántico en un programa? - Una violación de las reglas semánticas del lenguaje de programación. ## 8. Compiladores **Puntos: 100%** 1. ¿Cuál es la función de un compilador? - Traduzir un programa escrito en un lenguaje de alto nivel a un lenguaje de más bajo nivel, generalmente lenguaje de máquina. 2. ¿Cuáles son las fases principales de un compilador? - Análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio, optimización de código, generación de código máquina. 3. ¿Cuál es la diferencia entre un compilador e un interpretador? - Un compilador traduce todo el programa a código máquina antes de ejecutarlo, mientras un interpretador analiza y ejecuta las instrucciones una por una. 4. ¿Qué es un código intermedio? - Una representación del programa en un lenguaje abstracto que es más fácil de optimizar y generar código máquina a partir de él. 5. ¿Qué es la optimización de código? - Un proceso de mejora del código para hacer que sea más rápido y eficiente. 6. ¿Qué es un ensamblador? - Un programa que traduce código ensamblador a código máquina. 7. ¿Qué es un enlazador? - Un programa que combina diferentes archivos objeto en un único archivo ejecutable. 8. ¿Qué es un depurador? - Un programa que ayuda a identificar y corregir errores en programas.