Escolar Documentos
Profissional Documentos
Cultura Documentos
RES
ROBERTO TENORIO FIGUEIREDO
www.osfedera.com
tenorio.petrolina@bol.com.br
ANLISE
SEMNTICA
(TRADUO DIRIGIDA POR
SINTAXE)
ROBERTO TENORIO FIGUEIREDO
www.osfedera.com
tenorio.petrolina@bol.com.br
CONCEITO
Tcnica de especificao de compiladores
tradutores que permite associar aes
semnticas s regras da gramtica.
Essa tcnica utilizada em quase todos os
compiladores modernos.
Forma simples de definio semntica, mas
no a nica.
aplicaes!
Aes e Atributos
Uma ao tambm chamada de regra
semntica e geram rotinas para navegar na
parse tree.
Conceitualmente, aes criam e associam
atributos aos ns da rvore sinttica.
O processo de avaliao dos atributos
chamado anotao ou decorao da parse
tree.
Aes e Atributos
A criao feita atravs dos
esquemas de traduo que so
extenses em uma gramtica livre
de contexto.
Atributos sintetizados
Implementao simples: anota-se
parse tree com busca bottom-up
(ps-ordem)
Muito usada na
prtica!
Uma definio Satribudos usa apenas
atributos sintetizados
Exemplo
Produo
Regra semntica
L g E \n
E g E1 + T
EgT
T g T1 * F
TgF
Fg(E)
F g digit
Print E.val
E.val = E1.val + T.val
E.val = T.val
T.val = T1.val * F.val
T.val = F.val
F.val = (E.val)
F.val = digit.lexval
rvore de 3 * 5 + 4
decorada
E.val =
E.val =
T.val =
+ T.val =
F.val =
T.v
F.val =
*
al
F.v
=
al
digit.lexval = digit.lexval =
digit.le
= =
xval
rvore de 3 * 5 + 4
decorada
E.val =
E.val =
T.val =
+ T.val =
F.val =
T.v
F.val =
*
al
F.v
=
al
digit.lexval = 5 digit.lexval = 4
digit.le
= =
xval
3
rvore de 3 * 5 + 4
decorada
E.val =
E.val =
T.val =
T.v
al
F.v
=
al
digit.le
= 3=
xval
3
F.val = 5
*
+ T.val =
F.val = 4
digit.lexval = 5 digit.lexval = 4
rvore de 3 * 5 + 4
decorada
E.val =
E.val =
T.val =
T.v
al
F.v
=3
al
digit.le
= 3=
xval
3
F.val = 5
*
+ T.val = 4
F.val = 4
digit.lexval = 5 digit.lexval = 4
rvore de 3 * 5 + 4
decorada
E.val =
E.val =
T.val = 15
T.v
al
F.v
=3
al
digit.le
= 3=
xval
3
F.val = 5
*
+ T.val = 4
F.val = 4
digit.lexval = 5 digit.lexval = 4
rvore de 3 * 5 + 4
decorada
E.val =
E.val = 15
T.val = 15
T.v
al
F.v
=3
al
digit.le
= 3=
xval
3
F.val = 5
*
+ T.val = 4
F.val = 4
digit.lexval = 5 digit.lexval = 4
rvore de 3 * 5 + 4
decorada
E.val = 19
E.val = 15
T.val = 15
T.v
al
F.v
=3
al
digit.le
= 3=
xval
3
F.val = 5
*
+ T.val = 4
F.val = 4
digit.lexval = 5 digit.lexval = 4
rvore de 3 * 5 + 4
decorada
Note a direo da avaliao
dos
E.val = 19
atributos
E.val = 15
T.val = 15
T.v
al
F.v
=3
al
digit.le
= 3=
xval
3
F.val = 5
*
+ T.val = 4
F.val = 4
digit.lexval = 5 digit.lexval = 4
Atributos herdados
teis para especificar contexto
Por exemplo se um identificador usado
em uma expresso definido no
contexto de uso
tornam-se
mais
Exemplo Declarao de
Tipos
Produo
Regra semntica
DgTL
T
g int
Tg
real
L g L1
, id
LAtributo
g id
L.in = T.type
T.type = integer
T.type = real
L1.in = L.in
addtype(id.entry,
L.in)
type
sintetizado e atribuite
in herdado
DgTL
T g int
Tg
T.type = real
L.in = real
real
L.in = real
L.in = real
id1
,
id2
id3
real
L g L1 , id
Lg
id
L.in = T.type
T.type = integer
T.type = real
L1.in = L.in
addtype(id.entry,
L.in)
T.type = real
real
Direo da
avaliao
do
atributo
type
L.in = real
L.in = real
id1
,
id2
id3
Exerccio
Adicione aes na gramtica abaixo
para construo de rvore sintticas
Eg
Eg
Tg
Tg
Tg
E1 + T
T
(E)
id
num
Funes auxiliares
semnticas:
Exerccio
Produo
Eg
Eg
Tg
Tg
Tg
E1 + T
T
(E)
id
num
Regra semntica
Grafos de Dependncia
Se um atributo b a um n da rvore gramatical
depender de um atributo c, a regra semntica
de c deve ser avaliada antes da regra
semntica de b, ou seja, o atributo b para
ser computado depende do valor do
atributo c.
As dependncias entre valores dos atributos
herdados/sintetizados dos ns de uma rvore
de derivao podem ser representadas em um
grafo denominado grafo de dependncia
Grafos de Dependncia
teis para determinar a ordem de
avaliao dos atributos:
1. Gerar grafo de dependncia
2. Fazer sort topolgico ordenao dos
ns de um grafo acclico dirigido em
que todas as arestas vo de um n
anterior para ns posteriores.
Grafos de Dependncia
Exemplo (soma):
Produo
E -> E1 + E2
Regra Semntica
E.val = E1.val + E2.val
Grafos de Dependncia
Exemplo (declarao de variveis):
Decl
type dtype
var-list dtype
real
Id (x) dtype
Var-list dtype
Id (y) dtype
Grafos de Dependncia
Exemplo (declarao de variveis):
Decl
type dtype
var-list dtype
real
Id (x) dtype
Var-list dtype
Id (y) dtype
Grafos de Dependncia
Exemplo (declarao de variveis):
Decl
type dtype
var-list dtype
real
Id (x) dtype
Var-list dtype
Id (y) dtype
rvore Sinttica
A rvore sinttica uma representao
intermediria que pode ser construda
por definies dirigidas pela sintaxe
Uma rvore sinttica (abstrata) uma
forma condensada da rvore gramatical
na qual:
Operadores e palavras chaves no
aparecem como folhas, mas como ns
interiores da rvore
rvore Sinttica
rvore Gramatical
Condensada
rvore Sinttica
rvore Sinttica
Exerccio: Construir uma rvore
gramatical e uma rvore sinttica
para a produo
S if B then S1 else S2
rvore Sinttica
rvore Sinttica
rvore Sinttica
Exerccio 2: Gere a rvore sinttica e
a estrutura de dados para a
expresso
a4+c
rvore Sinttica
DVIDAS