Escolar Documentos
Profissional Documentos
Cultura Documentos
CONSTRUCCION MANUAL DE
UN ANALIZADOR LEXICO
Integrantes:
- Ruby Lozada Pariahuache
- Julio Corpus Mechato
Docente:
- Ing. Mitchell Paulo Blancas Nuez
INDICE
1. Qu es un Flex? .3
2. Ejemplo breve 1 . 4
3. Ejemplo breve 2 . 5
4. Formato del Fichero .. 6
5. Patrones 7
6. Cmo se empareja la entrada ?
7. Acciones
8. Escner generado
9. Condiciones de arranque
10. Mltiples buffers de Entrada
11. Reglas de Fin-de-Fichero
12. Macros miscelneas
13. Valores disponibles l usuario
14. Interfaz con YACC
15. Invocando a Flex
1. Sinopsis
2. Opciones
16. Consideraciones de rendimiento
17. Generando escneres en C++
18. Incompatibilidades con lex y POSIX
Rivera, Corpus, Roldan, Lozada - FLEX
QU ES UN FLEX?
Es una herramienta para
generarescneres.
Programas que reconocen
patrones lxicos en un texto
Flexlee los ficheros de entrada
dados, o la entrada estndar
EJEMPLOS BREVES
1. %%
username printf ("%s", getlogin() );
-. Username = El Patrn
-. Printf = Es la Accin
-. % % = Marca el comienzo de las reglas
EJEMPLOS BREVES
PATRONES
Los patrones en la entrada se escriben
utilizando un conjunto extendido de
expresiones regulares. Estas son:
`x'
`.'
`[xyz]'
`[abj-oZ]'
`[^A-Z]'
`[^A-Z\n]'
`r*'
PATRONES
`r+'
`r?'
`r{2,5}'
`r{2, }'
`r{4}'
`{nombre}'
`\0'
`\123
Entre otros.
COMO SE EMPAREJA
LA ENTRADA
Cuando
el
scner
generado
est
funcionando, este analiza su entrada
buscando cadenas que concuerden con
cualquiera de sus patrones.
Si encuentra ms de 1 emparejamiento:
Toma el que empareje ms texto.
Si encuentra 2 o ms emparejamiento:
Se escoge la regla listada en primer lugar
en el fichero de entrada de flex.
COMO SE EMPAREJA
LA ENTRADA
El texto correspondiente al emparejamiento
(token) est disponible en el puntero a
carcter global yytext, y su longitud en la
variable global entera yyleng.
Entonces la accin correspondiente al
patrn emparejado se ejecuta, y la entrada
restante
se
analiza
para
otro
emparejamiento.
Si no se encuentra un emparejamiento,
entonces se ejecuta la regla por defecto: el
siguiente carcter en la entrada se considera
reconocido y se copia a la salida estndar.
10
ACCIONES
Cada patrn en una regla tiene una
accin asociada, que puede ser cualquier
sentencia en C.
El patrn finaliza en el primer carcter de
espacio en blanco que no sea una
secuencia de escape, lo que queda de la
lnea es su accin,
Si la accin est vaca, entonces cuando
el patrn se empareje el token de
entrada simplemente se descarta.
11
ESCANER GENERADO
La salida de flex es el fichero lex.yy.c que
contiene la rutina de anlisis yylex(), un
nmero de tablas usadas por esta para
emparejar tokens y un nmero de rutinas
auxiliares y macros.
12
CONDICIONES DE
ARRANQUE
Flex dispone de un mecanismo para activar reglas condicionalmente.
Cualquier regla cuyo patrn se prefije con <sc> nicamente estar activa
cuando el analizador se encuentre en la condicin de arranque llamada
sc. Por ejemplo:
<STRING>[^"]*
{ /* se come el cuerpo de la cadena ... */
...
}
estar activa solamente cuando el analizador est en la condicin de
arranque "STRING", y
<INITIAL,STRING,QUOTE>\. { /* trata una secuencia de escape ... */
...
}
13
14
14
15
15
16
16
17
17
18
18
19
19
20
20