https://github.com/anderson-ufrj/compilers-rainbow_language
Compilador desenvolvido para a linguagem de programação Rainbow, criada no IF Sul de Minas – Câmpus Muzambinho.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (3.7%) to scientific vocabulary
Repository
Compilador desenvolvido para a linguagem de programação Rainbow, criada no IF Sul de Minas – Câmpus Muzambinho.
Basic Info
- Host: GitHub
- Owner: anderson-ufrj
- Language: Python
- Default Branch: main
- Size: 537 KB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
🌈 Rainbow IDE & Compilador
📋 Sobre o Projeto
O Rainbow IDE é um ambiente de desenvolvimento integrado completo para a linguagem Rainbow, uma linguagem de programação com sintaxe em português projetada para fins didáticos e educacionais.
🎯 Objetivos
- Implementar todas as fases de um compilador educacional
- Criar uma IDE moderna e intuitiva para desenvolvimento
- Demonstrar conceitos de compilação de forma prática
- Fornecer interpretador integrado para execução de programas
- Facilitar o aprendizado de programação em português
📊 Status do Desenvolvimento
| Componente | Status | Descrição | |------------|--------|-----------| | Rainbow IDE | ✅ Completo | Interface gráfica moderna com temas | | Análise Léxica | ✅ Completo | Tokenização com detecção de erros | | Análise Sintática | ✅ Completo | Parser com construção de AST | | Análise Semântica | ✅ Completo | Verificação de tipos e escopo | | Interpretador | ✅ Completo | Execução interativa de programas | | Exemplos | ✅ Completo | 8 programas demonstrativos |
🚀 Começando
Pré-requisitos
- Python 3.10 ou superior
- Tkinter (geralmente incluído com Python)
- PIL/Pillow (para imagens na splash screen)
Instalação
Clone o repositório:
bash git clone https://github.com/anderson-ufrj/compilers-rainbow_language cd compilers-rainbow_languageExecute a Rainbow IDE:
bash python3 main.py
💻 Usando a Rainbow IDE
🖥️ Interface Principal
A Rainbow IDE oferece uma experiência moderna de desenvolvimento:
- Editor com Syntax Highlighting - Cores automáticas para código Rainbow
- Sistema de Temas - Modo claro e escuro com paleta GitHub
- Toolbar Moderna - Botões organizados por funcionalidade
- Análise em Tempo Real - Validação léxica, sintática e semântica
- Interpretador Integrado - Execute programas diretamente na IDE
- Console Interativo - Entrada e saída em tempo real com suporte ao Enter
- Splash Screen Animada - Introdução visual com animações
- Exemplos Inclusos - 8 programas prontos para aprender
⚡ Funcionalidades Principais
| Funcionalidade | Atalho | Descrição |
|----------------|--------|-----------|
| Executar Programa | F5 ou ▶ | Executa o código atual |
| Novo Arquivo | Ctrl+N | Cria novo arquivo Rainbow |
| Abrir Arquivo | Ctrl+O | Abre arquivo .rainbow |
| Salvar | Ctrl+S | Salva arquivo atual |
| Análise Léxica | F7 | Apenas análise léxica |
| Análise Sintática | F8 | Análise léxica + sintática |
| Análise Semântica | F9 | Análise completa |
| Compilação Completa | F6 | Todas as análises |
| Alternar Tema | Ctrl+T | Alterna entre claro/escuro |
📚 Exemplos Inclusos
Acesse via menu Exemplos:
- 👋 Olá Mundo - Primeiro programa Rainbow
- 🧮 Calculadora - Operações matemáticas básicas
- 📊 Tabuada - Laços de repetição
- 🔀 Condicional - Estruturas se/senao aninhadas
- 🔄 Laço Para - Diferentes tipos de loops
- 🏷️ Tipos de Dados - Demonstração de tipos
- 💬 Entrada do Usuário - Interação com usuário
- 🤖 Programa Interativo - Exemplo completo com validações
🌟 Linguagem Rainbow
Estrutura Básica
Todo programa Rainbow deve começar com:
rainbow
RAINBOW.
Variáveis
As variáveis são prefixadas com #:
```rainbow
nome recebe "João".
idade recebe 25.
ativo recebe Verdadeiro.
```
Tipos de Dados
- NUMERO - Inteiros e decimais (42, 3.14)
- TEXTO - Strings ("Olá mundo")
- LOGICO - Booleanos (Verdadeiro, Falso)
- LISTA - Arrays de elementos
Entrada/Saída
```rainbow
nome recebe ler("Digite seu nome: ").
mostrar("Olá, " + #nome + "!"). ```
Estruturas de Controle
Condicionais:
rainbow
se (#idade >= 18) {
mostrar("Maior de idade").
} senao {
mostrar("Menor de idade").
}
Loops: ```rainbow // Laço para com contador para #i de 1 ate 10 passo 1 { mostrar(#i). }
// Laço enquanto enquanto (#contador < 10) { #contador recebe #contador + 1. } ```
Operadores
- Aritméticos:
+,-,*,/,% - Relacionais:
>,<,>=,<=,==,!= - Lógicos:
E,OU,NAO - Atribuição:
recebe
🏗️ Arquitetura
Estrutura de Arquivos
compilers-rainbow_language/
├── main.py # Rainbow IDE (interface principal)
├── src/ # Código fonte do compilador
│ ├── analisador_lexico.py # Análise léxica
│ ├── analisador_sintatico.py # Análise sintática
│ ├── analisador_semantico.py # Análise semântica
│ ├── interpretador_rainbow.py # Interpretador
│ └── compilador_rainbow.py # Integrador principal
├── exemplos/ # Programas Rainbow de exemplo
│ ├── ola_mundo.rainbow # Exemplo básico
│ ├── calculadora.rainbow # Operações matemáticas
│ ├── tabuada.rainbow # Laços de repetição
│ ├── condicional.rainbow # Estruturas condicionais
│ ├── laco_para.rainbow # Laços para
│ ├── tipos_dados.rainbow # Tipos de dados
│ ├── entrada_usuario.rainbow # Entrada interativa
│ └── programa_interativo.rainbow # Exemplo completo
├── tests/ # Casos de teste
│ ├── teste1.rainbow # Programa válido
│ ├── teste2.rainbow # Detecção de erros
│ └── teste3.rainbow # Teste completo
├── docs/ # Documentação técnica
├── assets/ # Recursos (imagens, etc.)
└── generated/ # Arquivos gerados (ignorados no git)
👨💻 Desenvolvedores
Projeto desenvolvido para a disciplina de Compiladores
- 👤 Anderson Henrique da Silva
- 👤 Lurian Letícia dos Reis
📚 Orientação - Professor: Hudson - Instituição: IFSULDEMINAS Campus Muzambinho
🛠️ Desenvolvimento
Tecnologias Utilizadas
- Python 3.10+ - Linguagem principal
- Tkinter - Interface gráfica
- PIL/Pillow - Processamento de imagens
- Threading - Execução assíncrona
- JSON - Saída estruturada
- RegEx - Análise de padrões
- Claude Code - IA utilizada para auxílio no desenvolvimento/documentação
Características Técnicas
Analisador Léxico
- Tokenização caractere por caractere
- Recuperação automática de erros
- Rastreamento preciso de posição
- 30+ tipos de tokens
Analisador Sintático
- Parser recursivo descendente
- Construção de AST completa
- Detecção de erros sintáticos
- Recuperação de erros
Analisador Semântico
- Tabela de símbolos hierárquica
- Verificação de tipos
- Análise de escopo (GLOBAL, BLOCO, LACO)
- Detecção de variáveis não declaradas
Interpretador
- Execução linha por linha
- Suporte a entrada interativa
- Conversão automática de tipos
- Estruturas de controle completas
Interface (IDE)
- Tema escuro/claro moderno
- Syntax highlighting em tempo real
- Console integrado
- Splash screen animada
- Toolbar profissional
📖 Exemplos de Uso
Programa Interativo Completo
```rainbow RAINBOW.
// Programa de cadastro simples
nome recebe ler("Digite seu nome: ").
idade recebe ler("Digite sua idade: ").
mostrar(""). mostrar("=== DADOS CADASTRAIS ==="). mostrar("Nome: " + #nome). mostrar("Idade: " + #idade).
se (#idade >= 18) { mostrar(#nome + " é maior de idade!"). } senao { mostrar(#nome + " é menor de idade."). }
ano_atual recebe 2025.
anonascimento recebe #anoatual - #idade.
mostrar("Você nasceu aproximadamente em: " + #ano_nascimento).
mostrar("Cadastro finalizado! 🌈"). ```
Calculadora de Tabuada
```rainbow RAINBOW.
numero recebe 5.
i recebe 1.
mostrar("Tabuada do " + #numero + ":").
enquanto (#i <= 10) { #resultado recebe #numero * #i. mostrar(#numero + " x " + #i + " = " + #resultado). #i recebe #i + 1. } ```
🚀 Como Usar
Abra a Rainbow IDE:
bash python3 main.pyAssista à splash screen com animações do arco-íris
Escolha um exemplo no menu "Exemplos" ou crie um novo arquivo
Execute o programa com
F5ou clique em ▶Digite valores quando solicitado (suporte ao Enter!)
Veja a saída no console integrado
Alterne temas com
Ctrl+Tpara personalizar
🎨 Recursos Visuais
- Splash Screen Animada - Logo Rainbow com cores e animações
- Temas Modernos - Paleta inspirada no GitHub Dark/Light
- Toolbar Profissional - Botões organizados por categoria
- Syntax Highlighting - Cores para palavras-chave, strings, variáveis
- Tooltips Elegantes - Dicas contextuais com estilo do tema
📞 Contato
Para dúvidas sobre o projeto educacional, entre em contato através das issues do GitHub ou com os desenvolvedores.
Owner
- Name: Anderson Henrique Da Silva
- Login: anderson-ufrj
- Kind: user
- Location: Brasil
- Company: Ruvixx, Inc
- Twitter: neural_thinker
- Repositories: 1
- Profile: https://github.com/anderson-ufrj
GitHub Events
Total
- Push event: 35
- Create event: 1
Last Year
- Push event: 35
- Create event: 1