Voltar aos projetos

Engenharia

CL++

A minha própria linguagem de programação. Desenhei e implementei o compilador do zero, onde programas funcionam como ecossistemas digitais com agentes que cooperam e comunicam por sinais. Melhor nota da turma.

Problema

Na cadeira de Técnicas e Linguagens de Programação do IMPTEL, 11ª classe, o desafio era construir um compilador completo para uma linguagem original. Em vez de fazer mais um dialeto académico, criei uma linguagem que trata programas como ecossistemas digitais onde agentes autónomos cooperam e comunicam.

Arquitetura

Construí o compilador do zero em C++17, com o ciclo completo de análise do código até à execução. Cada etapa foi desenhada e implementada por mim, sem depender de geradores automáticos.

Código Fonte → Análise → Árvore de Sintaxe → Validação → Execução → Output

Linguagem

Programas são ecossistemas digitais: entidades com energia e movimento, organizadas em colónias coordenadas, que comunicam entre si por sinais. O conjunto da linguagem inclui expressões, variáveis, controlo de fluxo e estas primitivas de ecossistema.

Exemplo de código

number a = 10;
number b = 20;
signal a + b;  // → 30

agent a;
agent b;
number energyA = 50;
number energyB = 80;
signal energyA + energyB;  // → 130

Métricas

  • CL++: ~1050 linhas C++17 (análise, parser, execução e módulo de ecossistema)
  • Lua Minimal+: ~710 linhas C++17
  • Build: CMake, C++17, GCC
  • Benchmarks: até 3.4x mais rápido que Lua 5.4 em 10M iterações