O que vamos fazer?
Nosso grupo irá desenvolver um compilador que transforma código em C em código equivalente em Python. O projeto consiste em construir um lexer, um parser e um gerador de código, capazes de interpretar um subconjunto da linguagem C e produzir scripts Python que preservem a lógica e o comportamento do programa original. O compilador terá suporte a elementos essenciais como: declarações de variáveis, expressões aritméticas, estruturas de controle (if, while e for), funções simples e operações básicas de entrada e saída (printf e scanf simplificado). A ideia é criar uma base funcional mínima que permita testes iniciais, sendo expandida, ao decorrer das sprints, para suportar recursos mais avançados do C.
Por que da escolha?
Escolhemos desenvolver um compilador de C para Python por diversos motivos, os quais incluem:
-
Aprendizado prático: Trabalhar com duas linguagens diferentes, além de ser um desafio maior para os integrantes da equipe, permite compreender profundamente conceitos de compilação, análise léxica, sintática e geração de código.
-
Subconjunto de C controlável: C possui uma sintaxe clara e estruturada, o que facilita definir um subconjunto inicial para o projeto, sem a complexidade total da linguagem.
-
Versatilidade do Python: Python é interpretado, de alto nível e de fácil leitura, logo, gerar código Python a partir de C ajuda a visualizar de forma rápida o funcionamento do código transpilado e facilita testes.
-
Familiaridade do grupo com as linguagens: Os integrantes já possuem experiência prévia com C e Python, o que facilita a implementação e validação do compilador, tornando o desenvolvimento mais eficiente e confiável.
-
Escolha por compilador: A equipe optou por desenvolver um compilador, e não um interpretador, para alinhar o projeto ao principal foco da disciplina (visto que o nome da disciplina é "Compiladores 1"), que aborda conceitos de compilação, geração de código e análise léxica/sintática de forma mais profunda.
Organização do Projeto
Ferramenta de Gerenciamento
Optamos por utilizar o Kanban disponível no Projects para organizar e acompanhar as tarefas do projeto.
Essa ferramenta permite visualizar o progresso em colunas, facilitando o controle das atividades em andamento.