|
Micro C Compiler - MCC
|
programa principal e orquestrador do compilador. More...
#include <stdio.h>#include <string.h>#include <stdbool.h>#include "scanner/scanner.h"#include "parser/parser.h"#include "semantic/semantic.h"#include "ir/ir.h"#include "intercode/intercode.h"#include "assembly/assembly.h"Macros | |
| #define | VERSION "0.1" |
| versao atual do compilador. | |
| #define | PRINT(format, ...) do { if (arquivo) fprintf(arquivo, format, ##__VA_ARGS__); else printf(format, ##__VA_ARGS__); } while(0) |
Functions | |
| void | imprimir_tokens (TokenList *tokens) |
| imprime o conteúdo de uma TokenList no console. | |
| void | salvar_tokens_em_arquivo (TokenList *tokens, bool verbose) |
| salva o conteúdo de uma TokenList no arquivo 'tokens.txt'. | |
| void | imprimir_ast (ASTNode *arvore) |
| imprime a Árvore Sintática Abstrata (AST) no console. | |
| void | salvar_ast (ASTNode *arvore, bool verbose) |
| salva a Árvore Sintática Abstrata (AST) no arquivo 'ast.txt'. | |
| void | imprimir_ir (IR_Instruction *ir_head) |
| imprime a lista de Código Intermediário (IR) de forma legível no console. | |
| void | salvar_ir_em_arquivo (IR_Instruction *ir_head, bool verbose) |
| salva a lista de Código Intermediário (IR) no arquivo 'ir.txt'. | |
| int | executar_analise_lexica (const char *nome_arquivo, TokenList *lista) |
| orquestra a fase de análise léxica. | |
| int | main (int argc, char *argv[]) |
| ponto de entrada principal do compilador. | |
| void | processar_ast_recursivamente (ASTNode *no, int indent_level, FILE *arquivo) |
| função recursiva para imprimir ou salvar a AST de forma legível. | |
programa principal e orquestrador do compilador.
este arquivo contém a função 'main' que controla o fluxo de compilação, invocando as fases de análise léxica, sintática e semântica em sequência. ele também lida com argumentos de linha de comando para permitir a inspeção da saída de cada fase individualmente.
| #define PRINT | ( | format, | |
| ... | |||
| ) | do { if (arquivo) fprintf(arquivo, format, ##__VA_ARGS__); else printf(format, ##__VA_ARGS__); } while(0) |
| #define VERSION "0.1" |
versao atual do compilador.
| int executar_analise_lexica | ( | const char * | nome_arquivo, |
| TokenList * | lista | ||
| ) |
orquestra a fase de análise léxica.
lê o arquivo fonte, gera tokens e adiciona-os à lista. Encerra se encontrar um token UNDEF.
| nome_arquivo | Caminho para o arquivo fonte. |
| lista | Ponteiro para a TokenList onde os tokens serao armazenados. |
| void imprimir_ast | ( | ASTNode * | arvore | ) |
imprime a Árvore Sintática Abstrata (AST) no console.
| arvore | O nó raiz da AST. |
| void imprimir_ir | ( | IR_Instruction * | ir_head | ) |
imprime a lista de Código Intermediário (IR) de forma legível no console.
imprime a lista de Código Intermediário (IR) de forma legível.
| ir_head | O ponteiro para a primeira instrução da lista de IR. |
| void imprimir_tokens | ( | TokenList * | tokens | ) |
imprime o conteúdo de uma TokenList no console.
| tokens | Ponteiro para a lista de tokens. |
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
ponto de entrada principal do compilador.
controla o fluxo de compilação fase por fase, dependendo dos argumentos de linha de comando.
| argc | Número de argumentos. |
| argv | Vetor de argumentos (contém o nome do programa e o arquivo fonte). |
| void processar_ast_recursivamente | ( | ASTNode * | no, |
| int | indent_level, | ||
| FILE * | arquivo | ||
| ) |
função recursiva para imprimir ou salvar a AST de forma legível.
| no | O nó atual da AST. |
| indent_level | Nível de indentação atual. |
| arquivo | Ponteiro para o arquivo de saída (NULL para console). |
| void salvar_ast | ( | ASTNode * | arvore, |
| bool | verbose | ||
| ) |
salva a Árvore Sintática Abstrata (AST) no arquivo 'ast.txt'.
| arvore | O nó raiz da AST. |
| verbose | Se verdadeiro, imprime a mensagem de sucesso no console. |
| void salvar_ir_em_arquivo | ( | IR_Instruction * | ir_head, |
| bool | verbose | ||
| ) |
salva a lista de Código Intermediário (IR) no arquivo 'ir.txt'.
| ir_head | O ponteiro para a primeira instrução da lista de IR. |
| verbose | Se verdadeiro, imprime a mensagem de sucesso no console. |