Aula 2 - Análise Léxica
Aula 2 - Análise Léxica
Aula 2 - Análise Léxica
Roteiro de Apresentação
Introdução
História dos compiladores
O que é um compilador?
Fases da compilação
Análise léxica
Introdução
Surgimento:
ligado à história das linguagens de programação,
Que está ligada à história dos computadores modernos
Exemplo de instrução:
Somar o valor dos registradores 1 e 2, e guardar o resultado no registrador 3.
Figura 3. Programa Hello World em assembly x86. Figura 4. Programa Hello World em C.
História dos Compiladores
Compiladores
lê código entrada, gera código de máquina;
Arquivo gerado pode ser executado p/ produzir resultados.
Interpretadores
Lê código entrada e executa o que tá no código.
código interpretação
resultados
fonte
O que é um compilador?
Programa Programa
Fonte COMPILADOR Objeto
(C, Pascal, Java, etc.) Ex.: Ling. de Máquina (assembler),
Ling. de Máquina Virtual (java), Qlqr
outra Linguagem (C).
comunicação
front-end back-end
(fase de análise) Representação intermediária (geração do código)
Depende Depende
exclusivamente exclusivamente
Linguagem Linguagem
fonte objeto
Simplificação de várias LP p/ várias máquinas;
01 front-end p/ cada Linguagem, 01 back-end p/ cada máquina;
Implementar m linguagens em n máquinas:
mfront-ends e nback-ends
em vez de mn compiladores completos
Fases da Compilação
Símbolos:
Palavras reservadas, identificadores de variáveis e procedimentos,
operadores, pontuação, etc
Expressões regulares utilizadas
Scanner >>> Método de elementos finitos
Exemplo: position = initial + rate * 60
<id, 1> <=> <id, 2> <+> <id, 3> <*> <60>
Análise Léxica
const pi = 3.1416
const pi = 3.1416
PADRÕES
regra que descreve o conjunto de lexemas que podem representar um
token
padrão para o token “const” (da figura anterior) é exatamente a
cadeia singela const, que soletra a palavra-chave
Para descrever precisamente os padrões para tokens mais complexos,
como “id” (identificador) e “num” (número), iremos usar a notação de
expressões regulares que veremos mais adiante.
Atributo para os Tokens
CADEIAS E LINGUAGENS
Cadeia: seqüência finita de símbolos do
alfabeto
“Sentença e palavra” = cadeia
Comprimento da cadeia s ( |s| ), é o número
de ocorrências de símbolos em s.
Ex:
banana é uma cadeia de comprimento seis.
A cadeia vazia, denotada , é uma cadeia
especial de comprimento zero.
Especificação dos Tokens
CADEIAS E LINGUAGENS
Linguagem: qualquer conjunto de cadeias sobre algum alfabeto fixo
Linguagens abstratas como Ø, o conjunto vazio, ou { }, o conjunto
contendo apenas somente a cadeia vazia, são linguagens sob essa
definição.
Se x e y são cadeias, então a concatenação de x e y, escrita xy é a
cadeia formada atrelando-se y a x.
Ex: se x = cão e y = casa, então xy = cãocasa.
A cadeia vazia é o elemento identidade da concatenação.
sE = Es = s
Especificação dos Tokens
Obrigado!
[email protected]