analisadores léxicos

Propaganda
Introdução –
parte I
Compiladores
Mariella Berger
Sumário
•
•
•
•
•
O que é um compilador?
Aplicações de um compilador.
Modelo de compilação.
Analisador léxico.
Analisador sintático
O Que é um Compilador?
•
Um compilador é um programa que recebe
um programa escrito em uma linguagem fonte
e o traduz em um programa equivalente
escrito em uma linguagem destino.
•
Os programas fonte e alvo têm o mesmo
significado.
O que é um Compilador?
Programa
Fonte
COMPILADOR
Mensagens
de Erro
Programa
Alvo
Aplicações de um Compilador
•
Técnicas usadas em analisadores léxicos podem ser
usadas em editores de texto, sistema de recuperação de
informação e reconhecimento de padrões.
Aplicações de um Compilador
•
Técnicas usadas em analisadores sintáticos (parsers)
podem ser usadas em processamento de consultas tais
como SQL.
Modelo de Compilação
•
Há duas grandes fases de um compilador: Análise
e Síntese.
•
Na fase de análise, uma representação
intermediária é criada a partir do programa fonte:
•
•
Analisador léxico, sintático e semântico.
Na fase de síntese, o programa alvo é criado a
partir da representação intermediária:
•
Gerador de código intermediário, otimizador de
código e gerador de código final.
As fases de um Compilador
Análise Léxica
Análise Sintática
ANÁLISE
Análise Semântica
Gerador de Código
Intermediário
Otimizador de
Código
Gerador de Código
SÍNTESE
Analisador Léxico
•
O analisador léxico lê o programa fonte
(caractere por caractere) e retorna os tokens
formadores deste;
•
Um token descreve um padrão de caracteres
tendo algum significado no programa fonte:
•
•
•
•
•
Identificadores
Operadores
Palavras chave
Números
Delimitadores, etc
Análise Léxica
montante := deposito_inicial + 60;
montante
Identificador
:=
Símbolo de atribuição
deposito_inicial
Identificador
+
Símbolo de adição
60
Número
;
Símbolo ponto e vírgula
Analisador Léxico
•
Insere informação sobre identificadores na
tabela de símbolo.
•
Expressões regulares são usada para descrever
tokens (lexical constructs).
•
Um autômato finito (determinístico) pode ser
usado na implementação de um analisador
léxico.
Analisador Sintático
•
Análise hierárquica é chamada de análise
gramatical ou análise sintática.
•
Envolve os tokens do programa fonte em frases
gramaticais representadas por uma árvore
gramatical.
•
Analisador cria uma estrutura sintática
(geralmente uma árvore) de um dado
programa. Um analisador sintático é também
chamado de parse.
Análise Sintática
montante := deposito_inicial + 60;
Considere a gramática:
atribuição -> identificador := expressão ;
expressão -> identificador
expressão -> número
expressão -> expressão + expressão
Análise Sintática
atribuição
identificador
:=
expressão
;
montante
expressão
+
expressão
identificador
numero
deposito_inicial
60
Analisador Léxico x Sintático
•
Quais construções de um programa devem ser
reconhecidas por um analisador léxico e quais
pelo analisador sintático?
•
O analisador léxico reconhece as menores
unidades significativas (tokens) no programa
fonte, no entanto não é suficiente para analisar
expressões e enunciados.
Analisador Léxico x Sintático
Analisador Léxico x Sintático
Analisador Léxico x Sintático
Download