Buscar

Aula 3 - Análise Léxica

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 21 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 21 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 21 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

Prof. Ricardo Mesquita
Análise Léxica
Analisador Léxico
 Scanner
 Função: fazer a leitura do código fonte, caractere a caractere, 
e traduzi-lo para uma sequência de símbolos léxicos 
 Trata-se de um processo de reconhecimento
 Palavras da linguagem = símbolos léxicos = tokens
 A sequência de tokens produzida é utilizada como entrada 
pelo analisador sintático 
02/20Prof. Ricardo Mesquita
Gramática
 É um mecanismo para gerar as sentenças (ou mesmo as 
palavras) de uma linguagem e é definida pela quádrupla:
G = (N, T, P, S)
onde:
N = conjunto dos símbolos não terminais
T = conjunto dos símbolos terminais
P = conjunto das regras de produção (ou regras sintáticas)
S = símbolo inicial da gramática (S  N)
03/20Prof. Ricardo Mesquita
Regras de Produção
 Definem o mecanismo de geração de sentenças da linguagem
 São representadas da forma:
 
Uma sequência de regras da forma 
 1,  2, ... ,  n,
pode ser representada da forma
 1| 2| ... | n,
 A aplicação sucessiva de regras de produção, a partir do símbolo 
inicial da gramática, permite derivar as sentenças válidas da 
linguagem representada pela gramática.
04/20Prof. Ricardo Mesquita
Derivação
 Uma derivação é um par da relação denotada por , com 
domínio em (N T)* e contradomínio em (N T)*, e é 
representado da forma  
 As sequências  e  são chamadas formas sentenciais
 A relação  é definida como:
➢ Para produções da forma S  (sendo S o símbolo inicial de G), tem-se 
que S 
➢ Para todo  , onde  = x y z, se y t é uma regra de P, então 
 x t z,
05/20Prof. Ricardo Mesquita
Derivação
 Portanto, uma derivação é a substituição de uma sequência de 
símbolos numa forma sentencial, de acordo com uma regra 
de produção
 Derivações sucessivas
 + uma ou mais derivações sucessivas
 * zero ou mais derivações sucessivas
06/20Prof. Ricardo Mesquita
Linguagem Gerada
 A Linguagem Gerada por G, denotada por L(G), é o conjunto 
formado por todas as sentenças de símbolos terminais 
deriváveis a partir do símbolo inicial S, ou seja
L(G) = { s | s T* e S + s }
07/20Prof. Ricardo Mesquita
Algumas Convenções
 Representação de terminais, não-terminais e formas sentenciais:
 Terminais:
 Letras minúsculas
 Operadores (+, -, * ...)
 Símbolos de pontuação
 Dígitos
 Cadeias de terminais que representam palavras reservadas (if, else, while etc.)
 Não-terminais:
 Letras maiúsculas
 Qualquer string delimitada por < e >
 Formas sentenciais (sequências de terminais e não-terminais):
 Letras minúsculas do alfabeto grego
08/20Prof. Ricardo Mesquita
Gramática Regular
 Uma gramática que tenha produções exclusivamente da 
forma A  wB ou A  w, onde w T* e A, B  N, é 
classificada como gramática regular
 Uma gramática assim definida é dita gramática linear à direita
 As gramáticas lineares a esquerda, cujas produções são da forma
A  Bw ou A  w, são também regulares
 Exemplo: gramática que gera identificadores
G = (N, T, P, I)
N = {I, R}
T = {l, d}
P = {I  l | lR, R lR |dR | l | d}
09/20Prof. Ricardo Mesquita
Gramática Regular
 No exemplo, “ l ” representa “letra” e “ d ” representa dígito. 
 No contexto da gramática definida no exemplo, temos que
 teste é uma palavra definida pelas regras da gramática
I
l R
t l R
l R
l R
l
e
s
t
e
G = (N, T, P, I)
N = {I, R}
T = {l, d}
P = {I  l | lR
R  lR |dR | l | d}
10/20Prof. Ricardo Mesquita
Autômatos Finitos
 Reconhecem as linguagens regulares
 Linguagens regulares são geradas por gramáticas regulares
 São constituídos basicamente de:
 Uma fita de entrada
 Uma unidade de controle
 Uma função de transição
