⚡ COMPILADOR TS → C

Transformando TypeScript em C com otimizações avançadas

🔤 TypeScript → C ⚡ Strength Reduction 🔄 Constant Folding 🚀 Performance
terminal — compilador — 80×24
$ ./compilador programa.ts
✅ Análise léxica e sintática concluída
🎯 Aplicando Strength Reduction...
🔄 Aplicando Constant Folding...
📄 Código C gerado: saida.c
$ gcc saida.c -o programa && ./programa
🚀 Executando código otimizado...

🎯 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

$ make clean && make
Compilando o compilador...

Execução

$ ./parser path/to/typescript.ts
(Opcional) Código C gerado: saida.c
$ gcc saida.c -o programa

👥 Nossa Equipe

Grupo 08 - Compiladores

Eduardo

Eduardo de Pina

Desenvolvedor

Gustavo

Gustavo Costa

Desenvolvedor

João

João Maurício

Desenvolvedor

Lucas

Lucas Freire

Desenvolvedor

Luísa

Luísa de Souza

Desenvolvedora