Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução à Análise Sintática: Métodos Descendentes e Ascendentes, Notas de aula de Informática

A análise sintática, um processo fundamental no compilador que verifica a boa formação de programas e construí a árvore sintática. Ele discute os métodos descendentes e ascendentes, que diferem na maneira de construir a árvore de derivação para uma cadeia. O texto inclui um exemplo de construção da árvore de derivação usando métodos descendentes e ascendentes, além de uma breve descrição de como as gramáticas ll(1) e lr(1) são utilizadas em análise sintática.

Tipologia: Notas de aula

Antes de 2010

Compartilhado em 01/12/2009

ygor-dos-santos-luz-3
ygor-dos-santos-luz-3 🇧🇷

4.7

(3)

55 documentos

1 / 28

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Este material é baseado nos materiais de autoria da profa. V. Fetrim
Introdução à Análise Sintática
Parte
Este material é baseado nos materiais de autoria da profa. V. Feltrim
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Pré-visualização parcial do texto

Baixe Introdução à Análise Sintática: Métodos Descendentes e Ascendentes e outras Notas de aula em PDF para Informática, somente na Docsity!

Este material é baseado nos materiais de autoria da profa. V. Fetrim

Introdução à Análise Sintática

1ª Parte

Este material é baseado nos materiais de autoria da profa. V. Feltrim

Analisador sintático

  • Analisador sintático ou

parser

  • processo principal do compilador
    • Coordena as outras etapas
      • Funções:
        • Verificar a boa formação do programa: quais

cadeias pertencem à linguagem• Sintaxe, gramática• Construção da árvore sintática do programa: implícita ou

explícita

  • Tratar erros

Análise sintática

-^

Os métodos de análise sintática são classificados em descendentes

(

top-down

) e

ascendentes

(

bottom-up

)

-^

Diferem na maneira pela qual a

árvore de derivação

para uma cadeia x sendo analisada é construída:– Métodos

descendentes

: a árvore de derivação correspondente a

x é construída de

cima para baixo

, ou seja, da raiz (o símbolo

inicial S) para as folhas, onde se encontra x

  • Métodos

ascendentes

: a árvore de derivação correspondente a

x é construída de

baixo para cima

, ou seja, das folhas, onde se

encontra x, para a raiz, onde se encontra o símbolo inicial S

Análise sintática

•^

Métodos descendentes (

top-down

  • temos que decidir qual a regra A

→ β

a ser aplicada a

um nó rotulado por um não-terminal A. A

expansão

de A é feita criando nós filhos rotulados com ossímbolos de

β

•^

Métodos ascendentes (

bottom-up

  • temos que decidir quando a regra A

→ β

deve ser

aplicada e devemos encontrar nós vizinhos rotuladoscom os símbolos de

β

. A

redução

pela regra A

→ β

consiste em acrescentar à árvore um nó A, cujosfilhos são os nós correspondentes aos símbolos de

β

Exemplo

-^

Considere a seguinte gramática1.^

E

E + T

E

T

T

T * F

T

F

F

( E )

F

a

e a cadeia x =

a+a*a

Construção da árvore de derivação de xusando-se um método

descendente

Note que asregras sãoconsideradasna mesmaordem em queas regrasseriam usadasem umaderivação àesquerda

E^

E + T E^

T T^

T * F T^

F F^

( E ) F^

a

Análise Sintática

•^

Embora a árvore de derivação seja usada paradescrever os métodos de análise, na prática elanão precisa ser efetivamente construída

-^

A única estrutura de dados necessária para oprocesso de análise sintática é uma

pilha

  • Guarda informação sobre os nós da árvore de

derivação relevantes em cada fase do processo

Análise descendente

•^

A representação do processo será feita atravésde configurações

αααα

, y)

αααα

e

y

representam, respectivamente, o conteúdo da

pilha e o

resto

da entrada ainda não analisada

•^

Por convenção, vamos supor que

o topo da

pilha fica à esquerda^ – o primeiro símbolo de

é o símbolo do topo da pilha

Configurações sucessivas de umanalisador descendente para a cadeia x

Topoda pilha

Análise descendente

  • Por enquanto, nada foi dito sobre a forma

de escolha da regra a ser aplicada

  • Isso será objeto de estudo quando

falarmos dos diferentes métodos deanálise descendente– Gramáticas LL(1)

Análise ascendente

-^

Duas formas de transição de uma configuração paraoutra:–

redução regra

A

→→→→ β

βββ

-^

permite passar da configuração (

βα

, y) para a configuração (A

α, y)

-^

empilhamento ou deslocamentos de um terminal

a

-^

permite passar da configuração (

α, ay) para a configuração (a

α, y)

  • serve para retirar terminais da entrada e colocá-lo no topo da pilha -^

Configuração inicial:

(

, x)

-^

a pilha está vazia e x é cadeia a ser analisada

-^

Configuração final:

(S,



)

-^

cadeia toda considerada e reduzida para S

Configurações sucessivas de umanalisador ascendente para a cadeia x

Topo

a- (tabular)

Análise sintática

•^

Vimos uma idéia geral sobre a análise sintáticadescendente e ascendente

-^

Começaremos pelo métodos descendentes

-^

Diferentes métodos de análise sintáticadescendente (ASD)– Com retrocesso– Preditiva

  • recursiva• não-recursiv

ASD com retrocesso

•^

Método de tentativa e erro

-^

Características:– Exploratório: tenta todas as possibilidades– Ineficiente

-^

Funcionamento:– A cada passo, escolhe uma regra e aplica– Se falhar em algum ponto, retrocede e escolhe uma

outra regra

  • O processo termina quando a cadeia é reconhecida ou

quando as regras se esgotaram e a cadeia não foireconhecida