1. Definição e Papel da Análise Semântica

A análise semântica é a fase em que o compilador verifica se a estrutura sintática (AST) faz sentido dentro das regras da linguagem. Vai além da forma (sintaxe) e assegura a coerência lógica:

Erros típicos:

2. Fluxo de Trabalho

  1. Entrada: Árvore de Sintaxe Abstrata (AST) gerada pelo parser
  2. Visita à AST: percorre nós recursivamente
  3. Consulta à Tabela de Símbolos: obtém atributos de identificadores
  4. Aplicação de Regras Semânticas: testes de tipo, escopo, assinaturas
  5. Anotação da AST: cada nó recebe metadados (tipo, endereço)
  6. Saída: AST anotada pronta para geração de código intermediário

3. Principais Tarefas

Tarefa Descrição
Checagem de Tipos Garante que expressões são usadas corretamente (ex.: int + int → int)
Inference de Tipo Determina tipos em linguagens com tipagem implícita (ex.: inferir auto em C++)
Verificação de Escopo Assegura que cada identificador é definido antes do uso e no escopo correto
Validação de funções Confirma compatibilidade de parâmetros e tipo de retorno
Checagem de Constantes Impede atribuições a identificadores declarados como const
Resolução de Sobreposição Decide qual função/operador sobrecarregado deve ser chamado

4. Exemplo em Python: Simulação de Análise Semântica