Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CLASIFICACION GENERAL
A futuro:
ENSAMBLADOR
COMPILADOR
Traducen programas escritos en lenguaje de alto nivel a código intermedio o a código máquina.
INTERPRETE
No genera código objeto, analiza y ejecuta directamente cada proposición del Programa Fuente
(PF).
PREPROCESADOR
PARTES DE LA COMPILACIÓN
Los componentes léxicos se agrupan en colecciones anidadas con un significado colectivo ( frases
gramaticales que por lo general se representan mediante árboles sintácticos).
ANALISIS SEMANTICO
Se realizan revisiones para asegurar que los componentes de un programa se ajustan de un modo
significativo.
Intérprete
Un intérprete es uno de esos conceptos de computación que hemos escuchado alguna vez. Si eres
programador, de seguro sabes lo que son y lo haz utilizado en más de una ocasión. En el siguiente
artículo, veremos de forma sencilla el concepto de intérprete, así como las ventajas de emplearlos
en el desarrollo de software.
Estructura de un intérprete
A la hora de construir un intérprete es conveniente utilizar una Representación Interna (RI) del
lenguaje fuente a analizar. De esta forma, la organización interna de la mayoría de los intérpretes
se descompone en los módulos:
Traductor a Representación Interna: Toma como entrada el código del programa P en Lenguaje
Fuente, lo analiza y lo transforma a la representación interna correspondiente a dicho programa P.
Representación Interna (P/RI): La representación interna debe ser 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: Durante el proceso de traducción, es conveniente ir creando una tabla con
informació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.
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 de
sentencias simples. La interpretación consiste en un ciclo básico de búsqueda, análisis y ejecución
de instrucciones.
El esquema sería:
Inicializar
REPETIR
SI encontrada ENTONCES
Analizar i
Ejecutar i
Interpretación Recursiva
prototipo que actúa como una especificación ejecutable y una segunda fase de implementación
del compilador de dicho lenguaje.
Tipos de intérpretes
Intérpretes puros
Los intérpretes puros son los que analizan y ejecutan sentencia a sentencia todo el programa
fuente. Siguen el modelo de interpretación iterativa y, por tanto, se utilizan principalmente para
lenguajes sencillos.
Intérpretes avanzados
Los intérpretes avanzados o normales incorporan un paso previo de análisis de todo el programa
fuente. Generando posteriormente un lenguaje intermedio que es ejecutado por ellos mismos. De
esta forma en caso de errores sintácticos no pasan de la fase de análisis. Se utilizan para lenguajes
más avanzados que los intérpretes puros, ya que permiten realizar un análisis más detallado del
programa fuente (comprobación de tipos, optimización de instrucciones, etc.)
Intérpretes incrementales
Existen ciertos lenguajes que, por sus características, no se pueden compilar directamente. La
razón es que pueden manejar objetos o funciones que no son conocidos en tiempo de
compilación, ya que se crean dinámicamente en tiempo en ejecución. Entre estos lenguajes,
pueden considerarse Smalltalk, Lisp o Prolog. Con el propósito de obtener una mayor eficiencia
que en la interpretación simple, se diseñan compiladores incrementales.