Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 30

Trabajo de investigación JFlex y Jcup

Nicolás Herrera - 20171020118

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS


FACULTAD DE INGENIERÍA
INGENIERÍA DE SISTEMAS
CIENCIAS DE LA COMPUTACIÓN III

UNIVERSIDAD DISTRITAL
Vianí Cundinamarca, 22 de mayo de 2020
Introducción
El presente es un trabajo investigativo correspondiente a la asignatura de ciencias
de la computación III con el fin de entender, comprender, saber el funcionamiento y
la implementación de dos herramientas fundamentales para construir un
compilador, el cual es la finalidad de este curso, saber y construir un compilador,
conociendo todo lo que este conlleva y aplicándolo, teniendo en cuenta que es parte
fundamental para la programación y que muchas veces se pasa por alto.

Para esta labor, en el transcurso del trabajo se desarrollarán una serie de preguntas
para dar claridad complete sobre estos temas:

Cuestionario:

1- ¿Qué es la herramienta JFlex?


2- ¿Cuáles son sus características?
3- ¿Cómo se integra el JDK con JFlex?
4- ¿Qué es el Jcup?
5- ¿Qué características tiene el Jcup?
6- ¿Cómo se intregra Jcup en Netbeans?
7- ¿Cuál es la utilidad de estas herramientas, con respecto al compilador a
construir?
8- ¿Construir un ejemplo de lo que se puede hacer con JFlex y Jcup?

Solución

1R/=

La herramienta JFlex es un generador de análisis léxico (también conocido como


generador de escáner) para Java, está escrito en Java. Para entenderlo mejor hay
que explicar que es un generador de análisis léxico, un generador de análisis léxico
toma como entrada una especificación con un conjunto de expresiones regulares y
acciones correspondientes. Genera un programa que lee la entrada, hace coincidir
la entrada con las expresiones regulares en el archivo de especificaciones y ejecuta
la acción correspondiente si una expresión regular coincide. Los Lexers (Los lexers
JFlex se basan en autómatas finitos deterministas (DFA). Son rápidos, sin retroceso
costoso.) generalmente son el primer paso inicial en compiladores, que coinciden
con palabras clave, comentarios, operadores, etc., y generan un flujo de token de
entrada para los analizadores. Los Lexers también se pueden usar para muchos
otros fines. JFLex se lanza bajo una licencia permisiva de estilo BSD de código
abierto y está disponible para descargar, lo que indica que no posee costo alguno.
JFlex está diseñado para trabajar junto con el generador de analizador LALR CUP
por Scott Hudson, y la modificación de Java de Berkeley Yacc BYacc / J por Bob
Jamison. También se puede usar junto con otros generadores de analizadores
sintácticos como ANTLR o como una herramienta independiente.

2R/=

La herramienta JFlex posee diversas características como lo son:

- Permitir la integración con CUP (analizador sintáctico).


- Ser independiente de la plataforma debido a que está diseñado para ser
integrado con java.
- Poseer una sintáxis cómoda de manipular y fácil de interpretar.
- Permitir generar analizdores léxicos de una manera ágil y rápida.
- Posee un soporte completo.

3R/=

JFlex admite JDK 1.8 o superior para compilación y JDK 7 y superior para tiempo
de ejecución.

Para la integración el JDK con el JFlex primero se deben consigurar las varibles de
entorno:

- Abrimos cmd
- Ingresamos al directorio donde esté instalado el JDK
- - Ej: c:\ProgramFiles\Java\jdk1.7.0_02\bin>
- Tipeamos el comando
- - set CLASSPATH=c:\ProgramFiles\Java\jdk1.7.0_02\bin>;%CLASSPATH%
- set CLASSPATH=c:\ProgramFiles\Java\jdk1.7.0_02\bin>;%PATH%

Se descargará el archivo Main.java y para su integración con netbeans es necesario


moverlo al directorio de instalación del JDK.

4R/=

