🦀 CrabPascal - Extensão VSCode

A única extensão Pascal que simplesmente funciona! ✨
Compilador incluído · Zero configuração · Pronto em 1 minuto
🚀 Instalação Ultra-Rápida
Passo 1: Instale a extensão
Extensões (Ctrl+Shift+X) → Buscar "CrabPascal" → Instalar
Passo 2: Pronto!
Abra um arquivo .pas → Ctrl+Shift+B → Compila!
Sim, é só isso! O compilador já vem incluído na extensão (~1MB).
Nenhuma configuração adicional necessária! 🎉
✨ Por que CrabPascal?
| Recurso |
Outros |
CrabPascal |
| Instalação |
Manual, complexa |
✅ 1 clique |
| Compilador |
Baixar separado |
✅ Incluído |
| Configuração |
Obrigatória |
✅ Zero |
| Tempo Setup |
15+ minutos |
✅ 1 minuto |
🎯 Recursos
Core
- ✅ Syntax Highlighting - Destaque de sintaxe Pascal/Delphi
- ✅ Compilação Integrada -
Ctrl+Shift+B compila na hora
- ✅ Execução Rápida -
Ctrl+F5 compila e executa
- ✅ Erros em Tempo Real - Veja erros ao salvar
- ✅ Problem Matcher - Erros na aba Problemas
- ✅ Auto-complete - Fechamento automático de blocos
Avançado
- 🔥 Horse Framework - Suporte completo para APIs REST
- 🔥 OOP Moderno - Classes, herança, polimorfismo
- 🔥 Properties - Getters/Setters automáticos
- 🔥 Generics - Tipos genéricos (parcial)
⌨️ Atalhos de Teclado
| Atalho |
Ação |
Ctrl+Shift+B |
Compilar arquivo atual |
Ctrl+F5 |
Executar arquivo atual |
Ctrl+Shift+C |
Verificar sintaxe |
F8 |
Próximo erro |
Shift+F8 |
Erro anterior |
Ctrl+Shift+M |
Lista de problemas |
📝 Exemplos Práticos
🎯 Hello World
program HelloWorld;
begin
WriteLn('Hello from CrabPascal! 🦀');
ReadLn;
end.
Ctrl+Shift+B → Compilado! Ctrl+F5 → Executado!
🧮 Calculadora Console Interativa
program Calculadora;
uses SysUtils;
var
num1, num2, resultado: Double;
operacao: Char;
continuar: String;
begin
repeat
WriteLn('=================================');
WriteLn(' CALCULADORA CRABPASCAL 🦀 ');
WriteLn('=================================');
WriteLn;
Write('Digite o primeiro número: ');
ReadLn(num1);
Write('Digite a operação (+, -, *, /): ');
ReadLn(operacao);
Write('Digite o segundo número: ');
ReadLn(num2);
WriteLn;
case operacao of
'+': resultado := num1 + num2;
'-': resultado := num1 - num2;
'*': resultado := num1 * num2;
'/': begin
if num2 <> 0 then
resultado := num1 / num2
else begin
WriteLn('ERRO: Divisão por zero!');
Continue;
end;
end;
else
begin
WriteLn('ERRO: Operação inválida!');
Continue;
end;
end;
WriteLn('Resultado: ', resultado);
WriteLn;
Write('Continuar? (S/N): ');
ReadLn(continuar);
WriteLn;
until (continuar <> 'S') and (continuar <> 's');
WriteLn('Obrigado por usar CrabPascal! 👋');
end.
program APIServer;
uses Horse, Horse.CORS;
begin
THorse
.Use(CORS)
// Rota GET
.Get('/api/hello',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
begin
Res.Send('{"message": "Hello from CrabPascal + Horse! 🦀"}');
end)
// Rota POST
.Post('/api/calc',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
a, b, resultado: Integer;
begin
a := StrToInt(Req.Query['a']);
b := StrToInt(Req.Query['b']);
resultado := a + b;
Res.Send('{"resultado": ' + IntToStr(resultado) + '}');
end)
.Listen(9000,
procedure(Horse: THorse)
begin
WriteLn('🚀 Servidor rodando em http://localhost:9000');
WriteLn('📍 GET /api/hello');
WriteLn('📍 POST /api/calc?a=5&b=3');
end);
end.
Teste: curl http://localhost:9000/api/hello
🎮 Jogo de Adivinhação
program JogoAdivinhacao;
uses SysUtils;
var
numeroSecreto, palpite, tentativas: Integer;
begin
Randomize;
numeroSecreto := Random(100) + 1;
tentativas := 0;
WriteLn('=================================');
WriteLn(' JOGO DE ADIVINHAÇÃO 🎯 ');
WriteLn('=================================');
WriteLn('Adivinhe o número entre 1 e 100!');
WriteLn;
repeat
Inc(tentativas);
Write('Tentativa ', tentativas, ': ');
ReadLn(palpite);
if palpite < numeroSecreto then
WriteLn('📈 Muito baixo! Tente novamente.')
else if palpite > numeroSecreto then
WriteLn('📉 Muito alto! Tente novamente.')
else begin
WriteLn;
WriteLn('🎉 PARABÉNS! Você acertou!');
WriteLn('Número: ', numeroSecreto);
WriteLn('Tentativas: ', tentativas);
end;
until palpite = numeroSecreto;
WriteLn;
WriteLn('Pressione Enter para sair...');
ReadLn;
end.
🏦 Sistema Bancário OOP
program SistemaBancario;
uses SysUtils;
type
TContaBancaria = class
private
FTitular: String;
FSaldo: Double;
public
constructor Create(Titular: String; SaldoInicial: Double);
procedure Depositar(Valor: Double);
function Sacar(Valor: Double): Boolean;
procedure ExibirSaldo;
property Titular: String read FTitular;
property Saldo: Double read FSaldo;
end;
constructor TContaBancaria.Create(Titular: String; SaldoInicial: Double);
begin
FTitular := Titular;
FSaldo := SaldoInicial;
end;
procedure TContaBancaria.Depositar(Valor: Double);
begin
FSaldo := FSaldo + Valor;
WriteLn('✅ Depósito de R$ ', Valor, ' realizado!');
end;
function TContaBancaria.Sacar(Valor: Double): Boolean;
begin
if Valor <= FSaldo then begin
FSaldo := FSaldo - Valor;
WriteLn('✅ Saque de R$ ', Valor, ' realizado!');
Result := True;
end else begin
WriteLn('❌ Saldo insuficiente!');
Result := False;
end;
end;
procedure TContaBancaria.ExibirSaldo;
begin
WriteLn('👤 Titular: ', FTitular);
WriteLn('💰 Saldo: R$ ', FSaldo);
end;
var
conta: TContaBancaria;
begin
WriteLn('=================================');
WriteLn(' SISTEMA BANCÁRIO 🏦 ');
WriteLn('=================================');
WriteLn;
conta := TContaBancaria.Create('João Silva', 1000.00);
conta.ExibirSaldo;
WriteLn;
conta.Depositar(500.00);
WriteLn;
conta.Sacar(300.00);
WriteLn;
conta.Sacar(2000.00); // Vai falhar
WriteLn;
conta.ExibirSaldo;
conta.Free;
WriteLn;
WriteLn('Pressione Enter para sair...');
ReadLn;
end.
🛠️ Comandos
Acesse via Ctrl+Shift+P:
- CrabPascal: Compilar arquivo atual - Compila o arquivo ativo
- CrabPascal: Executar arquivo atual - Compila e executa
- CrabPascal: Verificar sintaxe - Apenas verifica erros
- CrabPascal: Build completo - Build com todas otimizações
⚙️ Configurações (Avançado)
99% dos usuários NÃO precisam configurar nada!
Mas se você compilou o CrabPascal do fonte ou quer usar uma versão customizada:
{
"crabpascal.compilerPath": "C:\\caminho\\para\\crab-pascal.exe",
"crabpascal.rtlPath": "C:\\caminho\\para\\rtl",
"crabpascal.enableLinting": true
}
Opções:
crabpascal.compilerPath
- Tipo:
string
- Padrão: Detectado automaticamente
- Descrição: Caminho customizado para o compilador
crabpascal.rtlPath
- Tipo:
string
- Padrão:
""
- Descrição: Caminho customizado para RTL
crabpascal.enableLinting
- Tipo:
boolean
- Padrão:
true
- Descrição: Verificação automática de erros ao salvar
🎯 Roadmap
- ✅ v2.9.0 - Compilador incluído · Zero configuração
- ⏳ v3.0.0 - IntelliSense avançado · Auto-complete inteligente
- ⏳ v3.1.0 - Debugger integrado · Breakpoints
- ⏳ v3.2.0 - Refactoring tools · Go to Definition
🐛 Suporte
Problemas ou sugestões?
📚 Recursos Adicionais
Documentação Completa
Veja a pasta documentation/ no repositório para:
- Guias detalhados
- Tutoriais avançados
- Referência da linguagem
- Exemplos completos
Exemplos Incluídos no Repositório
- 🧮 Calculadora Console - Interface interativa
- 🌐 API REST - Horse Framework completo
- 📋 CRUD - Sistema completo com classes
- 🎮 Jogos - Exemplos práticos e divertidos
- 🏦 Sistema Bancário - OOP avançado
💖 Contribuindo
Contribuições são muito bem-vindas!
- Fork o repositório
- Crie sua feature branch (
git checkout -b feature/MinhaFeature)
- Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature')
- Push para a branch (
git push origin feature/MinhaFeature)
- Abra um Pull Request
📄 Licença
MIT License - use livremente em projetos pessoais e comerciais.
Veja LICENSE para detalhes.
🙏 Créditos
Desenvolvido com ❤️ pela Alpha Tecnologia
Especial thanks para a comunidade Pascal/Delphi! 🦀
⭐ Gostou?
Se você está gostando do CrabPascal, considere:
- ⭐ Dar uma estrela no repositório
- 📢 Compartilhar com outros desenvolvedores Pascal
- 💬 Deixar uma avaliação no marketplace
- 🐛 Reportar bugs ou sugerir melhorias
🦀 CrabPascal - A única extensão Pascal que simplesmente funciona!™
Instale agora e comece a programar em 1 minuto! 🚀