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:
| 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 |