Compil_Aula4-anal-lexica (2)

Embed Size (px)

Citation preview

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    1/17

    Análise Léxica

    Prof. Salvador Ramos

    [email protected]

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    2/17

    • Gerador de analisador léxico

    • Auxilia na construção de analisadores Léxicos.

    • tili!a ex"ress#es regulares "ara descrever to$ens.

     •

    Perm te a com naç o a ent caç o e "a r es comexecução de aç#es.

    • m dos mais con%ecidos&

     –  Lex' versão "ara (( )nix*

     –  +lex' versão atuali!ada do Lex

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    3/17

    ,rigem• , -A(( foi um dos "rimeiros analisadores

    sintáticos' escrito entre /01 e /02.

    • 3sse nome vem de 45et anot%er com"iler6'

    escrevendo parsers na mesma é"oca.

    • 8a década de /29 o 5acc sofreu atuali!aç#es'foram im"lementadas diversas caracter:sticasadicionais 7ue resultou na versão corrente do;

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    4/17

    ,rigem• 3m /01 surgiu o Lex' um gerador de analisador léxico.

    • Lex tornou>se ra"idamente "o"ular' a des"eito de ser

    relativamente lento e a"resentar bugs.

    •   ' ' '

    +,R?RA8' "o"ular na é"oca.

    • 3m /20 foi reescrito em ( e c%amado de +lex' de 4+ast

    Lexical Anali!er Generator6.

    • Atualmente é um "roeto da Souce+orge' ainda sob licença da

    ;er$ele5.

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    5/17

    • Passos "ara a geração do analisador&

    m "rograma escrito em Lex é submetido aocom"ilador.

    , com"ilador Lex gera o ar7uivo lex.55.c

    3sse ar7uivo de sa:da "ode ser utili!ado comoentrada "ara o gerador de "arser' ou com"ilado eusado como recon%ecedor

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    6/17

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    7/17

    m "rograma lex é constitu:do de B "artes& –  CD declaraç#es

    • (ontém declaraç#es de variáveis ' includes e constantes

    • (Edigo nesta seção é diretamente co"iado "ara cEdigo na linguagem alvo

    }%

    /* Fefiniç#es regulares H3x"ress#es regulares 7ue definem os "adr#es a serem recon%ecidos

     –  CC regras de tradução• +ormato

     p1 DaçãoI... ....

     pn DaçãoI

    onde' pi é uma ex"ressão regular e cada ação é um fragmento de"rograma descrevendo a ação a ser tomada 7uando o "adrão forrecon%ecido

    %%

     –  Procedimentos auxiliares• (ontém "rocedimentos 7ue seam necessários "ara execução das aç#es.

    • (Edigo nesta seção é diretamente co"iado "ara cEdigo na linguagem alvo

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    8/17

    Feclaraç#es (

    8essa seção "odem constar declaraç#es de

    funç#es' declaraç#es de variáveis' Jincludes' etc.

    3xem los&

    Jinclude Kstring.%

    c%ar ar7uivo de saida

    int lin%a M 9N

    struct Dint aN

    float bNI

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    9/17

    • Fefiniç#es regulares

    A definição de um scanner +L3 usa uma ricalinguagem de ex"ress#es regulares.

    (aracteres com significado es"ecial em ex"ress#esregulares&

    . (asa com um caractere sim les exceto nova lin%a n . 

    3x& . DcaractereNI

    Q uma classe de caracteres 7ue casa com 7ual7uer

    caractere entre colc%etes.3xem"lo& letra Qa>! o %:fen indica intervalo' ousea' 7ual7uer letra no intervalo entre a e !.

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    10/17

    • Fefiniç#es regulares )cont*

    Qex uma cadeia exceto a cadeia 4ex6.

    Qa>!D>IQv T omite a cadeia v.

    (asa o in:cio de uma lin%a com o "rimeiro caractere deuma ex"ressão regular.

    U (asa o fim da lin%a como o =ltimo caractere de uma.

    D I dois n=meros entre c%aves indica o n=mero m:nimo emáximo de ve!es 7ue o "adrão anterior casa.

    3x. AD>BI casa de uma a trVs ocorrVncias de A9D1I (ASA (,W 99999

    D8,W3I refere>se a um "adrão nomeado "or 8,W3

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    11/17

    Fefiniç#es regulares )cont*O esca"e Tmetacaracteres.

    On T nova lin%a

    O > o literal asterisco

    Xero ou mais ocorrVncias da ex"ressão

    "recedente. ma ou mais ocorrVncia da ex"ressão

    "recedente.

    Y ,"erador de alternativa

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    12/17

    • 3xem"los de definiç#es regulares

    letra QA>Xa>!

    g to >id DletraI)DletraIYDdigitoI*

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    13/17

    •Regra de tradução

    • Fi! o 7ue fa!er 7uando encontra um "adrão

    es"ecificado nas definiç#es regulares.

    •3xem"lo&leia D"rintf)ZK Cs' CsOnZ'R3S'55text*NI

    DnumeroI D"rintf)ZK Cs' CsOnZ'8W'55text*NI

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    14/17

    • 3xem"lo

     –  (onstruir um analisador léxico "ara recon%eceridentificadores' n=meros e as "alavras reservadas if' t%en'else.

    Primeira "arte do ar7uivo&CD

    Jdefine !digito Q9>/id DletraI)DletraIYDdigitoI*numero DdigitoI)O.DdigitoI*\)3QO>\DdigitoI*\

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    15/17

    • Regras de tradução

    CC

    D[sI D I

    if D"rintf)ZK Cs' CsOnZ'R3S'55text*NI

     en "r n s' s n ' '55 ex N

    else D"rintf)ZK Cs' CsOnZ'R3S'55text*NI

    DidI D"rintf)ZK Cs' CsOnZ'

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    16/17

    • Procedimentos auxiliares

    int main) *

    D

    55lex)*N

    I

  • 8/17/2019 Compil_Aula4-anal-lexica (2)

    17/17

    • 3xerc:cio

    a* escol%er B comandos da linguagem criada "or vocVNb* +a!er um "rograma +L3 "ara receber uma entrada"elo teclado' uma lin%a de "rograma na sua linguagem

    com 7ual7uer um dos comandos escol%idos e retornaros to$ens dessa entrada& –  o"erador lEgico& 4o" log6 o"erador encontrado

     –  o erador matemático& 4o mat6 o erador 

     –  Palavra reservada& 4Reservada6 to$en )as "alavrascorres"ondentes aos comandos escol%idos*.

     –  8=mero& 4numero 4 to$en.

     –  identificador

    • 3ntregar& ar7uivo flex. Programa lex.55.exe > o$ M '9"onto

    • Fata de entrega& 91H9]. 3ntrega "osterior não será"ontuada.