⚡ COMPILADOR TS → C
Transformando TypeScript em C com otimizações avançadas
🎯 Sobre o Projeto
Desenvolvemos um compilador completo que traduz um subconjunto de TypeScript para C, implementando técnicas avançadas de otimização em tempo de compilação. Este projeto demonstra na prática os conceitos teóricos de compiladores estudados na disciplina.
Análise Completa
Análise léxica, sintática e semântica robusta com verificação de tipos
Otimizações Avançadas
Strength Reduction e Constant Folding para máximo desempenho
Código Eficiente
Geração de código C otimizado e legível
📋 Escopo do Projeto
Linguagem Fonte Suportada
Declarações
let, const, var com tipagem estática
Estruturas de Controle
if/else, while, for, switch/case
Sistema de Tipos
number, string, boolean com verificação
Funcionalidades Implementadas
- ✅ Análise léxica e sintática robusta
- ✅ Tabela de símbolos com gerenciamento de escopos
- ✅ Verificação de tipos estática
- ✅ Geração de código C eficiente
- ✅ Sistema de otimizações em tempo de compilação
🛠️ Tecnologias & Ferramentas
| Camada | Tecnologia | Propósito |
|---|---|---|
| 🔤 Linguagem Fonte | TypeScript | Código de entrada do compilador |
| 🔄 Análise Léxica | Flex | Tokenização do código fonte |
| 📐 Análise Sintática | Bison | Construção da AST |
| 💻 Implementação | C | Linguagem do compilador |
| ⚙️ Build System | Make | Automação da compilação |
| 🎯 Linguagem Alvo | C | Código gerado |
⚡ Otimizações Implementadas
Strength Reduction
Transforma multiplicações por constantes em somas repetidas para melhor performance:
x * 2
→ x + x
x * 5
→ x + x + x + x + x
Casos Especiais
x * 0 → 0
x * 1 → x
Constant Folding
Calcula expressões constantes em tempo de compilação:
10 + 5 * 2
→ 20
(10 > 5)
→ true
"Hello" + "World"
→ "HelloWorld"
🚀 Como Usar
Compilação
Execução
👥 Nossa Equipe
Grupo 08 - Compiladores
Eduardo de Pina
Desenvolvedor
Gustavo Costa
Desenvolvedor
João Maurício
Desenvolvedor
Lucas Freire
Desenvolvedor
Luísa de Souza
Desenvolvedora