compil_aula4-anal-lexica (2)
TRANSCRIPT
-
8/17/2019 Compil_Aula4-anal-lexica (2)
1/17
Análise Léxica
Prof. Salvador Ramos
-
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.