Analizador sntactico
* Introducción
* Representación interna
* Tabla símbolos
* Evaluador de representación interna
* Tratamiento de errores
* Interpretación iterativa
* Interpretación recursiva
* Generador de código para compiladores
* Conclusión
* Bibliografía
Introducción
En el siguiente trabajo hablaremos de la estructura de un intérprete.Un intérprete traduce y ejecuta un código fuente a código máquina. La estructura de un intérprete consta de, una representación interna, una tabla de símbolos, evaluador de representación, tratamiento de errores, etc.
Estructura de un intérprete
Representación Interna
Es la representación del programa fuente de forma total o parcial, interna al intérprete. La representación interna debeser consistente con el programa original. Entre los tipos de representación interna, los árboles sintácticos son los más utilizados y, si las características del lenguaje lo permiten, pueden utilizarse estructuras de pila para una mayor eficiencia.
Tabla de símbolos
La función de la tabla de símbolos, es que durante el proceso de traducción, es conveniente ir creando una tabla coninformación relativa a los símbolos que aparecen. La información a almacenar en dicha tabla de símbolos depende de la complejidad del lenguaje fuente. Se pueden almacenar etiquetas para instrucciones de salto, información sobre identificadores (nombre, tipo, línea en la que aparecen, etc.) o cualquier otro tipo de información que se necesite en la etapa de evaluación.
Evaluador de RepresentaciónInterna
A partir de la Representación Interna anterior y de los datos de entrada, se llevan a cabo las acciones indicadas para obtener los resultados. Durante el proceso de evaluación es necesario contemplar la aparición de errores.
Tratamiento de errores
Durante el proceso de evaluación pueden aparecer diversos errores como desbordamiento de la pila, divisiones por cero, etc. que el intérpretedebe contemplar. Dependiendo de la complejidad del código a analizar, el intérprete puede contener módulos similares a los de un compilador tradicional: Análisis léxico, Sintáctico y Semántico. Durante la evaluación, el intérprete interactúa con los recursos del sistema como la memoria, discos, etc. Muchos sistemas interpretados liberan al programador del manejo explícito de memoria mediantetécnicas de recolección de basura. A la hora de evaluar la representación interna, existen dos métodos fundamentales: la interpretación iterativa y la interpretación recursiva.
Interpretación Iterativa
La interpretación iterativa es apropiada para lenguajes sencillos, donde se analiza y ejecuta cada expresión de forma directa, como podrían ser los códigos de máquinas abstractas o lenguajes desentencias simples. La interpretación consiste en un ciclo básico de búsqueda, análisis y ejecución de instrucciones
Cada instrucción se busca en el almacenamiento (memoria o disco) o, en algunos casos, es introducida directamente por el usuario. Luego la instrucción es analizada en sus componentes y ejecutada. Normalmente, el lenguaje fuente contiene varios tipos de instrucciones, de forma que laejecución se descompone en varios casos, uno por cada tipo de instrucción.
Interpretación Recursiva
El diseño de nuevos lenguajes de programación se realiza en dos fases: Una primera fase de especificación semántica mediante la construcción de un intérprete prototipo que actúa como una especificación ejecutable y una segunda fase de implementación del compilador de dicho lenguaje. Para laconstrucción de prototipos suele utilizarse un modelo de interpretación recursiva donde las sentencias pueden estar compuestas de otras sentencias y la ejecución de una sentencia puede lanzar la ejecución de otras sentencias de forma recursiva.
Los intérpretes recursivos no son apropiados para aplicaciones prácticas debido a su ineficiencia y se utilizan únicamente como prototipo ejecutable...
Regístrate para leer el documento completo.