|
Micro C Compiler - MCC
|
definições de tipos e funções para a tabela de símbolos. More...
#include "tokens.h"Classes | |
| struct | Simbolo |
| armazena informações sobre um único símbolo (variável, função, etc.). More... | |
| struct | TabelaSimbolos |
| representa uma tabela de símbolos para um único escopo. More... | |
| struct | PilhaTabelasSimbolos |
| representa a pilha de tabelas de símbolos para controle de escopo. More... | |
Macros | |
| #define | MAX_SIMBOLOS 100 |
| #define | MAX_PARAMETROS 10 |
Functions | |
| PilhaTabelasSimbolos * | criar_pilha_tabelas () |
| cria e inicializa uma nova pilha de tabelas de símbolos. | |
| void | destruir_pilha_tabelas (PilhaTabelasSimbolos *pilha) |
| libera toda a memória alocada por uma pilha de tabelas. | |
| void | empilhar_tabela (PilhaTabelasSimbolos *pilha) |
| empilha uma nova tabela de símbolos, criando um novo escopo. | |
| void | desempilhar_tabela (PilhaTabelasSimbolos *pilha) |
| desempilha a tabela de símbolos do topo, fechando o escopo atual. | |
| int | adicionar_simbolo (PilhaTabelasSimbolos *pilha, const char *nome, TokenType tipo, int is_function, int is_array, int array_size, int is_parameter) |
| adiciona um novo símbolo à tabela que está no topo da pilha. | |
| Simbolo * | buscar_simbolo_no_escopo_atual (PilhaTabelasSimbolos *pilha, const char *nome) |
| busca por um símbolo apenas na tabela do escopo atual (topo da pilha). | |
| Simbolo * | buscar_simbolo_em_todos_escopos (PilhaTabelasSimbolos *pilha, const char *nome) |
| busca por um símbolo em todas as tabelas, do escopo atual para o global. | |
definições de tipos e funções para a tabela de símbolos.
este arquivo define as estruturas de dados para a tabela de símbolos, que é usada para armazenar informações sobre os identificadores (variáveis, funções, etc.) encontrados no código fonte. a implementação usa uma pilha de tabelas para gerenciar os escopos.
| #define MAX_PARAMETROS 10 |
| #define MAX_SIMBOLOS 100 |
| int adicionar_simbolo | ( | PilhaTabelasSimbolos * | pilha, |
| const char * | nome, | ||
| TokenType | tipo, | ||
| int | is_function, | ||
| int | is_array, | ||
| int | array_size, | ||
| int | is_parameter | ||
| ) |
adiciona um novo símbolo à tabela que está no topo da pilha.
| pilha | a pilha de tabelas de símbolos. |
| nome | o nome do símbolo a ser adicionado. |
| tipo | o tipo do símbolo (INT, CHAR, etc.). |
| is_function | flag que indica se é uma função. |
| is_array | flag que indica se é um array. |
| array_size | o tamanho do array (se aplicável). |
| Simbolo * buscar_simbolo_em_todos_escopos | ( | PilhaTabelasSimbolos * | pilha, |
| const char * | nome | ||
| ) |
busca por um símbolo em todas as tabelas, do escopo atual para o global.
| pilha | a pilha de tabelas de símbolos. |
| nome | o nome do símbolo a ser buscado. |
| Simbolo * buscar_simbolo_no_escopo_atual | ( | PilhaTabelasSimbolos * | pilha, |
| const char * | nome | ||
| ) |
busca por um símbolo apenas na tabela do escopo atual (topo da pilha).
| pilha | a pilha de tabelas de símbolos. |
| nome | o nome do símbolo a ser buscado. |
| PilhaTabelasSimbolos * criar_pilha_tabelas | ( | ) |
cria e inicializa uma nova pilha de tabelas de símbolos.
aloca memória para a pilha, inicializa o topo e já empilha a primeira tabela, que representará o escopo global.
| void desempilhar_tabela | ( | PilhaTabelasSimbolos * | pilha | ) |
desempilha a tabela de símbolos do topo, fechando o escopo atual.
| void destruir_pilha_tabelas | ( | PilhaTabelasSimbolos * | pilha | ) |
libera toda a memória alocada por uma pilha de tabelas.
| pilha | ponteiro para a pilha a ser destruída. |
| void empilhar_tabela | ( | PilhaTabelasSimbolos * | pilha | ) |
empilha uma nova tabela de símbolos, criando um novo escopo.
| pilha | ponteiro para a pilha onde a nova tabela será adicionada. |