Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Análise Léxica e Sintática. Tabelas de Símbolos. Esquemas de

No description
by

Antonio Jose F. Andrade

on 9 April 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Análise Léxica e Sintática. Tabelas de Símbolos. Esquemas de

Análise Léxica
Análise Léxica e Sintática. Tabelas de Símbolos. Esquemas de Tradução. Ambientes de Tempo de Execução. Representação Intermediária.
Sumário da aula
Analisador léxico
Exemplo
Introdução à compilação
Exemplos
Etapas gerais do processo de compilação
Conceitos preliminares
Dúvidas?
Professora Jany Cardoso
Conceitos preliminares
Introdução à compilação
Etapas do processo de compilação
Analisador léxico
Função
Reconhecimento de tokens
LINGUAGEM
é o conjunto de
SÍMBOLOS
e
REGRAS
para combinar esses símbolos em
sentenças sintaticamente corretas.

SÍMBOLO
é uma entidade abstrata básica
sem definição formal.

SENTENÇA
é uma seqüência finita de
símbolos.

ALFABETO
é um conjunto finito de símbolos.
Exemplos
Linguagem: Português;
Símbolos: a, b, c, d, e, f, g, h, i, j, l, m, n, o, p, q, r, s, t, u, v, x, z;
Alfabeto: V* = { a, b, c, d, e, f, g, h, i, j, l, m, n, o, p, q, r, s, t, u, v, x, z}.
Sentença: jane, gina, ...

Linguagem:
Binária; Símbolos: 0, 1; Alfabeto: V* = {0, 1}. Sentença: 00, 01, ...
Compilador é um programa responsável por traduzir uma liguagem-fonte para linguagem de máquina, a qual pode ser executada diretamente no computador.
compilador
Analizador Léxico
Analizador Sintático
Analizador Semântico
Gerador de Código intermediário
Otimizador
Gerador de Código
Tabela de símbolos
Tratamento
de Erros
Separa a seqüência de caracteres que representa o programa fonte em entidades ou tokens, símbolos básicos da linguagem.
SOMA := SOMA + 35;
Um
token
consiste de um par ordenado (valor, classe). A classe indica a natureza da informação contida em valor.
Reconhecimento de tokens
Exercícios de revisão - Avaliação
1) É o conjunto de SÍMBOLOS e REGRAS para combinar esses símbolos em sentenças sintaticamente corretas.
( ) LINGUAGEM
2) É um programa responsável por traduzir uma liguagem-fonte para linguagem de máquina, a qual pode ser executada diretamente no computador.
( ) COMPILADOR
3) Uma etapa do compilador responsável por separar a seqüência de caracteres que representa o programa fonte em entidades ou tokens.
( )ANALISADOR LÉXICO
4) consiste de um par ordenado (valor, classe)
( ) TOKEN
Os tokens podem ser classificados
Palavras Reservadas
Identificadores
Símbolos Especiais
exemplos: comando de atribuição, operador aritmético de adição.
Constantes de tipos básicos(inteiro, real etc.).
Comentários
Considerações para a implementação do analisador léxico
Eliminar delimitadores e comentários usados por questões de legibilidade pelo programador.

Ignorar espaços em branco

Implementar estratégias para recuperação e tratamentos de erros léxicos.
Exemplo
Palavra Reservada
Reservadas = if| while|do...
Os números
Dígitos = [0-9]

(a|b)*ab
Ex: aab,aaabbbab, ...


Descreve precisamente a regra de formação de tokens.
Expressões Regulares
Analizador léxico
Autômatos Finitos
Expressões Regulares
usa
usa
Autômatos Finitos
São reconhecedores, eles simplesmente dizem "sim" ou "não" sobre cada possível cadeia de caracteres da entrada.
Exemplo
De acordo com a expressão regular
(a|b)*ab

Ele avalia as seguintes palavras:
ab
ab
= retorna sim
bb
ab
= retorna sim
bb
abb
= retorna não


Representação do autômatos finitos:
0
1
2
início
b
a
b
a
a
b
(a|b)*ab
Outro exemplo
Expressão regular
:
letra = [a-zA-Z]
dígito = [0-9]
identificador = letra(letra|dígito)*
Autômato finito:
0
início
1
letra
letra
dígito
Pseudocódigo
[início estado 0]
if
(próximo caractere for letra)
then
avance entrada;
[estado 1]
while
(próximo caractere for letra ou dígito)
do
avance entrada; [ permanece no estado 1]
end while;
aceitação;
else
[erro ou outros casos]
end if;


ab
ab
= retorna sim
bb
ab
= retorna sim
bb
abb
= retorna não
0
início
1
letra
letra
dígito
fim
fim
fim
1
2
3
4
É o tipo mais simples de reconhecedor de liguagens
Full transcript