Você está na página 1de 11

COMPILADORES

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

Você também pode gostar