Está en la página 1de 11

1

JFlex, un generador de
analizadores lxicos
PROCESADORES DEL LENGUAJE JFlex - Diap. 1
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
3
Contenidos
PROCESADORES DEL LENGUAJE JFlex - Diap. 3
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Introduccin
Especificacin lxica
Cdigo de usuario
Opciones y declaraciones
Reglas lxicas
Funciones en JFlex
4
Introduccin
PROCESADORES DEL LENGUAJE JFlex - Diap. 4
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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
yylex
.java
JFlex
5
Introduccin
PROCESADORES DEL LENGUAJE JFlex - Diap. 5
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
6
Introduccin
PROCESADORES DEL LENGUAJE JFlex - Diap. 6
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
7
Contenidos
PROCESADORES DEL LENGUAJE JFlex - Diap. 7
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Introduccin
Especificacin lxica
Cdigo de usuario
Opciones y declaraciones
Reglas lxicas
Funciones en JFlex
9
Especificacin lxica
PROCESADORES DEL LENGUAJE JFlex - Diap. 9
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Formato general:
{Cdigo de usuario}
%%
{Opciones y declaraciones}
%%
{Reglas lxicas}
10
Cdigo de usuario
PROCESADORES DEL LENGUAJE JFlex - Diap. 10
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
11
Especificacin lxica
PROCESADORES DEL LENGUAJE JFlex - Diap. 11
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Formato general:
{Cdigo de usuario}
%%
{Opciones y declaraciones}
%%
{Reglas lxicas}
12
Opciones y declaraciones
PROCESADORES DEL LENGUAJE JFlex - Diap. 12
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Contenido:
Opciones del cdigo generado
Cdigo fuente especfico
Macros y estados
13
Opciones y declaraciones
PROCESADORES DEL LENGUAJE JFlex - Diap. 13
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
14
Opciones y declaraciones
PROCESADORES DEL LENGUAJE JFlex - Diap. 14
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
15
Opciones y declaraciones
PROCESADORES DEL LENGUAJE JFlex - Diap. 15
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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,
16
Especificacin lxica
PROCESADORES DEL LENGUAJE JFlex - Diap. 16
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Formato general:
{Cdigo de usuario}
%%
{Opciones y declaraciones}
%%
{Reglas lxicas}
17
Reglas lxicas
PROCESADORES DEL LENGUAJE JFlex - Diap. 17
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Formato:
expresin { acciones }
Funcionamiento:
Cuando se detecta un lexema que cumple el
patrn definido en la expresin se ejecutan
las acciones asociadas (cdigo java)
18
Reglas lxicas
PROCESADORES DEL LENGUAJE JFlex - Diap. 18
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
19
Reglas lxicas
PROCESADORES DEL LENGUAJE JFlex - Diap. 19
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Especificacin de las expresiones:
expresiones regulares:
{ nombre } Utilizacin de una macro
Cadena de caracteres
[] Clases de caracteres
Algunas predefinidas:
. Cualquier carcter excepto \n
[:letter:] Letras
[^] Complementario de clases de caracteres
20
Reglas lxicas
PROCESADORES DEL LENGUAJE JFlex - Diap. 20
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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>
21
Reglas lxicas
PROCESADORES DEL LENGUAJE JFlex - Diap. 21
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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
22
Reglas lxicas
PROCESADORES DEL LENGUAJE JFlex - Diap. 22
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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.
23
Contenidos
PROCESADORES DEL LENGUAJE JFlex - Diap. 23
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
Introduccin
Especificacin lxica
Cdigo de usuario
Opciones y declaraciones
Reglas lxicas
Funciones en JFlex
24
Funciones de JFlex
PROCESADORES DEL LENGUAJE JFlex - Diap. 24
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas. Jaime Urquiza Fuentes. Curso 2008-2009
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().

También podría gustarte