laboratorio representantes CHO

Páginas: 6 (1333 palabras) Publicado: 17 de febrero de 2015
12/02/2015

Introducción a Flex

Generador de analizadores
léxicos FLEX

• Abrimos la terminal (Ctrl + Alt + T) y
escribimos estos comandos:



sudo apt-get update
sudo apt-get install flex

2

Introducción a Flex

Introducción a Flex

• Flex es un una herramienta que permite
generar escáneres: (programas que reconocen
patrones léxicos en un texto).
• A partir de unconjunto de expresiones
regulares, Flex busca concordancias en un
fichero de entrada y ejecuta acciones
asociadas a estas expresiones.

• Con los ficheros de entrada (extensión .l),
flex genera como salida un fichero fuente en
C,`lex.yy.c', que define una rutina `yylex()'.
Este fichero se compila y se enlaza con la
librería `-lfl' para producir un ejecutable.
• Cuando se arranca el ficheroejecutable, este
analiza su entrada en busca de casos de las
expresiones regulares. Siempre que encuentra
uno, ejecuta el código C correspondiente.

3

Estructura del archivo Flex

4

sección de definiciones

• El fichero de entrada de flex está compuesto de
tres secciones, separadas por una línea donde
aparece únicamente un `%%'.

La sección de definiciones contiene declaracionesde definiciones de nombres sencillas para
simplificar la especificación del escáner. Las
definiciones de nombre tienen la forma:

definiciones
%%
reglas
%%
código de usuario

nombre definición

5

6

1

12/02/2015

sección de definiciones

sección de definiciones
Ejemplo:

El "nombre" es una palabra que comienza con
una letra o un guion bajo seguido por cero o másletras, dígitos, `_', o `-' .
La definición se considera que comienza en el
primer carácter que no sea un espacio en blanco
siguiendo al nombre y continuando hasta el final
de la línea. Posteriormente se puede hacer
referencia a la definición utilizando "{nombre}",
que se expandirá a "(definición)".

DIGITO
LETRAS

[0-9]
[A-Za-z]+

define "DIGITO" como una expresión regular que
emparejaun dígito sencillo, y "LETRAS" como una
expresión regular que empareja una o mas letras ya
sean mayúsculas o minúsculas.
7

Algunos ejemplos de expresiones
en Flex











8

sección de reglas

Dígito => 0|1|2|3|4|5|6|7|8|9
Dígito => [0-9]
Número entero: [0-9]+
Número entero: {Dígito}+
Número real sin signo: {Dígito}+”.”{Dígito}*
Identificador =>[a-zA-Z][_a-zA-Z]*
Palabras que empiezan por "f o F": [fF][a-zA-Z]*
Líneas que NO empiezan por "f o F": ^[^fF].*
Literal “abc” exacto: abc
Palabra “and”: *aA][nN][dD]

La sección de reglas en la entrada de flex contiene
una serie de reglas de la forma:
patrón acción
Donde:
• patrón: expresión regular.
• acción: código C con las acciones a ejecutar
cuando se encuentre concordancia del patrón
conel texto de entrada
9

sección de reglas

10

sección de reglas

El patrón debe estar sin sangrar y la acción debe
comenzar en la misma línea.
Flex recorre la entrada hasta que encuentra una
concordancia y ejecuta el código asociado. El
texto que no concuerda con ningún patrón lo
copia tal cual a la salida.

11

Una regla mas elaborada se puede crear haciendo
uso de lasdefiniciones que previamente vimos.
Por ejemplo:
({DIGITO}+|{DIGITO}+"."{DIGITO}+)
es idéntica a
(([0-9])+|([0-9])+"."([0-9])+)

12

2

12/02/2015

sección de código de usuario
• En las secciones de definiciones y reglas,
cualquier texto sangrado o encerrado
entre `%{' y `%}' se copia íntegramente a la salida
(sin los %{}'s). Los %{}'s deben aparecer sin
sangrar en líneas ocupadasúnicamente por estos.
• En la sección de definiciones (pero no en la
sección de reglas), un comentario sin sangría (es
decir, una línea comenzando con "/*") también se
copia literalmente a la salida hasta el próximo
"*/".

• La sección de código de usuario simplemente
se copia a `lex.yy.c' literalmente.
• Esta sección se utiliza para rutinas de
complemento que llaman al escáner o son...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Cho
  • el cho
  • pruebas de laboratorio representativas
  • Juan Cho
  • historia de los cho
  • Cho Kyuhyun
  • Cho Kyuhyun
  • REPRESENTANTES

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS