Escolar Documentos
Profissional Documentos
Cultura Documentos
RAFAEL DUTRA
Análise Léxica
●
Cada etapa da compilação
●
Filtra erros
●
Remove informação extra
●
Apresenta as informações de forma mais acessível
●
Estratégia: ferramentas para automatizar os processos
●
Para análise léxica: expressões regulares
Tokens
Tokens
●
Consiste em uma categoria sintática
(como "adjetivo" ou "substantivo"), mais
informação semântica (como um nome)
●
A etapa de parsing utilizará somente a
categoria sintática
●
"Pedro foi para a escola" e "Marcos foi
para a praia" têm a mesma estrutura
sintática
Expressões regulares
Denota uma linguagem formal, o conjunto de todas as
strings que pertencem à linguagem
●
Para a expressão regular R, seja L(R) sua linguagem
●
L(ε)={""}
●
Char c: L(c)={"c"}
●
R, S e.r.: L(RS)={xy|x∈L(R),y∈L(S)}
●
L(R|S)=L(R)∪L(S)
●
L(R*)=L(ε)∪L(R)∪L(RR)∪…
●
L((R))=L(R)
●
Parênteses usados para agrupar
Abreviações
Listas de caracteres [abcf-mxy]
●
Listas negativas [^aeiou]
●
Classes de caracteres: . (ponto), \d, \s
●
L(R+)=L(RR*)
●
L(L?)=L(ε|R)
●
Outras extensões são comuns: captura de
subexpressões, lazy vs. greedy, início do
texto
Exemplo de uma linguagem
Análise léxica em Java
Análise léxica em Python
Análise léxica em Flex
Exercícios
●
Números decimais em C, Java
●
Todos os numerais em C, Java
●
Números float
●
Identificadores em C, Java
●
Identificadores em Ada
●
Comentários em C++, Java