• Nenhum resultado encontrado

Análise Sintática. Instituto Federal de Santa Catarina Campus Lages

N/A
N/A
Protected

Academic year: 2022

Share "Análise Sintática. Instituto Federal de Santa Catarina Campus Lages"

Copied!
29
0
0

Texto

(1)

Instituto Federal de Santa Catarina Campus Lages

Análise Sintática

Curso: Ciência da Computação Disciplina: Compiladores

Prof. Wilson Castello Branco Neto

(2)

Análise Sintática

Leitura recomendada:

AHO, A.; SETHI, R.; ULMAN, J. D. Compiladores:

princípios, técnicas e ferramentas. 2. ed. Rio de Janeiro: Pearson Prentice Hall, 2008. Capítulo 4 (4.4)

Leitura complementar:

COOPER, K. D.; TORCZON, L.; Construindo Compiladores. Rio de Janeiro: Elsevier, 2013.

Capítulo 3 (3.3).

(3)

Análise Sintática

Objetivos de aprendizagem:

Diferenciar análise sintática descendente e ascendente;

Utilizar as funções FIRST e

FOLLOW para criar tabelas de análise;

Analisar códigos usando a análise sintática preditiva.

(4)

Análise Sintática

O analisador sintático recebe a lista de tokens do analisador léxico e verifica se esta cadeia pertence a linguagem

gerada pela gramática.

A ordem de construção da árvore de derivação pode ser da raiz para as folhas (análise descendente) ou vice versa (análise ascendente).

O tipo de gramática que pode ser usada em cada um dos casos é diferente.

(5)

Análise Sintática

Análise sintática descendente:

Sentido: raiz para as folhas;

Tipo de busca: profundidade;

Ordem de análise: pré-ordem;

Produz uma derivação mais a esquerda.

(6)

Análise Sintática

Dada a gramática a seguir, monte a arvore de derivação para o seguinte comando: id + id * id

(7)

Análise Sintática

(8)

Análise Sintática

Problema: qual produção usar para derivar um determinado não terminal.

Principais algoritmos:

Análise sintática de descida recursiva;

Análise sintática preditiva.

(9)

Análise Sintática

Análise de descida recursiva

Testa diferentes produções para derivar um não terminal;

Realiza retrocesso quando uma produção não reconhece uma determinada cadeia;

Não é necessário na análise de linguagens de programação e pouco usado em outras aplicações.

(10)

Análise Sintática

(11)

Análise Sintática

Este procedimento precisa ser repetido e o erro só indica que uma nova produção deve ser tentada (retrocesso).

(12)

Análise Sintática

Dada a gramática a seguir, monte a arvore de derivação usando a

análise de descida recursiva para o seguinte comando: id + id

(13)

Análise Sintática

FIRST -Função que determina o

conjunto de símbolos terminais que

iniciam as cadeias derivadas de um não terminal.

(14)

Análise Sintática

Calcule FIRST dos símbolos não terminais da gramática abaixo.

Se ε for incluído como derivação de F, o resultado será o mesmo?

(15)

Análise Sintática

FOLLOW -Função que determina o conjunto de símbolos terminais que podem aparecer imediatamente à direita de um não terminal.

(16)

Análise Sintática

Calcule FOLLOW dos símbolos não terminais da gramática abaixo.

(17)

Análise Sintática

Gramáticas LL(1)

L – Entrada escaneada da esquerda para a direita;

L – Derivação mais a esquerda da árvore;

1 – Um símbolo a frente é analisado para determinar a produção que deve ser usada para derivar um não terminal.

Gramáticas LL(1) não podem possuir ambiguidades, recursão à esquerda e devem ser fatoradas à esquerda.

(18)

Análise Sintática

(19)

Análise Sintática

Analisador preditivo sem recursão

Usa uma pilha para simular a derivação mais à esquerda;

Possui um buffer de entrada com a cadeia a ser reconhecida (lista de tokens);

Utiliza a tabela de análise para determinar a produção a ser utilizada para cada não terminal, de acordo com o próximo símbolo no buffer de entrada.

(20)

Análise Sintática

(21)

Análise Sintática

(22)

Análise Sintática

Usando a gramática a seguir realize a análise preditiva dos seguintes

comandos:

id + id * id

(id + id * id

(23)
(24)

Análise Sintática

Recuperação de erros em um analisador preditivo

Quando o símbolo na entrada difere do terminal no topo da pilha;

Quando a entrada na tabela para o

símbolo na entrada e o não terminal no topo da pilha leva a um erro.

(25)

Análise Sintática

Modo pânico – caracteres de sincronização

Incluir Follow(A) como caracteres de sincronização do não terminal A;

Símbolos que iniciam construções de nível superior (comando) como caractere de

sincronização das construções de nível inferior (expressão) – Problema do “;”

Usar a produção ε como default para adiar o erro;

Desempilhar o terminal que não casa com a entrada e emitir mensagem de erro.

(26)

Análise Sintática

(27)
(28)

Análise Sintática

Recuperação em nível de frase

Preenche as entradas em branco da tabela do analisador com chamadas a rotinas de erros que inserem, excluem ou substituem símbolos na cadeia de entrada e emitem as mensagens de erro.

(29)

Análise Sintática

Objetivos de aprendizagem:

Diferenciar análise sintática descendente e ascendente;

Utilizar as funções FIRST e

FOLLOW para criar tabelas de análise;

Analisar códigos usando a análise sintática preditiva.

Referências

Documentos relacionados

As IMagens e o texto da Comunicação (com as legendas incluídas) devem ser enviadas por correio eletrônico. Comitê

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

▪ Quanto a solução para os conflitos entre os pais e a escola, houve um grande número de pais que não responderam, o que pode nos revelar que os pais não fizeram

Foram analisados a relação peso-comprimento e o fator de condição de Brycon opalinus, em três rios do Parque Estadual da Serra do Mar-Núcleo Santa Virgínia, Estado de São

O primeiro passo para introduzir o MTT como procedimento para mudança do comportamento alimentar consiste no profissional psicoeducar o paciente a todo o processo,

ao setor de Fisiologia Vegetal do Departamento de Biologia da Universidade Federal de Lavras (UFLA), Minas Gerais, com clones pertencentes ao Instituto Agronômico de Campinas