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
  • Implementando a Tabela de Simbolos
  • Você vai aprender...
  • Pré-requisitos
  • Implementando em código
  • Links úteis
  1. Front-End - Fase da Vanguarda e Tabela de Símbolos
  2. Tabela de Simbolos

Implementação

PreviousTeoriaNextAnalisador Léxico

Last updated 2 years ago

Implementando a Tabela de Simbolos

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

Você vai aprender...

  • Como implementar a Tabela de Símbolos usando Hash

Pré-requisitos

Implementando em código

Aqui nos iremos dar uma pequena olhada em como iremos implementar a Tabela de Símbolos para ser usada na nossa linguagem de programação "X". Para o nosso caso irei usar uma tabela hash. Já querendo deixar claro isto, mas esta não é a única maneira de implementar uma Tabela de Símbolos, mas esta é uma das mais comuns, devido ao fato que você pode usá-la para inserir, procurar e deletar itens de forma bem rápida e eficiente.

Como estaremos utilizando C++, iremos utilizar a classe da biblioteca padrão do C++. Essa classe é muito boa para o nosso caso de uso, já que as chaves não serão armazenadas de forma ordenada (pois não precisamos dos símbolos estarem ordenados) logo diminuindo a complexidade da estrutura, com um tempo de busca O(1).

Links úteis

Introdução a Compiladores
Teoria-Tabela de Símbolos
unordered_map
Slides de Compiladores da UFMG(pg 20-32)
Compiladores | Aula 08 - Tabela de Símbolos | Escopos | Blocos Aninhados | Implementação