Compiladores - Análise Léxica

Compiladores - Análise Léxica

(Parte 1 de 3)

Análise Léxica Análise Léxica

Análise Léxica

Papeldoanalisadorléxico:leroarquivo fonte em busca de unidades significativas(os tokens) instanciadas por lexemas ou átomos.

Também denominadode scanner,porque varreo arquivo de entrada eliminando comentáriose caracteres indesejáveis ao agrupar caracteres com umpapel bem definido.

Análise Léxica

A separação da análiseléxicada análise sintática facilitaoprojetoetornaocompilador mais eficiente e portável.

Umanálisador léxicoexecuta tarefas como: 1.contaraslinhasde um programa 2. eliminar comentários

3. contar a quantidadede caracteres de um arquivo 4.tratar espaços

Análise Léxica

Tokens –são padrões de caracteres com um significado específico emum código fonte.

Definida por um alfabeto e um conjunto de definições regulares

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

Análise Léxica qUm mesmo tokenpode ser produzido porvárias cadeias de entradas.

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

qO padrão reconhece as cadeias de tal conjunto, ou seja, reconhece os lexemasque são padrão de um token.

Análise Léxica qUsualmente os padrões são convenções determinadas pela linguagem para formação de classes de tokens.

lidentificadores: letra seguida por letras ou dígitos.

lliteral: cadeias de caracteres delimitadas por aspas. lnum: qualquer constante numérica.

Análise Léxica qOstokensusualmente são conhecidos pelo seu lexema(seqüência de caracteres que compõe um único token) e atributos adicionais.

tuplasna forma <a, b,, n> assim a entrada:

qOstokenspodem ser entregues aoparsercomo a = b + 3 qpoderia gerar astuplas:

<id,a> <=, > <id, b> <num, 3> qnote que algunstokensnão necessitam atributos adicionais.

Análise Léxica nReconhece e classifica as palavras (tokens) nTexto de entrada if(x >= y) then y= 42; nCadeia de Tokens reconhecida:

nElimina Tabulações, comentários, etc.

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

Análise Léxica qA declaração C seguinte; intk = 123; qPossui várias subcadeias:

qinté o lexema para um tokentipo palavrareservada.

q=é o lexema para um tokentipo operador. qké o lexema para um tokentipo identificador.

q123é o lexema para um tokentipo número literal cujo atributo valor é 123.

q; é o lexema para um token tipo pontuação.

Análise Léxica

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

Análise Léxica

Quais ostokensque podemserreconhecidos em uma linguagemde marcação comoHTML ?

Comentários<!---->

Tags <html> <body> <table>... Conteúdos Página de teste…

Especiais &eaccute;

Análise Léxica

Lexemaspodem ter atributos como número da linha em quese encontrano código fontee ovalorde uma constantenumérica ouum literal.

Normalmente utiliza-se umúnico atributo queé um apontador paraa Tabelade Símbolosque armazena essas informações em registros.

Análise Léxica

O analisadorléxico simplesmente varrea entrada

(arquivo fonte)em buscadepadrões pertencentes auma linguagem. A única possibilidadedeocorrer erroé aparecerumcaracter quenão pertence ao alfabeto da linguagem.

Na ocorrênciade umerro existem duas possibilidades, ou o projetista realmente esqueceu de incluir o caracter no alfabeto ou realmenteo usuário utilizou algum caracter quenão pertence ao alfabeto da linguagem.

Análise Léxica

Na ocorrênciade erros oanalisadorléxico pode parar ou entrar emlaço infinito. Amodalidadede pânico podeserusada para recuperar erros léxicos ignorando os caracteres inválidosaté encontrar algum que pertença ao alfabeto ou o fim do arquivo.

Outras formasderecuperar erros:

1. removercaracteres estranhos 2.inserir caracteres que faltam

3.substituir caracteres incorretos por corretos 4.trocar dois caracteres adjacentes

Bufferização

Tratade técnicas para percorrer arquivosdeentrada quando estes forem muito grandese não houver memória suficiente.

Quando a memóriafor suficiente o arquivo pode ser aberto e percorrido diretamente.

(Parte 1 de 3)

Comentários