




















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
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
1 / 28
Esta página não é visível na pré-visualização
Não perca as partes importantes!





















Este material é baseado nos materiais de autoria da profa. V. Fetrim
Este material é baseado nos materiais de autoria da profa. V. Feltrim
cadeias pertencem à linguagem• Sintaxe, gramática• Construção da árvore sintática do programa: implícita ou
explícita
-^
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
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
Métodos descendentes (
top-down
→ β
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
→ β
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
β
-^
a
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
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
derivação relevantes em cada fase do processo
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
Topoda pilha
-^
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)
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
Topo
a- (tabular)
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
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
quando as regras se esgotaram e a cadeia não foireconhecida