11/20Prof. Ricardo Mesquita
Autômatos Finitos
 Um autômato finito M sobre um alfabeto  é uma 5-upla 
( K, , , e0, F ), onde:
 K é um conjunto finito de estados
  é um alfabeto dos símbolos da linguagem
 : K   K é a função de transição de estados
 e0 é o estado inicial
 F é o conjunto de estados finais
Obs:  é uma função parcial, ou seja, não precisa estar definida 
para todos os pares K  
12/20Prof. Ricardo Mesquita
Autômatos Finitos
 Formas de representação:
 Por listagem
 Por tabela de transição
 Por grafo de estados
13/20Prof. Ricardo Mesquita
Autômato Finito
 Exemplo: vamos considerar uma gramática simples capaz de gerar 
números inteiros e números reais:
G = (N, T, P, S)
N = {I, J, R}
T = {. , d}
P = {I  –dI | +dI | J
J  dJ | .dR | 
R  dR |  }
14/20Prof. Ricardo Mesquita
Autômatos Finitos
 Exemplo: vamos considerar uma gramática simples capaz de gerar 
números inteiros e números reais:
G = (N, T, P, S)
N = {I, J, R}
T = {. , d}
P = {I  –dI | +dI | J
J  dJ | .dR | 
R  dR |  }
e0 e1
e2
e3 e4
d
d d
d
d+ | –
.
Grafo de Estados
Listagem:
(e0, d) = e1,
(e0, +) = e2,
(e0, –) = e2,
(e2, d) = e1,
(e1, d) = e1,
(e1, .) = e3,
(e3, d) = e4,
(e4, d) = e4,
 d . + –
e0 e1 e2 e2
e1 e1 e3
e2 e1
e3 e4
e4 e4
Tabela de Transições
15/20
Expressões Regulares
 Uma expressão regular r, sobre um conjunto de símbolos T, 
representa uma linguagem L(r), a qual pode ser definida 
indutivamente a partir de expressões básicas, como segue:
  representa a linguagem vazia (com zero palavras)
 {  } representa a linguagem cuja única palavra é a palavra vazia
 { x | x T } representa a linguagem cuja única palavra é x
 Se r1 e r2 são expressões regulares definindo as linguagens L(r1) 
e L(r2), tem-se que:
 r1 | r2 é a linguagem { vw | v  L(r1) e w  L(r2) }, isto é, a linguagem 
cujas palavras são formadas pela concatenação de uma palavra de L(r1) 
com uma palavra de L(r2), nesta ordem
 r1* representa o conjunto L
*(r1), isto é, o conjunto de palavras que 
podem ser formadas concatenando-se zero ou mais palavras de L(r1)
16/20Prof. Ricardo Mesquita
Expressões Regulares
 Exemplos de expressões regulares:
 d(d)*  representa o conjunto dos números naturais
 [+|]d(d)*  representa o conjunto dos números inteiros
 [+|]d(d)*.d(d)*  representa o conjunto dos números reais
 l(l|d)*  representa o conjunto dos identificadores de uma LP
17/20Prof. Ricardo Mesquita
Tokens
 São símbolos léxicos (palavras da linguagem)
 São as unidades básicas do texto de um programa
 Carregam três informações:
 Classe do token
 Valor do token
 Posição do token
18/20Prof. Ricardo Mesquita
Tabela de Símbolos
 Estrutura de dados gerada pelo compilador com o objetivo 
de armazenar informações sobre os nomes definidos no 
programa fonte.
 Associa atributos aos nomes definidos pelo programador.
 Começa a ser construída na Análise Léxica.
 Cada entrada na tabela de símbolos está relacionada com a 
declaração de um nome.
19/20Prof. Ricardo Mesquita
Exercício
 Defina um autômato finito e a gramática regular equivalente 
que reconheça/gere constantes numéricas em Pascal, cujo 
formato é:
[ + | – ] d( d )* [ . d( d )* ] [ E [ + | – ] d( d )* ] 
Onde:
d : representa um dígito {0, 1, ..., 8, 9}
[ x ] : significa que x é opcional
| : significa alternativa
20/20Prof. Ricardo Mesquita
Dúvidas?

Continue navegando