Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En Eclipse IDE
Índice
• Introducción
• Instalación
• Implementación
• Estructura
• Compilación
• Ejemplo
2
INTRODUCCIÓN
3
Introducción
• Un analizador sintáctico o parser es una de las
partes de un compilador que transforma su entrada
en un árbol de derivación.
4
¿Qué es el CUP?
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.
5
¿Qué es el JLex?
• Jlex es un generador de analizadores léxicos en Java,
el cual toma una cadena como entrada una cadena de
caracteres, y lo convierte en una secuencia de token.
6
INSTALACIÓN
7
Descargar JFlex y CUP
Paso 1: Descargar JFLex y CUP de los siguientes
enlaces:
CUP:
http://www2.cs.tum.edu/projects/cup/
JFlex:
http://www.jflex.de/download.html
8
Instalación
Paso 2: Descomprimimos los archivos y
tendremos dos carpetas así:
9
Instalación
Paso 3: Movemos ambas carpetas a la raíz de
nuestro disco duro:
10
Instalación
Paso 4: Configuramos las dos carpetas para
crearlos como variables de ambiente en Windows.
Para el JFlex vamos a la ubicación y
encontraremos dos archivos JFlex:
11
Instalación
Abrimos el archivo jflex.bat como un archivo de
texto y lo editamos de la siguiente manera:
@echo off
13
Instalación
Dentro de la carpeta bin creamos un nuevo archivo
tipo bat llamado cup.bat
14
Instalación
Editamos el archivo cup.bat de la siguiente manera:
@echo off
16
Instalación
Configuración avanzada del sistema
17
Instalación
Variables de ambiente
18
Instalación
Damos doble
click en el
directorio path
19
Instalación
E ingresamos
nuestras dos nuevas
direcciones desde el
bin:
20
IMPLEMENTACIÓN
21
Implementación
El siguiente procedimiento consta de implementar
nuestro analizador sintáctico CUP a nuestra
plataforma de programación en este caso es el
siguiente :
22
Implementación
Instalamos el plugin de java cup en Eclipse IDE
accediendo a la pestaña Ayuda > Install Software Nuevo
23
Implementación
Instalación del plugin Java CUP
24
Implementación
25
Implementación
26
Implementación
27
Implementación
28
Implementación
29
Implementación
Ahora creamos un
nuevo proyecto en
Eclipse IDE:
30
Implementación
31
Implementación
Creamos un nuevo paquete llamado analizador
32
Implementación
Creamos una nueva clase main que será llamada Main
33
Implementación
Creamos un archivo nuevo llamado sintáctico.cup
que contendrá el código de nuestro analizador
sintáctico:
34
Implementación
Creamos un archivo nuevo llamado sintáctico.cup
que contendrá el código de nuestro analizador
sintáctico:
35
Implementación
Creamos un archivo
nuevo llamado
léxico.lex que
contendrá el código de
nuestro analizador
léxico:
36
ESTRUCTURA
37
Estructura
Ahora, nuestro proyecto encontraremos los
archivos .lex y .cup. Y a cada uno le corresponde
una estructura
38
Estructura Archivo .cup
La sección de código de usuario
La sección de código de usuario se
utiliza para incluir cualquier
declaración java (paquete, importación
o clase) que sea necesario para
compilar.
39
Estructura Archivo .cup
La sección de método Main
Esta Sección consta de método
Main Y método error. El método
Main nos ayuda a que el análisis
léxico se realice y el segundo es
para indicar errores durante el
análisis sintáctico.
40
Estructura Archivo .cup
Sección de variables
41
Estructura Archivo .cup
La sección de gramática
Esta sección se declaran las reglas de
producción o reglas gramaticales,
donde nuestras variables no
terminales pueden generar
producciones compuestas por
variables
42
Estructura
Estructura del archivo .lex:
• Sección de Directivas.
43
Estructura Archivo .lex
La sección de código de usuario
44
Estructura Archivo .lex
Sección de directivas
En esta secciones se declaran nuestras
directivas y nuestros tokens o también
conocidos como macros.
45
Estructura Archivo .lex
Sección de reglas de patrón
En esta sección es las mas importante Por
que definimos las reglas de nuestros
patrones léxicos. Donde nos regresara un
token.
46
COMPILACIÓN
47
Compilación
Para la compilación de los archivos .lex y .cup
seguir las siguientes instrucciones:
Nos dirigimos a la carpeta donde se encuentran esos
archivos
48
Compilación
Y presionando shift
+ click derecho nos
iremos al command
prompt:
49
Compilación
Y escribiremos el
siguiente comando:
cup nombre_archivo_cup.cup
50
Compilación
Y veremos que nos creará los siguientes dos
archivos parser.java y sym.java:
51
Compilación
Ahora en el command prompt escribimos lo
siguiente que nos arrojará este resultado:
52
Compilación
Veremos que se creó el archivo Lexer.java
54
EJEMPLO
55
Ejemplo
El siguiente ejemplo es una analizador sintáctico de
sentencias SQL , donde en caso de existir símbolos
incorrectos deberá señalar en donde se encuentran.
56
Ejemplo
Posteriormente realizando todos los pasos anteriores
nuestro proyecto en Eclipse IDE quedaría de la siguiente
forma:
57
Ejemplo
Para poder iniciar nuestro analizador sintáctico es
importante darle un archivo de entrada que pueda
analizar y lo hacemos de la siguiente forma en nuestra
clase Main:
58
Ejemplo
Al ejecutar el programa se analizará el contenido del
archivo .txt, en caso de no encontrar un error se mostrará
lo siguiente:
En caso contrario:
59
Ejemplo
El ejemplo anterior se puede descargar en:
https://drive.google.com/file/d/
0B_ndMbWB4KQvZUVHUVhSMzg5emM/view?
usp=sharing
60
Lenguajes y Autómatas I
Alumnos: