INTRODUCCIÓN A INTÉRPRETES Flashcards
¿Qué es un intérprete?
Un programa que analiza y ejecuta, simultáneamente, un programa escrito en un lenguaje fuente.
¿Cuáles son las dos entradas de cualquier intérprete?
Un programa P, escrito en un lenguaje fuente LF, junto a los datos de entrada.
Diferencia entre intérprete y compilador
Los compiladores transforman el programa a otro equivalente en un código objeto (fase de compilación), y luego generan los resultados a partir de los datos de entrada (fase de ejecución)
El intérprete analiza y ejecuta al mismo tiempo.
La mayoría de los intérpretes se descomponen en 5 módulos principales
- Traductor a Representación Interna
- Representación Interna (P/RI)
- Tabla de Símbolos
- Evaluador de Representación Interna
- Tratamiento de Errores
La RI –> tokenización y parsing, para generar el árbol, por ejemplo.
Describe el Traductor a Representación Interna
Su entrada es el programa P en lenguaje fuente (LF), lo analiza y lo transforma a la representación interna (RI) correspondiente a dicho programa P.
Representación Interna (P/RI)
Debe ser consistente con el programa original. Hay dos tipos:
* Árboles Sintácticos
* Estructuras de Pila
El tipo a implementar depende de las características del lenguaje
Para la RI, las Estructuras de Pila son más eficientes
Verdadero o Falso
Verdadero
Pero depende por completo de la complejidad del lenguaje
Tabla de Símbolos
Descripción
Durante la traducción, conviene crear una tabla con la información relativa a los símbolos que aparecen.
La tabla de símbolos depende de la complejidad del lenguaje fuente
Verdadero o Falso
Verdadero
¿Qué se puede almacenar en la tabla de símbolos?
- Etiquetas para instrucciones de salto
- Información sobre Identificadores
- Información requerida para la evaluación
Evaluador de Representación Interna
A partir de la RI y los datos de entrada, se ejecutan las acciones indicadas para obtener los resultados. Es aquí donde se contempla la aparición de errores.
Tratamiento de Errores
Se deben contemplar los errores posibles, como desbordamiento de pila, división por cero, etc.
Un intérprete puede tener módulos similares a los de un compilador.
Verdadero o Falso
Verdadero
Puede estar compuesto por Análisis Léxico, Sintáctico y Semántico.
Muchos sistemas interpretados usan este recurso para manejar el uso de memoria
Recolección de Basura
Métodos para evaluar la representación interna
Son dos
- Interpretación Iterativa
- Interpretación Recursiva
Interpretación Iterativa resulta útil para Lenguajes Complejos
Verdadero o Falso
Falso
Lenguajes sencillos pq analiza y ejecuta cada expresión de forma directa
¿Cómo funciona la Interpretación Iterativa?
Consiste en un ciclo básico de búsqueda, análisis y ejecución de instrucciones.
* Cada instrucción se busca en el almacenamiento
* La instrucción es analizada y ejecutada
¿Cuáles son las dos fases para el diseño de nuevos lenguajes de programación?
- Construcción de un Intérprete de Prototipo
- Implementación del Compilador del lenguaje
¿Qué modelo de interpretación suele usarse para la construcción de prototipos?
¿Iterativa o Recursiva?
Interpretación Recursiva
Son ineficientes para aplicaciones prácticas
¿Cómo debe ser un lenguaje para un prototipo?
Suficientemente expresivo y no ambiguo para definir claramente cómo funcionan las diferentes construcciones
¿Cuál es la tendencia actual en cuanto al desarrollo de intérpretes recursivos?
Investigar técnicas de especificación semántica formal que permitan generar automáticamente este tipo de intérpretes
¿Qué ventajas tienen los compiladores sobre los intérpretes?
- Permiten construir Programas más Eficientes
- Capaces de detectar errores
- Capaces de optimizar el código generado
Los intérpretes realizan análisis y ejecución a la vez, poco óptimo
¿Por qué la eficiencia es un problema menos grave en la actualidad?
Los avances informáticos aumentan la** velocidad de procesamiento** y capacidad de memoria de los ordenadores
Ventajas de los Sistemas Interpretados
- Son más sencillos de Implementar
- Mayor flexibilidad
- No es necesario todo el código -nota-
- Facilitan la meta-programación
- Aumentan la portabilidad
para uso en sistemas con poca memoria o entorno de red