|
Micro C Compiler - MCC
|
implementação das funções de gerenciamento da tabela de símbolos. More...
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. | |
implementação das funções de gerenciamento da tabela de símbolos.
contém a lógica para criar, destruir e manipular a pilha de tabelas de símbolos, permitindo a correta gestão de escopos aninhados.
| 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. |