Escolar Documentos
Profissional Documentos
Cultura Documentos
Análise Semântica
– Definição Dirigida por Sintaxe
Projeto de Compiladores – Árvore Sintática
Análise Semântica (Teoria) – Esquema de Tradução
análise léxica
análise sintática
otimizador de código
Semântica: “Relativo ao significado ou ao
gerador de código sentido das unidades lingüísticas .”
Dicionário Houaiss
programa-destino
– Esquemas de tradução
• Indicam a ordem na qual as regras semânticas são
avaliadas
• Detalhes de implementação sejam evidenciados
1
Definição Dirigida por Sintaxe Definição Dirigida por Sintaxe: Ex
É a generalização de uma GLC onde
Produção Regra semântica
cada símbolo possui um conjunto de
L→En print (E.val)
atributos
E → E1 + T E.val = E1.val + T.val
Atributos E→T E.val = T.val
– Variáveis adicionadas aos símbolos de uma T → T1 * F T.val = T1.val * F.val
gramática. T→F T.val = F.val
– Armazenamento de valores durante o F→(E) F.val = E.val
reconhecimento. F → digit F.val = digit.lexval
– Os nós da árvore sintática passam a conter
campos capaz de armazenar valores.
2
Acões Semânticas Gramática de Atributos
Gerar/Interpretar código Definição dirigida pela sintaxe onde as
funções nas regras semânticas não
Armazenar informação na tabela de possuem efeito colateral
símbolos
Efeito colateral
Emitir mensagens de erro – Imprimir valores
– Atualizar um atributo global
* 4
3 5
3
Construção de Árvores Sintáticas DDS para Construir Árvores Sintáticas
Exemplo: Contruir a árvore para a expressão a – 4 + c
Produção Regra semântica
1. p1 = mkleaf(id, entry_a);
E → E1 + T E.nptr = mknode(‘+’, E1.nptr,
2. p2 = mkleaf(num, 4); + T.nptr)
E→T E.nptr = T.nptr
3. p3 = mknode(‘-’,p1,p2);
T→(E) T.nptr = E.nptr
4. p4 = mkleaf(id, entry_c); - id ↑C T → id T.nptr = mkleaf(id,id.entry)
T → num T.nptr = mkleaf(num,num.val)
5. p5 = mknode(‘+’, p3, p4);
num 4
id ↑a
T R
– Ações semânticas são envolvidas entre { } e
inseridas no lado direito das produções
9 {print(9)} R
- T {print(-)}
Entrada: 9 – 5 + 2 5 {print(5)}
+ T {print(+)} R
Saída: 95-2+
2 {print(2)} ε
joaoferreira@fir.br
ilostmy.info