Академический Документы
Профессиональный Документы
Культура Документы
GRAMTICAS
Compiladores
Departamento de Computao
UEPB
Parser
2
ANLISE SINTTICA
3
ANLISE SINTTICA
Analisador Analisador
Lxico Sinttico
Cdigo-
=
fonte
Identificador : a
a 42
Igualdade : =
Numeral : 42
4
ANLISE SINTTICA
Programa
if (i == j)\n\tz = 0;\nelse\n\tz = 1;
Tokens
rvore?
5
ANLISE SINTTICA
7
ANLISE SINTTICA
8
ANLISE SINTTICA
Quais das cadeias abaixo esto na gramtica
dada?
9
Como definida formalmente esta gramtica?
ANLISE SINTTICA
10
ANLISE SINTTICA
11
ANLISE SINTTICA
Ambiguidade
Podemos ter vrias derivaes para a mesma cadeia
w, mas todas devem gerar a mesma rvore sinttica
A estrutura do programa definida pela rvore
sinttica!
Diferena entre rvores sintticas geradas por
derivaes mais esquerda e mais direita so
esperadas
12
ANLISE SINTTICA
Ambiguidade
Podemos ter duas rvores sintticas diferentes para a
cadeia num * num + num
13
ANLISE SINTTICA
Ambiguidade
Primeira rvore sinttica: comece aplicando a
produo 2 da gramtica;
Segunda rvore sinttica: comece aplicando a
produo 3 da gramtica.
14
ANLISE SINTTICA
Ambiguidade
Gramtica ambgua se existe mais de uma derivao
esquerda para a mesma cadeia
Da mesma forma para a derivao direita
Ambiguidade leva a interpretaes no equivalentes
entre diferentes compiladores
15
ANLISE SINTTICA
Ambiguidade
Como corrigir a ambiguidade da gramtica do slide
13?
Verificar precedncia de operadores
* tem precedncia sobre +
16
ANLISE SINTTICA
Ambiguidade
Correo de ambiguidade na gramtica do slide 13
S -> E
E -> E + T
E -> T
T -> T * F
T -> F
F -> ( E )
F -> num
17
ANLISE SINTTICA
Ambiguidade
Adicione as operaes subtrao, diviso e
exponenciao gramtica abaixo, respeitando suas
ordens de precedncia e associatividade:
S -> E
E -> E + T
E -> T
T -> T * F
T -> F
F -> ( E )
F -> num
18
ANLISE SINTTICA
21