Está en la página 1de 11

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 1

JFlex - Diap. 3

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

JFlex, un generador de
analizadores lxicos

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

PROCESADORES DEL LENGUAJE

JFlex - Diap. 4

Introduccin

Introduccin

Reglas Expresiones regulares.

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

JFlex

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

JFlex - Diap. 5

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

yylex
.java

un regla ejecuta las acciones asociadas a esa regla.

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

Jaime Urquiza Fuentes. Curso 2008-2009

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 6

JFlex - Diap. 7

Introduccin

Contenidos

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.

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

PROCESADORES DEL LENGUAJE

JFlex - Diap. 9

Especificacin lxica

JFlex - Diap. 10

Cdigo de usuario

Formato general:

El cdigo auxiliar necesario para el traductor

{Cdigo de usuario}

lxico.

%%

El contenido se copia tal y como aparece en la

{Opciones y declaraciones}

especificacin, al principio del cdigo fuente

%%

generado por JFlex.

{Reglas lxicas}

Ej. package, import, etc.

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

PROCESADORES DEL LENGUAJE

JFlex - Diap. 11

JFlex - Diap. 12

Opciones y declaraciones

Especificacin lxica
Formato general:

Contenido:
Opciones del cdigo generado
Cdigo fuente especfico
Macros y estados

{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.

11

Jaime Urquiza Fuentes. Curso 2008-2009

12

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 13

Opciones y declaraciones

Opciones y declaraciones

Opciones del cdigo generado:


%class nombre Especifica el nombre de la clase

Cdigo fuente especfico:


%{ %}

generada como salida de JFlex.


%line y %column activan cuenta de lneas
(yyline) y columnas (yycolumn) respectivamente.
%standalone Genera programa que acepta un

Cdigo copiado tal cual en la clase.


%init{ %init}
Cdigo copiado tal cual en el constructor de la
clase.
%eofval{ %eofval}

fichero de entrada en lnea de comando.


%debug Durante la ejecucin muestra: n lnea de la

Cdigo que se ejecutar cada vez que alcanzamos


un final de fichero.

especificacin, lexema reconocido y accin ejecutada.


Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

JFlex - Diap. 14

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

13

Jaime Urquiza Fuentes. Curso 2008-2009

14

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 15

Opciones y declaraciones

Especificacin lxica
Formato general:

Macros y estados:
Macros definiciones regulares.

{Cdigo de usuario}

DigitoHex = [0-9a-fA-F]
NumeroBinario = b [01]+

%%
{Opciones y declaraciones}

Los estados condicionan las reglas lxicas que se


comprueban.
%state nombre1, nombre2,
%xstate nombre3, nombre4,
Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

JFlex - Diap. 16

%%

{Reglas lxicas}

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

15

Jaime Urquiza Fuentes. Curso 2008-2009

16

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 17

Reglas lxicas

Reglas lxicas
Formato:
expresin

Especificacin de las expresiones:


expresiones regulares: sean a y b expresiones vlidas

{ acciones }

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.

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.

JFlex - Diap. 18

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

17

Jaime Urquiza Fuentes. Curso 2008-2009

18

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 19

Reglas lxicas

Reglas lxicas

Especificacin de las expresiones:


Caracteres especiales:

Especificacin de las expresiones:


expresiones regulares:

| ( ) { } [ ] < > \ . * + ? ^ $ / . " ~ !

{ nombre } Utilizacin de una macro

Cadena de caracteres
[]
Clases de caracteres

Utilizacin de estados:
<estado1,estado2,>

[^]

{acciones}

Desactivacin: activacin de otro distinto a l.


Estado activo por defecto <YYINITIAL>

Cualquier carcter excepto \n


Letras

Las expresiones sin estado asociado corresponden al


estado <YYINITIAL>

Complementario de clases de caracteres

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

expresin

Activacin de un estado: yybegin(estado)

Algunas predefinidas:
.
[:letter:]

JFlex - Diap. 20

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

19

Jaime Urquiza Fuentes. Curso 2008-2009

20

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 21

Reglas lxicas

Reglas lxicas

Funcionamiento, comprobacin de expresiones:

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

Varias expresiones posibles: lexema ms largo.


Sin expresin posible: se para e informa del error,

b) O la expresin no est asociada a ningn estado pero el


estado activo es inclusivo.

excepto con la opcin %standalone, que imprime en la


salida estndar.

<YYINITIAL> es un estado inclusivo

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

JFlex - Diap. 22

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

21

Jaime Urquiza Fuentes. Curso 2008-2009

22

PROCESADORES DEL LENGUAJE

PROCESADORES DEL LENGUAJE

JFlex - Diap. 23

Contenidos

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

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

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

JFlex - Diap. 24

caracteres del lexema reconocido como no procesados.


Se volvern a leer, pero no se tendrn en cuenta para:
yytext() e yylength().

Jaime Urquiza Fuentes. Curso 2008-2009

Universidad Rey Juan Carlos, rea de Lenguajes y Sistemas.

23

Jaime Urquiza Fuentes. Curso 2008-2009

24

También podría gustarte