Buscar

Analisador Léxico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Analisador 
Léxico – parte I 
Compiladores 
 
Mariella Berger 
Sumário 
 
• Analisador Léxico 
• Tokens, Lexemas e Padrões 
• Processo da Análise Léxica 
• Como implementar um analisador léxico? 
• Como descrever tokens? 
• Notação de expressões regulares 
SÍNTESE 
ANÁLISE 
As fases de um Compilador 
Análise Léxica 
Análise Sintática 
Análise Semântica 
Gerador de Código 
Intermediário 
Otimizador de 
Código 
Gerador de Código 
Analisador Léxico 
 
• O analisador léxico lê o programa fonte 
(caractere por caractere) e retorna os tokens 
formadores deste; 
 
• Um token descreve um padrão de caracteres 
tendo algum significado no programa fonte: 
• Identificadores 
• Operadores 
• Palavras chave 
• Números 
• Delimitadores, etc 
Análise Léxica 
montante := deposito_inicial + 60; 
montante Identificador 
:= Símbolo de atribuição 
deposito_inicial Identificador 
+ Símbolo de adição 
60 Número 
; Símbolo ponto e vírgula 
Analisador Léxico 
 
• Insere informação sobre identificadores na 
tabela de símbolo. 
 
• Expressões regulares são usada para descrever 
tokens (lexical constructs). 
 
• Um autômato finito (determinístico) pode ser 
usado na implementação de um analisador 
léxico. 
Tokens, Lexemas e Padrões 
 
• Um lexema é um conjunto de caracteres no 
programa-fonte que é reconhecido pelo padrão de 
algum token. 
• Exemplo: const pi = 3.1416; 
• A subcadeia pi é um lexema para o token identificador 
 
• Tratamos os tokens como símbolos terminais na 
gramática para a linguagem fonte. 
 
• São instâncias de uma mesma classe léxica 
(identificadores, número, etc) 
Tokens, Lexemas e Padrões 
 
• Na maioria das linguagens as seguintes construções 
são tratadas como tokens: 
• Palavraschave, operadores, identificadores, constantes, 
literais, strings, símbolos de pontuação (parênteses, 
vírgulas, etc) 
 
• Quando a sequência de caracteres pi aparece no 
programa fonte, um token representando um 
identificador é repassado ao parser 
 
• Na implementação transmitisse um inteiro associado 
ao token 
Exemplo de Tokens 
Processo de Análise Léxica 
Processo de Anáalise Léxica 
 É importante salientar que o Analisador Léxico 
desconsidera: 
 Espaços em branco 
 Tabs 
 Comentários de bloco 
 Comentários de linha 
Como implementar um 
Analisador Léxico? 
 
• Utilizar uma ferramenta que permita produzir 
um analisador léxico a partir de uma 
especificação baseada em expressões 
regulares 
 
• A partir de uma linguagem de programação 
convencional 
Como descrever Tokens 
 
• Expressões regulares são uma notação importante 
para especificar padrões 
• Cada padrão corresponde a um conjunto de 
cadeias 
• Em pascal, um identificador é uma letra seguida 
por zero ou mais letras ou dígitos 
 letra ( letra | dígito ) * 
• Nesta notação, a barra vertical significa ou, os 
parênteses servem para agrupar subexpressões, o 
asterisco significa “zero ou mais instâncias” com o 
resto da expressão significa concatenação 
Como descrever Tokens 
 
• Uma expressão regular (RE) é formada por um 
conjunto de regras. 
• Cada expressão regular denota uma 
linguagem L(R) 
Exemplo de linguagens 
 
• L(R) = é um linguagem definida por R 
 
 L(abc) = {abc} 
 
 L(hello|goodbye) = { hello, goodbye } 
 
 L(1(0|1)*) = todos os números binários que iniciam 
 com 1 
 
 L((a | b)(a | b)) = {aa, ab, ba, bb} 
 
 L((a)*) = {ε , a, aa, aaa, …} 
 
 L(a | a*b) = {?} 
Notação de Expressões 
Regulares 
Exemplos 
Exercícios 
 Defina expressões regulares para: 
 Números Romanos 
 Endereços de ips 
 Placas de carros 
 Números de telefones celulares no Brasil 
 Prefixos de rádios FM (102,3 MHz) 
 Número de matrícula na UFES 
 URL de páginas Web

Continue navegando