Pular para conteúdo

Arquitetura — Visão Geral

A arquitetura do compilador foi projetada de forma modular, permitindo a separação das responsabilidades de cada etapa do processo de compilação.

O sistema é organizado em componentes independentes responsáveis pela análise do código-fonte, validação estrutural e geração do código equivalente em Python.


Objetivo da Arquitetura

A arquitetura tem como finalidade:

  • Facilitar manutenção e evolução do projeto
  • Separar responsabilidades entre os módulos
  • Permitir escalabilidade futura
  • Melhorar organização do código
  • Simplificar testes e depuração

Visão Geral do Fluxo

O compilador segue o fluxo clássico de processamento utilizado em compiladores tradicionais.

Código Fonte em C
        ↓
Análise Léxica
        ↓
Geração de Tokens
        ↓
Análise Sintática
        ↓
Árvore/Validação Gramatical
        ↓
Análise Semântica
        ↓
Validação Semântica
        ↓
Geração de Código
        ↓
Código Python

Componentes da Arquitetura

Analisador Léxico

Responsável por realizar a leitura do código-fonte caractere por caractere, identificando os elementos léxicos da linguagem.

Principais responsabilidades

  • Reconhecimento de tokens
  • Remoção de espaços e comentários
  • Identificação de palavras-chave
  • Identificação de operadores e delimitadores
  • Reconhecimento de identificadores e literais

Ferramenta utilizada

  • Flex

Analisador Sintático

Responsável por validar a estrutura gramatical do programa com base nas regras definidas para o subconjunto da linguagem C suportado pelo compilador.

Principais responsabilidades

  • Validação da gramática
  • Organização hierárquica das estruturas
  • Verificação de comandos válidos
  • Tratamento de erros sintáticos

Ferramenta utilizada

  • Bison

Análise Semântica

Responsável por validar regras semânticas relacionadas ao significado do programa.

Principais responsabilidades

  • Verificação de tipos
  • Controle de escopo
  • Validação de declarações
  • Verificação de uso correto de variáveis

Geração de Código

Responsável pela tradução das estruturas válidas da linguagem C para código equivalente em Python.

Principais responsabilidades

  • Conversão de comandos
  • Tradução de expressões
  • Adaptação de estruturas da linguagem
  • Geração do código final em Python

Organização dos Módulos

src/
├── lexer/        # Analisador léxico
├── parser/       # Analisador sintático
├── semantic/     # Regras semânticas
├── generator/    # Geração de código Python
├── include/      # Headers e estruturas compartilhadas
└── main.c        # Inicialização do compilador

Tecnologias Utilizadas

Tecnologia Finalidade
C Linguagem principal do compilador
Flex Geração do analisador léxico
Bison Geração do analisador sintático
Make Automação de compilação
Git/GitHub Versionamento e colaboração
GitHub Pages Hospedagem da documentação

Modelo Arquitetural

O projeto segue uma arquitetura em pipeline, onde cada etapa do compilador processa a saída da etapa anterior.

Esse modelo facilita:

  • Modularização
  • Isolamento de responsabilidades
  • Evolução incremental
  • Testabilidade
  • Manutenção

Considerações Arquiteturais

A arquitetura foi planejada visando simplicidade e clareza didática, permitindo que cada etapa do processo de compilação possa ser compreendida e evoluída separadamente.

Além disso, o modelo adotado permite futuras expansões, incluindo:

  • Árvore Sintática Abstrata (AST)
  • Tabela de símbolos
  • Otimizações
  • Código intermediário
  • Suporte a novos elementos da linguagem C

Histórico de Versões

Versão Data Descrição Autor(es)
1.0 30/04/2026 Criação da documentação de arquitetura Arthur Fernandes