CUP significa construcción de analizadores útiles y es un generador de analizador


LALR para Java. Fue desarrollado por C. Scott Ananian , Frank Flannery, Dan
Wang, Andrew W. Appel y Michael Petter . Implementa la generación de analizador
LALR (1) estándar . Como autor del analizador, usted especifica los símbolos de su
gramática ( terminal T1,T2; non terminal N1, N2;), así como las producciones ( LHS
:== RHS1 | RHS2 ;). Si proporciona a cada alternativa de producción un código de
acción ( {: RESULT = myfunction(); :}), el analizador llamará a este código de acción
después de realizar una reducción con la producción en particular. Puede usar estas
devoluciones de llamada para ensamblar un AST (Árbol de sintaxis abstracta) o
para fines arbitrarios. Cup es un generador de analizadores sintácticos LALR en
Java el cual recibe de entrada un archivo con la estructura de la gramática y su
salida es un parser escrito en Java listo para usarse.

Además de esto, es muy importante mencionar que JFlex se adapta y trabaja


particularmente bien con CUP.

5R/=

El generador de analizador Jcup posee diversas características como lo son:

- Motor de análisis LALR (1) con precedencia de símbolos.


- Error de recuperación.
- Requisitos previos de finalización de sintaxis.
- Una licencia abierta.
- Ingeniería de gramática a través de Eclipse Plugin.
- Código de acción manual.
- Salida XML opcional.
- Generación automática de árbol de análisis opcional.
6R/=

Para la integración del Jcup, primero se debe crear una carpeta adentro de la
carpeta bin del JDK, acá se creará una carpeta llamada JFex y se incluirá en esta
el archivo Main.java, a la vez adentro de la carpeta bin también se colocará la
carpeta java_cup (Esta carpeta es la que descargamos del sitio CUP). Luego de
esto, para integrar CUP al proyecto será necesario pegar la carpeta Java_Cup que
ha sido previamente colocada en la carpeta del JDK y se deberá copiar la carpeta
en el subdirectorio src del proyecto creado para finalizar la integración.

7R/=

Estas herramientas previamente mencionadas, poseen una utilidad muy grande a


la hora de construir el compilador como finalidad de la asignatura de Ciencias de la
computación III, debido a que según el temario visto y lo mencionado en el contenido
de la asignatura, un generador de analizadores léxicos como lo es JFlex es
primordial a la hora de comprender lo que el programador y saber interpretarlo de
manera adecuada y un generador de analizadores sintácticos como el CUP junto al
JFLex hacen el complemento ideal a la hora de analizar el código fuente creado por
el programador, interpretarlo de la manera adecuada y así tomar una decisión
respecto a lo analizado, obteniendo de esta forma un compilador mucho más
completo y personalizado, ahorrando de una manera abismal la generación de
código al momento de programar un compilador, es decir, estas dos herramientas
son la base indispensable de un buen compilador.

8R/=

A continuación, se presenta un ejemplo práctico de la utilización de JFlex y Jcup:


Conclusión:

A raíz del trabajo realizado anteriormente, se puede decir que las dos herramientas
descritas en detalle (JFlex y Jcup), son grandes avances de la tecnologías, ayudas
vitales a la hora de construir compiladores, con características excepcionales y
útiles y además brindan una gran ayuda a la hora de realizar un compilador,
reduciendo en gran manera el código que tiene que crear el programador, sin dejar
de lado el hecho de que su utilización es sencilla y totalmente gratis.
Referencias:

• http://www.lsi.us.es/docencia/get.php?id=5840

• https://openfecks.wordpress.com/jlex-y-cup/

• https://es.slideshare.net/ditopo/compilador-jflexcup

• https://jflex.de/

• https://github.com/lfsanchezg/Ejemplo-JFlex-y-CUP

• http://www2.cs.tum.edu/projects/cup/

• http://web.eecs.utk.edu/~bvanderz/cs365/notes/jcup-if-else.html

También podría gustarte