Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Compiladores - Análise Léxica, Manuais, Projetos, Pesquisas de Engenharia Informática

Análise Léxica, Bufferização, Erros léxicos, Recuperação de erros léxicos, Especificação de Tokens, Reconhecimento de Tokens, Projeto de Analisador Léxico, Enfoques de Implementação e Projeto de Analisador Léxico.

Tipologia: Manuais, Projetos, Pesquisas

Antes de 2010
Em oferta
40 Pontos
Discount

Oferta por tempo limitado


Compartilhado em 06/04/2009

alanderson-dalmaso-2
alanderson-dalmaso-2 🇧🇷

4.3

(3)

7 documentos

1 / 45

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Análise Léxica
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
Discount

Em oferta

Pré-visualização parcial do texto

Baixe Compiladores - Análise Léxica e outras Manuais, Projetos, Pesquisas em PDF para Engenharia Informática, somente na Docsity!

Papel do analisador léxico : ler o arquivo fonte em busca de unidades significativas (os tokens ) instanciadas por lexemas ou átomos.

Também denominado de scanner , porque varre o arquivo de entrada eliminando comentários e caracteres indesejáveis ao agrupar caracteres com um papel bem definido.

Tokens – são padrões de caracteres com um significado específico em um código fonte. Definida por um alfabeto e um conjunto de definições regulares

Lexemas – são ocorrências de um token em um código fonte, também são chamados de átomos por alguns autores

q Um mesmo token pode ser produzido por várias cadeias de entradas.

q Tal conjunto de cadeias é descrito por uma regra denominada padrão , associada a tais tokens.

q O padrão reconhece as cadeias de tal conjunto, ou seja, reconhece os lexemas que são padrão de um token.

q Os tokens usualmente são conhecidos pelo seu lexema (seqüência de caracteres que compõe um único token ) e atributos adicionais. q Os tokens podem ser entregues ao parser como tuplas na forma <a, b, ..., n> assim a entrada: a = b + 3 q poderia gerar as tuplas: < id ,a> <=, > < id , b> < num , 3> q note que alguns tokens não necessitam atributos adicionais.

n Reconhece e classifica as palavras (tokens)

n Texto de entrada if (x >= y) then y = 42;

n Cadeia de Tokens reconhecida:

n Elimina Tabulações, comentários, etc.

IF LPAREN ID(x) GEQ ID(y) RPAREN THEN ID(y) ASSIGN INT(42) SCOLON

Quais os tokens que podem ser reconhecidos em uma linguagem de programação como C?

palavras reservadas if else while do identificadores operadores relacionais < > <= >= == != operadores aritméticos + * / - operadores lógicos && || & |! operador de atribuição = delimitadores ; , caracteres especiais ( ) [ ] { }

Quais os tokens que podem ser reconhecidos em uma linguagem de marcação como HTML?

Tags

... Comentários Conteúdos Página de teste… Especiais &eaccute;

O analisador léxico simplesmente varre a entrada (arquivo fonte) em busca de padrões pertencentes a uma linguagem. A única possibilidade de ocorrer erro é aparecer um caracter que não pertence ao alfabeto da linguagem.

Na ocorrência de um erro existem duas possibilidades, ou o projetista realmente esqueceu de incluir o caracter no alfabeto ou realmente o usuário utilizou algum caracter que não pertence ao alfabeto da linguagem.

Na ocorrência de erros o analisador léxico pode parar ou entrar em laço infinito. A modalidade de pânico pode ser usada para recuperar erros léxicos ignorando os caracteres inválidos até encontrar algum que pertença ao alfabeto ou o fim do arquivo.

Outras formas de recuperar erros:

  1. remover caracteres estranhos
  2. inserir caracteres que faltam
  3. substituir caracteres incorretos por corretos
  4. trocar dois caracteres adjacentes

Bufferização

Em alguns momentos pode ser necessário que o analisador léxico precise examinar alguns caracteres a frente de um token antes de o reconhecer.

O movimento para frente e para trás no arquivo fonte pode consumir um certo tempo. Para tornar o analisador léxico mais rápido podem ser utilizados buffers em memória principal.

Bufferização

q É muito conveniente que a entrada seja

buferizada, i.e., que a leitura da entrada seja

fisicamente efetuada em blocos enquanto que

logicamente o analisador léxico consome

apenas um caractere por vez.

q A buferização facilita os procedimentos de

devolução de caracteres.

Erros léxicos

q Ainda assim o analisador léxico pode não

conseguir prosseguir dado que a cadeia

encontrada não se enquadra em nenhum dos

padrões conhecidos.

q Para permitir que o trabalho desta fase

prossiga mesmo com a ocorrência de erros

deve ser implementada uma estratégia de

recuperação de erros.

Recuperação de erros léxicos

q Ações possíveis:

(1) remoção de sucessivos caracteres até o reconhecimento de um token válido (modalidade pânico). (2) inserção de um caractere ausente. (3) substituição de um caractere incorreto por outro correto. (4) transposição de caracteres adjacentes.