A Análise Semântica é a terceira fase do Compilador . A Análise Semântica garante que as declarações e instruções do programa sejam semanticamente corretas. É uma coleção de procedimentos chamados pelo analisador conforme e quando exigido pela gramática. A árvore de sintaxe da fase anterior e a tabela de símbolos são usadas para verificar a consistência do código fornecido. A verificação de tipo é uma parte importante da análise semântica, onde o compilador garante que cada operador tenha operandos correspondentes.

Analisador Semântico:
Ele usa árvore de sintaxe e tabela de símbolos para verificar se o programa fornecido é semanticamente consistente com a definição da linguagem. Ele reúne informações de tipo e as armazena na árvore de sintaxe ou na tabela de símbolos. Essas informações de tipo são subsequentemente usadas pelo compilador durante a geração do código intermediário.

Erros semânticos: os
erros reconhecidos pelo analisador semântico são os seguintes:

  • Tipo incompatível
  • Variáveis ​​não declaradas
  • Uso indevido de identificador reservado

Funções de Análise Semântica:

  1. Verificação de tipo -
    garante que os tipos de dados sejam usados ​​de maneira consistente com sua definição.
  2. Verificação de rótulos -
    um programa deve conter referências de rótulos.
  3. Verificação de controle de fluxo -
    mantém uma verificação de que as estruturas de controle são usadas de maneira adequada. (Exemplo: nenhuma instrução de interrupção fora de um loop)

Exemplo:

float x = 10.1;
float y = x*30; 

No exemplo acima, o número inteiro 30 será projetado para flutuar 30.0 antes da multiplicação, pelo analisador semântico.

Semântica estática e dinâmica:

  1. Semântica estática -
    tem esse nome devido ao fato de que são verificados em tempo de compilação. A semântica estática e o significado do programa durante a execução estão indiretamente relacionados.
  2. Análise Semântica Dinâmica -
    define o significado de diferentes unidades de programa, como expressões e declarações. Eles são verificados em tempo de execução, ao contrário da semântica estática.

Aprenda todos os conceitos do GATE CS com aulas gratuitas ao vivo em nosso canal do youtube.