UNIVERSIDADE DO OESTE DE SANTA CATARINA
CAMPUS DE SÃO MIGUEL DO OESTE
CURSO: CIÊNCIAS DA COMPUTAÇÃO
DISCIPLINA: COMPILADORES
PROFESSOR: JOHNI DOUGLAS MARANGON
Analise Semântica
1. Analise semântica
Até o momento vimos a etapa de análise léxica - que quebra o programa fonte em
tokens - e a analise sintática - que validas as regras de formação da linguagem de
programação.
A semântica de um programa está diretamente ligada ao seu significado. A análise
semântica é a terceira etapa do processo de compilação e é nesse memento que ocorre
a validação de verificação de erros semânticos que até então não podem ser verificados
pelas etapas anteriores.
Frase: Não é possível representar em uma gramática livre de contexto uma regra
como "Todo identificador deve ser declarado antes de ser usado", isso resume muito
bem o que deve ser feito na análise semântica.
O analisador semântico utiliza a árvore sintática produzida na etapa de analise
sintática e a tabela de símbolos produzida e incrementada desde o início do processo de
compilação. Toda essa estrutura é utilizada gerar uma arvore de sintática e uma tabela
de símbolos mais elaboradas e adaptada para as próximas etapas que compreendem as
tarefas do back-end do processo de compilação e que tratam da geração do código em
si.
Principais erros semânticos:

Escopo dos identificadores: Deve garantir que variáveis e funções estejam
declaradas em locais que podem ser acessados onde esses identificadores
estão sendo utilizados.
Ex: Em uma classe funções declaradas como privadas estão sendo utilizadas
fora da classe.

Compatibilidade de tipos: Verificar se os tipos de dados declarados a variáveis
e funções estão sendo utilizados e atabuados corretamente, operações com
expressões matemáticas estão o gerando saídas corretas.
Ex: variável declaração como Numérica está recebendo um valor Literal.

O mecanismo de passagem por parâmetro: Também é verificado através
dessas ações semânticas a verificação de tipos dos paramentos e quantidade
de parâmetros.

Detectar unicidade de nomes de identificadores: Por exemplo variáveis com o
mesmo nome no mesmo escopo não deve ser permitido.

Detectar o uso correto de comandos de controle de fluxo: como exemplo
temos os comandos continue e break.
Lembrete: A análise semântica verifica erros semânticos no programa fonte e captura
informações para as fases subsequentes que tratam das gerações do código objeto.
Utiliza a estrutura hierárquica criada na fase de análise sintática a fim de identificar
operadores e operações e enunciados de expressões. Um importante componente da
analise semântica é a verificação de tipos, nela o compilador verifica se cada operador
recebe os operandos permitidos e especificados na linguagem fonte.
Um exemplo que ilustra muito bem essa etapa de validação de tipos é a atribuição de
objetos de tipos ou classe diferentes.
Curiosidade: Em alguns casos, o compilador realiza a conversão automática de um
tipo para outro que seja adequado à aplicação do operador. Por exemplo a expressão
C := 2 + ‘2’;
Veja o exemplo de um código em Object Pascal:
function TForm1.Soma (A, B : Integer) : Integer;
var
C : Integer;
begin
C := A + B;
Result := C;
end;
No exemplo acima o analisador semântico de ter uma series e preocupações para
validar o significado de cada regra de produção.
Vamos utilizar como exemplo a regra de produção de atribuição
C := A + B;

O identificador C foi declarado?

O identificador C é uma variável?

Qual o escopo da variável C?

Qual é o tipo da variável C?

O tipo da variável C é compatível com os demais identificadores,
operadores?
Exemplo de uma arvore semântica
2. Tradução dirigida por sintaxe
Esse processo é implementado associando-se a cada execução de uma regra da
gramatical (execução do analisador sintático) uma ação semântica. Essas ações
semânticas são frequentemente implementadas a chamadas de rotinas semânticas, e
podem ser responsáveis por efetuar a análise semântica, geração de código,
armazenamento de informações na tabela de símbolos.
3. Exercício para entrega
Fazer uma pesquisa sobre a técnica de Tradução Dirigida por Sintaxe e elaborar um
resumo explicando do que se trata essa técnica.
A pesquisa deve incluir:

Definição do que é e como é realizado a Tradução Dirigida por Sintaxe.

Definir o que é uma Definição Dirigida por Sintaxe.

Incluir a referência ao material pesquisado.
Ao final elaborar 3 questões, 1 questão com alternativa verdadeiro e falso e 2 questões
múltipla escolha com 4 alternativas cada.
Esse trabalho deve ser entregado até o final da aula de hoje (31/10/2014).
Será considerado como TAE e ira valer nota com peso 5.
Download

Material de apoio