Вы находитесь на странице: 1из 11

PROCESADORES DEL LENGUAJE

JFlex - Diap. 1

PROCESADORES DEL LENGUAJE

JFlex - Diap. 3

Contenidos JFlex, un generador de analizadores lxicos


Introduccin Especificacin lxica Cdigo de usuario Opciones y declaraciones Reglas lxicas Funciones en JFlex

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

PROCESADORES DEL LENGUAJE

JFlex - Diap. 4

PROCESADORES DEL LENGUAJE

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

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

PROCESADORES DEL LENGUAJE

JFlex - Diap. 6

PROCESADORES DEL LENGUAJE

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

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

PROCESADORES DEL LENGUAJE

JFlex - Diap. 9

PROCESADORES DEL LENGUAJE

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

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

10

PROCESADORES DEL LENGUAJE

JFlex - Diap. 11

PROCESADORES DEL LENGUAJE

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

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

11

12

PROCESADORES DEL LENGUAJE

JFlex - Diap. 13

PROCESADORES DEL LENGUAJE

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

PROCESADORES DEL LENGUAJE

JFlex - Diap. 15

PROCESADORES DEL LENGUAJE

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

PROCESADORES DEL LENGUAJE

JFlex - Diap. 17

PROCESADORES DEL LENGUAJE

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

PROCESADORES DEL LENGUAJE

JFlex - Diap. 19

PROCESADORES DEL LENGUAJE

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

[^]

Complementario de clases de caracteres


Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

19

20

PROCESADORES DEL LENGUAJE

JFlex - Diap. 21

PROCESADORES DEL LENGUAJE

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.

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

21

22

PROCESADORES DEL LENGUAJE

JFlex - Diap. 23

PROCESADORES DEL LENGUAJE

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().

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

23

24

Вам также может понравиться