Compiladores
Análise Léxica
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.
Análise Léxica
A separação da análise léxica da análise sintática facilita o projeto e torna o compilador mais eficiente e portável.
Um análisador léxico executa tarefas como:
1. contar as linhas de um programa
2. eliminar comentários
3. contar a quantidade de caracteres de um arquivo
4. tratar espaços
Análise Léxica
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
Análise Léxica q q
q
Um mesmo token pode ser produzido por várias cadeias de entradas.
Tal conjunto de cadeias é descrito por uma regra denominada padrão, associada a tais tokens.
O padrão reconhece as cadeias de tal conjunto, ou seja, reconhece os lexemas que são padrão de um token. Análise Léxica q Usualmente 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
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 assim a entrada: a=b+3 q poderia gerar as tuplas: q note que alguns tokens não necessitam atributos adicionais. q
Análise Léxica
Reconhece e classifica as palavras (tokens) n Texto de entrada n if (x >= y) then y = 42;
n
Cadeia de Tokens