Pular para conteúdo

Arquitetura — Código

O módulo de geração de código é responsável por converter estruturas válidas da linguagem C em código equivalente na linguagem Python.

Essa etapa representa a saída final do compilador e ocorre após as validações léxica, sintática e semântica.


Objetivo

Traduzir estruturas reconhecidas pelo compilador para código Python semanticamente equivalente, mantendo a lógica original do programa de entrada.


Responsabilidades

O gerador de código é responsável por:

  • Traduzir declarações de variáveis
  • Converter expressões aritméticas
  • Traduzir estruturas condicionais
  • Traduzir estruturas de repetição
  • Adaptar operadores e sintaxe
  • Gerar código Python válido
  • Produzir o arquivo final de saída

Fluxo de Geração

Código Validado
        ↓
Processamento Semântico
        ↓
Conversão das Estruturas
        ↓
Geração de Código Python
        ↓
Arquivo Final

Estruturas Suportadas

Declaração de Variáveis

Entrada em C

int x = 10;

Saída em Python

x = 10

Operações Aritméticas

Entrada em C

resultado = a + b;

Saída em Python

resultado = a + b

Estruturas Condicionais

Entrada em C

if (x > 0) {
    x = x + 1;
}

Saída em Python

if x > 0:
    x = x + 1

Estruturas de Repetição

Entrada em C

while (x < 10) {
    x++;
}

Saída em Python

while x < 10:
    x += 1

Estratégia de Tradução

O compilador realiza uma tradução direta das estruturas reconhecidas da linguagem C para Python.

A conversão considera:

  • Equivalência lógica
  • Sintaxe da linguagem alvo
  • Indentação obrigatória do Python
  • Conversão de blocos
  • Conversão de operadores

Organização do Módulo

generator/
├── generator.c
├── generator.h
├── templates.c
└── templates.h

Componentes do Gerador

Componente Função
generator.c Processamento principal da geração
templates.c Modelos auxiliares de saída
generator.h Declarações compartilhadas
templates.h Estruturas auxiliares

Exemplo Completo

Código de Entrada (C)

int x = 0;

while (x < 5) {
    x = x + 1;
}

Código Gerado (Python)

x = 0

while x < 5:
    x = x + 1

Limitações Atuais

A versão atual do gerador de código possui suporte parcial à linguagem C.

Entre as limitações atuais estão:

  • Ausência de ponteiros
  • Ausência de structs
  • Ausência de bibliotecas externas
  • Suporte parcial a funções
  • Sem otimização de código

Possíveis Evoluções

A arquitetura permite futuras expansões, incluindo:

  • Geração de AST
  • Código intermediário
  • Otimizações
  • Suporte a funções avançadas
  • Suporte a vetores e matrizes
  • Melhor tratamento de erros

Considerações

O módulo de geração de código foi projetado de forma modular, permitindo manutenção simplificada e evolução incremental do compilador.

A separação entre análise e geração facilita futuras melhorias no pipeline de compilação.


Histórico de Versões

Versão Data Descrição Autor(es)
1.0 30/04/2026 Criação da documentação do módulo de geração de código Arthur Fernandes