tutoral jflex y jcup java

Páginas: 10 (2352 palabras) Publicado: 29 de enero de 2014
Tutorial Jlex Y Java Cup

Tutorial Jlex y Java Cup
http://openfecks.wordpress.com/ 
por Josué Ortega

http://openfecks.wordpress.com/

Tutorial Jlex Y Java Cup
JLex y Java CUP
JLEX
Jlex no es más que un generador de un analizador léxico  parecido 
a LEX, el cual toma una cadena como entrada una cadena de 
caracteres, y lo convierte en una secuencia de tokens.
CUPCup 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.
Decidí dividir el tutorial en varias secciones para hacer más fácil 
el aprendizaje de estas herramientas.
INDEX





Estructura de un Archivo Jlex
Estructura de un archivo Cup
Integración Jlex con CupCompilacion y Ejecucion

Estructura Archivo JLex
Estructura del Archivo Jlex
Un archivo de entrada Jlex, es un archivo plano con la siguiente 
estructura:
codigo del usuario
%%
Directivas Jlex
%%
Reglas para las Expresiones Regulares
Código del Usuario
Es la parte del archivo de entrada donde se coloca el codigo java 
que deseamos usar en la clase que será generada, esto quiere decir que Jlex copiará directamente el codigo a la clase generada, aqui 
deben ir los importes a otras librerias. TODO ESTO ANTES DE LOS 
PRIMEROS (%%).

http://openfecks.wordpress.com/

Tutorial Jlex Y Java Cup
Directivas JLex
En esta seccíon irán las directivas, o especificaciones para que 
opere JLEX, para obtener la salida deseada.
Reglas para las Expresiones RegularesEn esta seccion del archivo Jlex, es donde se definen las reglas 
para obtener los tokens de la cadena que se esta leyendo.
Con un ejemplo explicare mejor cada una de estas secciones.
Para el ejemplo escribí un programa que reconoce las siguientes 
palabras reservadas:
int, string, if, then, else, for, while
Reconoce identificadores, y enteros.
El codigo para hacer Jlex para genera el analizador lexico del ejemplo es el siguiente:
/*AQUI PUEDEN IR LOS IMPORTS */
%%
%{
/*CODIGO USUARIO*/
/*Pequeña funcion para imprimir en pantalla*/
public void imprime(String foo){
System.out.println(foo)
}
%}
/*DIRECTIVAS JLEX*/
%class Yylex
%public
%full
%char
%line
%cup
%eofval{
System.out.println("FIN DEL ARCHIVO");
%eofval}
entero=[0­9]
Id=[a­zA­Z][a­zA­Z0­9]*
%%/* MANEJO DE LAS PALABRAS RESERVADAS*/
"while"  {imprime("while");
}
http://openfecks.wordpress.com/

Tutorial Jlex Y Java Cup
"int"   {imprime("int");}
"if" {imprime("if");}
"then" {imprime("then");}
"for"{imprime("for");}
/*expresion regular para un entero, tomando el conjunto definiddo
anteriormente como entero*/
/*un entero 1 o mas veces*/
({entero})+  {imprime("entero"+}
{Id} {imprime("Identificador");}/*con la siguiente linesa ignoramos los espacios en blanco*/
(" ") {System.out.println("espacio");}
/*con esta ignoramos los saltos de linea, tabulaciones,*/
[\t\r\n\f] {}
/*error lexico:*/
. {System.out.println("error");}
}/*error lexico:*/. {System.out.println("error");}
El código escrito dentro de los corchetes es el el código que 
queremos que se ejecute cada vez que el scanner encuentra los tokens a su izquierda. Este código queda sin modificar a la hora de 
generar el archivo de salida java
Estructura de Archivo Cup
A continuación detallaré como se estructura un archivo de entrada 
para Cup.
Básicamente un archivo para Cup tiene la siguiente estructura:





Imports:  En esta sección creo que no tengo que ampliar mucho desde que programamos Java sabemos como son los imports de 
librerias.
Código del Usuario para el Parser:  Como el código Java es generado 
por la herramienta es muy difícil modificar lo en el archivo de 
salida. Así que aquí podemos declarar métodos y variables que 
pensamos usar en la clase resultante. Si se declaran variables o 
métodos públicos en esta sección estos podran ser accedidos por 
otras clases.
Se declara:...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Analizador lexico jflex java
  • Tuto jflex
  • Java
  • Java
  • Java
  • java
  • JAVA
  • java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS