Академический Документы
Профессиональный Документы
Культура Документы
JFlex - Diap. 1
JFlex - Diap. 3
JFlex - Diap. 4
JFlex - Diap. 5
Introduccin
Generador de programas java diseado para procesamiento lxico. Parte de un conjunto de reglas lxicas. JFlex produce un programa llamado Yylex que reconoce las cadenas que cumplen dichas reglas.
Reglas lxicas .flex
Introduccin
Reglas Expresiones regulares. Expresiones regulares Autmata finito determinista. yylex implementacin del A.F.D. A cada regla se asocian un conjunto de acciones. Cuando yylex encuentra una cadena que cumple un regla ejecuta las acciones asociadas a esa regla.
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
JFlex
yylex .java
Jaime Urquiza Fuentes. Curso 2008-2009
JFlex - Diap. 6
JFlex - Diap. 7
Introduccin
Diferentes usos: Transformaciones simples Anlisis Estudios estadsticos La velocidad suele ser proporcional a la cantidad de caracteres en la entrada. El nmero o la complejidad de la reglas slo influyen sobre el tamao del autmata.
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Contenidos
Introduccin Especificacin lxica Cdigo de usuario Opciones y declaraciones Reglas lxicas Funciones en JFlex
JFlex - Diap. 9
JFlex - Diap. 10
Especificacin lxica
Formato general:
Cdigo de usuario
El cdigo auxiliar necesario para el traductor lxico. El contenido se copia tal y como aparece en la especificacin, al principio del cdigo fuente generado por JFlex. Ej. package, import, etc.
{Cdigo de usuario}
%% {Opciones y declaraciones} %% {Reglas lxicas}
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
10
JFlex - Diap. 11
JFlex - Diap. 12
Especificacin lxica
Formato general: {Cdigo de usuario} %%
Opciones y declaraciones
Contenido: Opciones del cdigo generado Cdigo fuente especfico Macros y estados
{Opciones y declaraciones}
%% {Reglas lxicas}
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
11
12
JFlex - Diap. 13
JFlex - Diap. 14
Opciones y declaraciones
Opciones del cdigo generado: %class nombre Especifica el nombre de la clase
generada como salida de JFlex. %line y %column activan cuenta de lneas (yyline) y columnas (yycolumn) respectivamente. %standalone Genera programa que acepta un fichero de entrada en lnea de comando. %debug Durante la ejecucin muestra: n lnea de la especificacin, lexema reconocido y accin ejecutada.
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Opciones y declaraciones
Cdigo fuente especfico: %{ %}
Cdigo copiado tal cual en la clase. %init{ %init} Cdigo copiado tal cual en el constructor de la clase. %eofval{ %eofval} Cdigo que se ejecutar cada vez que alcanzamos un final de fichero.
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
13
14
JFlex - Diap. 15
JFlex - Diap. 16
Opciones y declaraciones
Macros y estados: Macros definiciones regulares.
DigitoHex = [0-9a-fA-F] NumeroBinario = b [01]+ Los estados condicionan las reglas lxicas que se comprueban. %state nombre1, nombre2, %xstate nombre3, nombre4,
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Especificacin lxica
Formato general: {Cdigo de usuario} %% {Opciones y declaraciones} %%
{Reglas lxicas}
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
15
16
JFlex - Diap. 17
JFlex - Diap. 18
Reglas lxicas
Formato: expresin { acciones }
Reglas lxicas
Especificacin de las expresiones: expresiones regulares: sean a y b expresiones vlidas
a | b Unin a b Concatenacin a* Repeticin 0 o N veces a+ Repeticin 1 o N veces (= a a*) a? Opcionalidad !a Negacin ~a Cualquier cosa que termine en a.
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Funcionamiento: Cuando se detecta un lexema que cumple el patrn definido en la expresin se ejecutan las acciones asociadas (cdigo java)
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
17
18
JFlex - Diap. 19
JFlex - Diap. 20
Reglas lxicas
Especificacin de las expresiones: expresiones regulares:
{ nombre } Utilizacin de una macro Cadena de caracteres [] Clases de caracteres Algunas predefinidas:
. [:letter:] Cualquier carcter excepto \n Letras
Reglas lxicas
Especificacin de las expresiones: Caracteres especiales:
| ( ) { } [ ] < > \ . * + ? ^ $ / . " ~ !
Utilizacin de estados:
<estado1,estado2,> expresin {acciones}
Activacin de un estado: yybegin(estado) Desactivacin: activacin de otro distinto a l. Estado activo por defecto <YYINITIAL> Las expresiones sin estado asociado corresponden al estado <YYINITIAL>
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
[^]
19
20
JFlex - Diap. 21
JFlex - Diap. 22
Reglas lxicas
Funcionamiento, comprobacin de expresiones:
Las acciones asociadas a una expresin se ejecutarn si:
El lexema concuerda con la expresin y: a) O la expresin est asociada a un estado activo, ya sea inclusivo (%state) o exclusivo (%xstate). b) O la expresin no est asociada a ningn estado pero el estado activo es inclusivo. <YYINITIAL> es un estado inclusivo
Reglas lxicas
Funcionamiento, comprobacin de expresiones:
Varias expresiones posibles: lexema ms largo. Sin expresin posible: se para e informa del error, excepto con la opcin %standalone, que imprime en la salida estndar.
21
22
JFlex - Diap. 23
JFlex - Diap. 24
Contenidos
Introduccin Especificacin lxica Cdigo de usuario Opciones y declaraciones Reglas lxicas Funciones en JFlex
Funciones de JFlex
yytext() Devuelve el lexema reconocido. yylength() Devuelve el la longitud del lexema. yycharat( int n ) Devuelve el ensimo carcter del lexema reconocido. yypushback( int n ) Considera los n ltimos caracteres del lexema reconocido como no procesados. Se volvern a leer, pero no se tendrn en cuenta para: yytext() e yylength().
23
24