|
Micro C Compiler - MCC
|
implementação das funções auxiliares para manipulação da árvore sintática abstrata (ast). More...
Functions | |
| ASTNode * | criar_no (NodeType type, int linha) |
| aloca e inicializa um novo nó para a ast. | |
| void | adicionar_filho (ASTNode *pai, ASTNode *filho) |
| adiciona um nó 'filho' a um nó 'pai' na ast. | |
| void | liberar_arvore (ASTNode *no) |
| libera recursivamente toda a memória alocada para uma sub-árvore da ast. | |
implementação das funções auxiliares para manipulação da árvore sintática abstrata (ast).
este arquivo contém a lógica para criar, conectar e destruir os nós da ast. essas funções são a base para que o analisador sintático possa construir a árvore de forma eficiente e para que a memória seja gerenciada corretamente ao final do processo.
adiciona um nó 'filho' a um nó 'pai' na ast.
a função insere o nó filho no final da lista de filhos do nó pai, mantendo a ordem de inserção, que geralmente corresponde à ordem de aparição no código.
| pai | o nó que receberá o novo filho. |
| filho | o nó a ser adicionado como filho. |
aloca e inicializa um novo nó para a ast.
| type | o tipo do nó a ser criado (da enumeração NodeType). |
| linha | a linha do código fonte correspondente a este nó. |
| void liberar_arvore | ( | ASTNode * | no | ) |
libera recursivamente toda a memória alocada para uma sub-árvore da ast.
esta função deve ser chamada no nó raiz da árvore para limpar toda a memória utilizada pela ast ao final da compilação. ela navega em pós-ordem para garantir que os filhos sejam liberados antes dos pais.
| no | o nó raiz da sub-árvore a ser liberada. |