+ All Categories
Home > Documents > Flex Introduccion

Flex Introduccion

Date post: 01-Mar-2018
Category:
Upload: erick-fernando
View: 224 times
Download: 0 times
Share this document with a friend

of 19

Transcript
  • 7/25/2019 Flex Introduccion

    1/19

    Introduccin a Flex

  • 7/25/2019 Flex Introduccion

    2/19

    Qu es lex?

    Es un programa que genera analizadoreslxicos (tambin conocido como scannerseningls).

    Usualmente se usa junto a Yacc Originalmente escrito por Eric Schmidt and

    i!e "es! Est#ndar en Unix http$%%en.&i!ipedia.org%&i!i%"ex'programming'tool

    http://en.wikipedia.org/wiki/Lex_programming_toolhttp://en.wikipedia.org/wiki/Lex_programming_tool
  • 7/25/2019 Flex Introduccion

    3/19

    Qu es Lex?

    usca concordancias de un conjunto deexpresiones regulares un archi*o deentrada ejecuta acciones asociadas.

    Expr1 =>Accin1Expr2 =>Accin2

    Entrada

    LexTokens

    +

    Acciones

  • 7/25/2019 Flex Introduccion

    4/19

    Qu es flex?

    +ast "exical ,nalizer generator Una alternati*a a "ex So-t&are libre Usualmente usado junto a bison Escrito orignalmente en por /ern 0axson

    en 1234 5o es 65U http$%%en.&i!ipedia.org%&i!i%+lex'lexical'analser

    http://en.wikipedia.org/wiki/Flex_lexical_analyserhttp://en.wikipedia.org/wiki/Flex_lexical_analyser
  • 7/25/2019 Flex Introduccion

    5/19

    Lexemas, patrones lxicos y

    tokens "exema$ secuencia de caracteres de entrada 0atr7n lxico$ -orma compacta de describir

    conjuntos de lexemas 8o!en$ clase de elementos 1 to!en 9 1 patr7n 1 to!en 9 1 lexema

  • 7/25/2019 Flex Introduccion

    6/19

    Expresiones regulares

    :e-inici7n -ormal delos lexemas quecorresponden a unto!en

    0ermite decidircuando se reconoceun to!en a partir deuna secuencia deelementos deentrada

  • 7/25/2019 Flex Introduccion

    7/19

    Ejemplos de expresiones en

    flex :;gito 9< =>1>?>@>A>B>C>4>3>2 :;gito 9< D=2F 5Gmero entero$ D=2FH 5Gmero entero$ I:;gitoJH 5Gmero real sin signo$ I:;gitoJ

    HK.KI:;gitoJL Mdenti-icador 9< Daz,NFD'az,

    NFL 8-no. -ijo tamps 9< D3@AFD=2FI4J 0alabras que empiezan por e-e$

    D-+FDaz,NFL ";neas que 5O empiezan por

    e-e$ D-+F.L "iteral Pa5dK exacto$ a5d 0alabra PandK$ Da,FDn5FDd:F

  • 7/25/2019 Flex Introduccion

    8/19

    Proceso de compilacin

  • 7/25/2019 Flex Introduccion

    9/19

    Estructura de un archio Lex

    Secci7n de de-inici7nQQSecci7n de reglas

    QQSecci7n de c7digo

  • 7/25/2019 Flex Introduccion

    10/19

    !eccin de definiciones

    Se inclue c7digo para declarar *ariablesR-uncionesR tipos enumeradosR includesR etc que se*aan a necesitar.

    Se copia exactamente en lex..c /a entre QI QJ

    Se declaran to!ens a partir de expresiones regulares Se pueden establecer condiciones iniciales del

    analizador lxico que se est# construendo 8;picamente contiene una declaraci7n de tipos

    enumerados para los posibles to!ens O mejor aGnR un Tinclude a un archi*o que lo

    contenga

  • 7/25/2019 Flex Introduccion

    11/19

    !eccin de reglas

    8iene el -ormato$ patr7n I acci7n J "os patrones son E.. la acci7n es c7digo :os tipos de l;neas$

    +uente $ empiezan por blanco >> PQIK >> PQJK 0atr7nacci7n$ empiezan por otra cosa

    El +uente se copia literalmente en lex..c Si ha concordancia con el patr7n se ejecuta la

    acci7n asociada Si ha *arios patrones coincidentes se decide cu#l

    corresponde se ejecuta la acci7n Si no ha concordanciaR ejecuta EVO (copia el

    lexema en la salida)

  • 7/25/2019 Flex Introduccion

    12/19

    !eccin de reglas "cont#

    En la de-inici7n de patrones$ Usar D F para conjuntos de caracteres Usar ( ) para agrupar.

    Es t;pico que *aan seguidos de L Usar IJ para utilizar los PbautizosK de la primera

    secci7n uidado con$

    omentarios de aracteres especiales$ . L W Q D etc Espacios en blanco tabuladores a principio de l;nea

  • 7/25/2019 Flex Introduccion

    13/19

    !eccin de cdigo $

    7digo creadas por necesidad delprogramador +lex

    Se copian literalmente en el lex..c ,qu; es donde situaremos gran parte de la

    l7gica -uncional de nuestras pr#cticas enlugar de hacerlo en la parte de acciones

  • 7/25/2019 Flex Introduccion

    14/19

    Primer ejemplo en flex

    econocer nGmeros de tel-ono de8amaulipas el :+R di-erenciarlos de otrosnGmeros tele-7nicos

  • 7/25/2019 Flex Introduccion

    15/19

    %ccediendo al lexema

    text contiene un puntero global al lexemareconocido

    leng contiene la longitud del lexema Va otras m#s$ inR out... 8ambin ha -unciones$ lex()R &rap()R

    more()R less()R terminate()... e*isar manual de +lex

  • 7/25/2019 Flex Introduccion

    16/19

    &edefiniendo el main"#

    0or de-ectoR +lex crea un main() que llama alex()

    Si rede-inimos el main()R ha que llamar a

    lex() lex() entra en un bucle in-inito hasta que

    no ha m#s to!ens o se hace un return

  • 7/25/2019 Flex Introduccion

    17/19

    $onsideraciones a tener encuenta

    Ser mu riguroso con la estructura$ Si comienza por blancoR a no es l;nea de patr7n

    acci7n :e-inir claramente las tres zonas delimitadas por Q

    Q 8ener cuidado con los anidamientos de ()RDFRIJ 8ener presente la -orma de resoluci7n de mGltiples

    patrones coincidentes

    Elige el que concuerda con el stringm#s largo Si los patrones reconocen el mismo stringR elige el

    que aparece primero en las declaraciones +lex

  • 7/25/2019 Flex Introduccion

    18/19

    $onsideraciones a tener encuenta "cont#

    Seguir principio Pdi*ide *encer#sK Si -alla el analizador lxicoR lo m#s simple es ir

    eliminando patr7nacci7n hasta localizar el con-licti*o

    Seguir principio XMSS (Xeep it simpleR stupid) 0ensar mu bien las E.. a utilizar puede simpli-icarmucho la tarea

    8ener presente la di-erencia entre maGsculas minGsculas de los lexemas$

    omplicar# el c7digo con un mont7n de Da,FDn5FDd:F... Se resuel*e con -lex Zi

  • 7/25/2019 Flex Introduccion

    19/19

    &econocimientos

    asado en seminario de :a*id 0ortols


Recommended