Micro-fundamentos - Compiladores
  • Microfundamentos Compiladores
  • COMO CONTRIBUIR
  • FTC
    • Autômato finito determinístico
    • Expressões regulares
    • Gramáticas
      • Expressões regulares juntos as gramáticas
  • Introdução a Compiladores - conceitos principais e primeiros passos
    • Visão geral e conceitos principais
    • Definindo a linguagem que queremos criar
    • Criando a base do Compilador
  • Front-End - Fase da Vanguarda e Tabela de Símbolos
    • Tabela de Simbolos
      • Teoria
      • Implementação
    • Analisador Léxico
      • Teoria
      • Implementação
    • Analisador Sintático
      • Teoria
      • Gramática LL(1)
      • Implementação
    • Analisador Semântico
      • Teoria
      • Implementação
  • Middle-End - Geração de Código intermediário e Otimização
    • Geração de Código Intermediário
      • Teoria
      • Implementação
    • Otimização de Código
      • Teoria
      • Implementação
  • Back-End - Geração de Código Assembly e Ambientes em Tempo de Execução
    • Geração de Código
      • Teoria
      • Implementação
    • Ambientes em Tempo de Execução
      • Teoria
Powered by GitBook
On this page
  • Analisador Semântico - a terceira fase da Vanguarda
  • O que você vai aprender...
  • Definição e exemplo
  • Possíveis erros
  • Links úteis
  1. Front-End - Fase da Vanguarda e Tabela de Símbolos
  2. Analisador Semântico

Teoria

Analisador Semântico - a terceira fase da Vanguarda

Atenção ⚠️! Ainda em construção 👷....

O que você vai aprender...

  • O que é o Analisador Semântico

  • Como funciona a Analise Semântica

  • Qual a importância da Análise Semântica

Definição e exemplo

A análise semântica é a terceira fase da compilação, no qual um compilador verifica o significado das declarações e frases que estão sendo compiladas e garante que estas estejam semanticamente corretas. Isso inclui verificar itens como erros de tipo, variáveis não declaradas e outros problemas que podem afetar o significado do programa.

Durante a análise semântica, a tabela de símbolos será frequentemente utilizada pois é esta que irá permitir que o compilador controle os nomes e tipos dos tokens e garanta que sejam usados corretamente.

Por exemplo, considere o seguinte código na linguagem C:

int main() {
  int x = y + z;
  return 0;
}

Durante a análise semântica, o compilador verificaria se as variáveis y e z foram declaradas e se possuem os tipos corretos. Se alguma dessas variáveis não tiver sido declarada, ou se tiverem o tipo errado, o compilador reportará um erro.

A análise semântica é normalmente realizada após a análise léxica e sintática, pois esta é feita em cima da árvore sintâtica feita pelo parser, e é uma etapa importante para garantir que o programa que está sendo compilado esteja bem formado e possa ser executado corretamente.

Possíveis erros

A análise semântica é responsável por verificar a correção semântica do código, ou seja, se ele está de acordo com as regras da linguagem de programação. Abaixo, estão alguns exemplos de erros que a análise semântica pode reportar em um código escrito em C:

Utilização de uma variável não declarada

A análise semântica pode reportar um erro se uma variável for usada antes de ser declarada. Por exemplo:

x = 5; // x não foi declarado
int x;

Neste caso, a análise semântica irá detectar que a variável x foi usada antes de ser declarada.

Uso de tipos de dados incompatíveis

A análise semântica pode detectar um erro se houver uma operação entre tipos de dados incompatíveis, ou se uma variável de um tipo de dado recebeu a atribuição de um outro tipo de dado. Por exemplo:

int x = 5;
char y = 'a';
int z = x + y; // erro de tipos incompatíveis (operação entre tipo de dados incompatíveis)

Neste caso, a análise semântica irá detectar que os tipos de dados int e char não são compatíveis na operação de soma.

Links úteis

PreviousAnalisador SemânticoNextImplementação

Last updated 2 years ago

Compiladores para humanos - Análise Semântica
Análise Semântica - Vídeo do "Aulas de Computação"
Aula 10 - Análise Semântica - Judson Santiago