ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

ORGANIGRAMA


Enviado por   •  14 de Mayo de 2014  •  474 Palabras (2 Páginas)  •  239 Visitas

Página 1 de 2

Tutorial JFlex

Posted on May 4, 2010 by pablolm

Tutorial JFlex

Elementos básicos de un fichero de especificación léxica

Un fichero de especificación léxica tiene 3 partes separadas por %%.

La primera parte son declaraciones que se van a copiar literalmente al inicio de la clase generada. Se puede usar para poner imports.

La segunda parte contiene directivas y macros. Las directivas empiezan por %, seguido del nombre de la directiva, seguido del valor en caso de que se necesite. Las directivas se usan para controlar aspectos de la clase generada como el nombre, el tipo de la función yylex(), etc. Los macros tienen la siguiente estructura: nombre = expr_reg. Los macros se usan en la declaración de reglas (tercera parte) o de otros macros, para evitar repetir expresiones regulares por todos lados. Para usar un macro hay que poner ‘{‘ delante y ‘}’ detrás. Las directivas y los macros tienen que ir uno en cada línea.

La tercera parte contiene las reglas léxicas, que tienen la siguiente estructura: expr_reg {acción}. La acción suele ser devolver el token asociado al patrón reconocido.

Se pueden poner comentarios escribiéndolos entre /* */.

Instalación y uso

Hay varias formas de instalar JFlex. La más fácil es simplemente colocar JFlex.jar en un directorio y ejecutarlo con java -jar JFlex.jar esp_lex.flex. Si no se pasa el nombre del archivo que contiene la especificación léxica como parámetro, se mostrará una interfaz que preguntará por la ruta del archivo.

Se creará una clase que tiene un constructor que recibe un archivo de entrada y un método que va devolviendo los tokens uno a uno.

Creación de un fichero .flex

A continuación vamos a crear un fichero de especifiación léxica que reconozca números enteros, octales, hexadecimales e identificadores. Indicaremos los pasos que vamos dando con comentarios.

/* primera parte: no hace falta poner nada */

%%

/* segunda parte: declaramos las directivas y los macros */

%line

%column

%type String

LineTerminator = \r|\n|\r\n

WhiteSpace = {LineTerminator} | [ \t\f]

Identificador = [:jletter:] [:jletterdigit:]*

Decimal = 0 | [1-9][0-9]*

Octal = 0[0-7]+

Hexadecimal = 0x[0-9A-Fa-f]+

%%

/* tercera parte: declaramos las reglas */

{Identificador} {return “id”;}

{Decimal} {return “dec”;}

{Octal} {return “oct”;}

{Hexadecimal} {return “hex”;}

{WhiteSpace} {/* ignorar */}

El nombre de la clase generada por defector es Yylex.java y el del método que devuelve el siguiente token yylex(). Se puede cambiar el nombre de la clase con la directiva class y el del método con la directiva

...

Descargar como (para miembros actualizados) txt (3 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com