Anda di halaman 1dari 3

1) Tipos de Interpretes

A continuación se describirán los diferentes métodos de interpretación según la estructura interna


del intérprete. Por lo cual se observara que algunos métodos podrían considerarse híbridos, ya que
mezclan los procesos de compilación e interpretación.

Interpretes 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.
El Principal problema de este tipo de intérpretes es que si a mitad del programa fuente se producen
errores, se debe de volver a comenzar el proceso.

Interpretes Avanzados:
Los interpretes 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 y otros aspectos).

Interpretes Incrementales:
Existen ciertos lenguajes que, por sus características, no se pueden compilar directamente
(Lisp,Prolog,Smaltalk). Para estos lenguajes existen los Interpretes Incrementales.
La idea es que puedan manejar objetos o funciones que no son conocidas en tiempo de compilación,
marcando como dinámicas las que no pueden compilarse. Posteriormente en tiempo de ejecución,
el sistema podrá compilar algunas partes dinámicas o recompilar partes dinámicas que hayan sido
modificadas. Estos sistemas no producen un código objeto independiente si no que acompañan el
sistema que permite compilar módulos en tiempo de ejecución (RUN TIME SYSTEM) el código objeto
generado.

Evaluadores Parciales:
Los Evaluadores Parciales o Especializados son utilizados por programas que contienen dos tipos de
datos de entrada. La Principal ventaja de la evaluación parcial es la eficiencia. Ya que se puede saber
de antemano que un Programa va a ejecutarse muchas veces con un mismo conjunto de datos
Estáticos pero con diferentes datos Dinámicos. Por este motivo los evaluadores parciales deben
realizar un complejo análisis del programa para detectar que el proceso no generar bucles infinitos,
para ello utilizan la técnica (Binding-Time Analylys) que se encarga de detectar que valores son
estáticos, pueden evaluarse y cuáles no.
Una aplicación interesante de la evaluación parcial es la posibilidad de generar compiladores a
partir de intérpretes.

Interpretes/Compiladores “JUST IN TIME”:


Surge la necesidad de distribuir programas de una forma independiente de la maquina permitiendo
su ejecución en una amplia variedad de plataformas.
Para evitar la interpretación, muchos sistemas transforman los códigos de byte en código nativo
siguiendo el modelo “Just in Time”. Donde una unidad de compilación o clase se transmite en el
formato de códigos de bytes. Pero no se realiza la interpretación. En lugar de ello, el código es
compilado a código nativo justo en el momento en que lo necesita el programa que se está
ejecutando.

Compilación Continua:
Surge como intento de mejorar la compilación “Just in Time”. El sistema mezcla el proceso de
compilación a código nativo con el proceso de interpretación. Para conseguirlo, el sistema dispone
de lados módulos: un módulo de interpretación de códigos de bytes y otro módulo de compilación
de códigos de bytes a códigos nativo. La idea consiste en que ambos módulos actúen a la vez, de
forma que el sistema no se detenga a compilar un módulo, sí no que vaya interpelándolo hasta que
el compilador haya generado el código nativo.

2) Herramientas CUP ,JFLEX E IRONY

JFLEX:
Es una herramienta desarrollada por Java que toma como entrada un archivo “entrada” y con este
crea un archivo fuente java Entrada.Lex correspondiente al Analizador Léxico.
JFlex es un generador de Analizadores Léxicos.

JAVA CUP:
Es una analizador sintáctico que construye un parser para gramáticas tipo LALR(1),con código de
producción y asociación de fragmentos de código JAVA. Cuando una producción es reconocida, se
genera un archivo fuente Java, Parser.java que contiene una clase pares.

Estos dos generadores de Analizadores se pueden integrar cada uno de los procesos de dichos meta-
compiladores para que de esta forma se pueda obtener un compilador mucha más completo y
personalizado, esto ahorra de manera abismal la generación de código al momento de programar
un compilador.

IRONY:
Es un Kit de desarrollo para la aplicación de las lenguas en la plataforma Net, el cual utiliza l
gramática destino que codifica en C# y utiliza sobrecarga de operadores para expresar las
construcciones gramaticales. Módulos del escáner y analizador de irony utilizan la gramática
codificada en C# para controlar el proceso de análisis.

IRONY puede llevar el control de todo lo que hallamos generado mediante la gramática esto debido
a que funciona en base a la generación del AST , pero tomando en cuenta que la generación del
árbol implica únicamente la generación, ejecución , la implementación de este árbol debe hacerse
posteriormente por el programador.
Diferencias:

Flex y Cup son generadores de Analizadores (Lexico y Sintactico ) , a diferencia de Irony que no
utiliza ningún escáner o programa de análisis y generación de código a partir de gramáticas
escritos en metalenguaje especializado.

Irony es un analizador que funciona en base a la generación de AST(Abstract Syntax Tree) y Genera
un árbol en el cual guarda todos los datos generados mediante la gramática