|
Micro C Compiler - MCC
|
definições das estruturas de dados para a árvore sintática abstrata (ast). More...
Classes | |
| struct | ASTNode |
| estrutura de um nó individual da árvore sintática abstrata (ast). More... | |
Typedefs | |
| typedef struct ASTNode | ASTNode |
| estrutura de um nó individual da árvore sintática abstrata (ast). | |
Enumerations | |
| enum | NodeType { NODE_UNDEFINED , NODE_PROGRAM , NODE_FUNCTION_DEF , NODE_VAR_DECL , NODE_ASSIGN , NODE_IF , NODE_FOR , NODE_RETURN , NODE_PRINT , NODE_CALL , NODE_BINARY_OP , NODE_UNARY_OP , NODE_ID , NODE_INTEGER_CONST , NODE_CHAR_CONST , NODE_STRING_CONST , NODE_BLOCK , NODE_PARAM_LIST , NODE_ARG_LIST , NODE_ARRAY_ACCESS , NODE_TYPE } |
| enumeração de todos os tipos de nós possíveis na árvore sintática abstrata. 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. | |
definições das estruturas de dados para a árvore sintática abstrata (ast).
este arquivo estabelece a fundação para a representação intermediária do código fonte. a ast gerada pelo analisador sintático é a principal estrutura de dados que será consumida pelas fases subsequentes do compilador, como a análise semântica e a geração de código.
estrutura de um nó individual da árvore sintática abstrata (ast).
esta é a estrutura central da ast. cada nó contém seu tipo, ponteiros para formar a hierarquia da árvore (filhos e irmãos) e uma união de dados para armazenar informações específicas, como o valor de uma constante ou o nome de um identificador.
| enum NodeType |
enumeração de todos os tipos de nós possíveis na árvore sintática abstrata.
cada valor nesta enumeração corresponde a uma construção gramatical ou a um elemento léxico da linguagem, permitindo que o analisador semântico identifique e processe cada parte da árvore de forma específica.
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. |