Jlex

Páginas: 6 (1269 palabras) Publicado: 4 de octubre de 2011
Generador de analizadores léxicos FLEX
Procesadores de Lenguajes 4o Informática PL curso 2008-2009 (CCIA)
CCIA

Octubre 2008

PL–0809 (CCIA)

Introducción a FLEX

Octubre-2008

1 / 12

Uso de FLEX
FLEX: traduce la especificación de un analizador léxico a un programa C que lo implementa
Analizador léxico descrito/especificado mediante expresiones regulares (E.R.) A las E.R. se lespueden asociar acciones (código C) Cada vez que el analizador encuentra una secuencia que encaja con una de las E.R., ejecutará la acción asociada
fichero.l → FLEX → lex.yy.c

lex.yy.c + (ficheros .c)

→ GCC →

ejecutable

PL–0809 (CCIA)

Introducción a FLEX

Octubre-2008

2 / 12

Pasos de compilación
1

Compilar la especificación del analizador y crear el fichero yy.lex.c conel código del autómata $ flex fichero.l Compilar el analizador C y generar el programa ejecutable
1

2

2

Enlazar con librería de FLEX (proporciona implemenatciones por defecto para yywrap() y main()) $ gcc lex.yy.c -lfl Compilar y enlazar con ficheros .c del usuario $ gcc lex.yy.c (ficheros .c)
Usuario proporciona implementaciones para main() e yywrap() Deberá llamar a la función yylex()que reconocerá un TOKEN por cada llamada.

PL–0809 (CCIA)

Introducción a FLEX

Octubre-2008

3 / 12

Funcionamiento de FLEX
tablas del autómata generado función int yylex(void) yylex() simula el analizador especificado y sirve de interfaz con el código de usuario lex.yy.c contiene
yylex() debe de ser llamada desde el código de usuario

Funcionamiento: En cada llamada, yylex():
12 3

toma caracteres de la entrada hasta que machea una E.R. el texto que macheado se almacena en la variable yytext se ejecutan las acciones asociadas al patrón de esa E.R. Puede ser simplemente el procesamiento del texto macheado para enviarlo de nuevo a la salida. En otras ocasiones podrán suponer la alteración de variables del código de ususario y la devolución a la rutina que llama ayylex() (mediante return) de un valor numérico que identifique al TOKEN reconocido

Acciones:

PL–0809 (CCIA)

Introducción a FLEX

Octubre-2008

4 / 12

Partes de una especificación FLEX
Tres partes separadas por el símbolo % % Las dos primeras son obligatorias, aunque pueden estar vacías < sección de declaraciones > %%

< sección de reglas y acciones > %% < sección de rutinas deusuario >

PL–0809 (CCIA)

Introducción a FLEX

Octubre-2008

5 / 12

Sección de declaraciones
Código C necesario para las acciones asociadas a los patrones
El código C irá entre % y %, será copiado tal cual a lex.yy.c Generalmente serán #include, #define y estructuras o variables del código de usuario afectadas por las acciones

Definición de macros
Asocia un ”alias” a expr. regularesusadas en la sección de reglas (mejoran la legibilidad) En las reglas se referencia ese ”alias” poniéndolo entre llaves
definición: uso (en reglas ): LETRA_MAYUSCULA [A-Z] DIGITO [0-9] {LETRA_MAYUSCULA} {DIGITO}

Definición de entornos de reconocimiento (start conditions)
Entornos dentro de los cuales se podrán reconocer sub-expresiones dependiendo del contexto Permite generar”mini-analizadores” dentro del analizador
definición: uso: (en reglas)

%start NOMBRE [patron] {BEGIN(NOMBRE)} /*inicio entorno*/ [sub-patron] {[accion]} [sub-patron] {BEGIN(INITIAL)} /*fin entorno*
Introducción a FLEX Octubre-2008 6 / 12

PL–0809 (CCIA)

Sección de reglas
[exp. reg. 1] [acción 1]

Formato: ....
[exp. reg. n] [acción n]

Cada par ([exp. reg.], [acción]) recibe el nombre de regla
Si laacción involucra varias sentencias C, irán entre llaves ({...}) Si varias expr. reg. comparten la misma acción se indica con |
exp_reg1 | exp_reg2 | . . . exp_regN acción_común Notas:

El primer carácter de la expr. reg. debe de comenzar en la primera columna de texto Si no se especifica ninguna acción, se aplica la acción por defecto (se copia el string macheado en la salida)

Manejo de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • JLex y javaCUP
  • Manual De Jlex Y Cup (Implementación)
  • Instalacion Jlex Y Cup Debian
  • Jlex Tutorial
  • Manual jlex y cup
  • Pasos De Intalacion Jlex Y Cup Con Netbeans

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS