Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRicardo Bernardino Alterado mais de 10 anos atrás
1
IV – Análise semântica DEI Associação de regras semânticas a produções
Bibliografia aconselhada: Aho, Sethi e Ullman – capítulo 5.1 a 5.4 Jorge Morais LFA 1999/
2
Tradução orientada pela sintaxe
DEI Existem duas formas de associar regras semânticas a produções Definições orientadas pela sintaxe (gramática de atributos): especificações de alto nível para traduções Esquemas de tradução: indicam a ordem de avaliação das regras semânticas Jorge Morais LFA 1999/
3
Gramática de atributos
DEI Gramática independente de contexto onde cada símbolo gramatical (nó na árvore de derivação) tem associado um conjunto de atributos Estes atributos podem ser: Sintetizados: valor obtido a partir dos filhos Herdados: valor obtido a partir do pai ou outros descendentes deste Os atributos podem ser qualquer coisa: número, tipo, endereço de memória, etc... Jorge Morais LFA 1999/
4
Exemplo – calculadora DEI PRODUÇÃO REGRA SEMÂNTICA L E ‘\n’
Print(E.val) E E1 + T E.val=E1.val+T.val E T E.val=T.val T T1 * F T.val=T1.val*F.val T F T.val=F.val F ( E ) F.val=E.val F INT F.val=INT.val Jorge Morais LFA 1999/
5
Exemplo – declaração de variável
DEI PRODUÇÃO REGRA SEMÂNTICA D T L L.herd = T.tipo T int T.tipo=inteiro T real T.tipo=real L L1 , ID L1.herd=L.herd ad_tipo(ID.entr,L.herd) L ID Jorge Morais LFA 1999/
6
Esquemas de tradução DEI
Gramática independente de contexto onde existem atributos associados aos símbolos gramaticais e as acções semânticas são colocadas entre chavetas O valor do atributo tem que estar disponível quando for usado Jorge Morais LFA 1999/
7
Exemplo – calculadora DEI L E ‘\n’ { Print(E.val) }
E E1 + T { E.val = E1.val+T.val } E T { E.val = T.val } T T1 * F { T.val = T1.val*F.val } T F { T.val = F.val } F ( E ) { F.val = E.val } F INT { F.val = INT.val } Jorge Morais LFA 1999/
8
Exemplo – declaração de variável
DEI D T {L.herd = T.tipo} L T int {T.tipo = inteiro} T real {T.tipo = real} L {L1.herd = L.herd} L1 , ID { ad_tipo(ID.entr,L.herd) } L ID { ad_tipo(ID.entr,L.herd) } Jorge Morais LFA 1999/
9
Exemplo – notação posfixa
DEI E T E’ E’ + T { Print(‘+’) } E’ | T F T’ T’ * F { Print(‘*’) } T’ | F INT { Print(INT.val) } | ( E ) Jorge Morais LFA 1999/
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.