Um transpilador de código em Português para JavaScript, focado em ensino de lógica de programação e produtividade.
O Mandacaru é uma linguagem de programação com sintaxe amigável em português que compila diretamente para JavaScript. Ele permite que estudantes e entusiastas foquem na lógica de programação sem as barreiras da língua inglesa.
- Sintaxe em Português: Comandos como se, repetir, exibir e receber.
- Interação Síncrona: Comando receber() para capturar dados do utilizador de forma simples.
- CLI Integrada: Ferramenta de linha de comando para compilar arquivos .mdcr.
- Leve e Rápido: Baseado no motor de parsing Nearley e léxico Moo.
O Mandacaru pode ser instalado globalmente via NPM:
npm install -g mandacaru-js1. Criar um arquivo Crie um arquivo com a extensão .mdcr (ex: teste.mdcr):
variável nome = "";
exibir("Qual o seu nome?");
receber(nome);
se (nome == "Admin") {
exibir("Bem-vindo, Administrador!");
} se não {
exibir("Olá, " + nome + "!");
}
repetir(i, 3) {
exibir("Contagem: " + (i + 1));
}2. Compilar No terminal, execute o comando mandacaru apontando para o seu ficheiro:
mandacaru teste.mdcrIsso gerará automaticamente um arquivo teste.js na mesma pasta. ou:
mandacaru teste.mdcr --output meuteste.js3. Executar Como o Mandacaru gera código JavaScript padrão, pode executá-lo com o Node.js:
node teste.js| Mandacaru | JavaScript | Descrição |
|---|---|---|
verdadeiro |
true |
Boleano |
falso |
false |
Boleano |
E |
&& |
Operador lógico |
OU |
` | |
! |
! |
Operador lógico |
==, !=, >=, <=, >, < |
==, !=, >=, <=, >, < |
Operadores de comparação |
+ - * / |
+ - * / |
Operadores aritméticos |
= |
= |
Operador de atribuição |
variável x = 10; |
let x = 10; |
Declaração de variável mutável |
constante Y = 5; |
const Y = 5; |
Declaração de constante |
exibir(x); |
console.log(x); |
Saída de dados |
receber(x); |
x = readline... |
Entrada de dados (síncrona) |
se (...) { } |
if (...) { } |
Condicional |
se não se |
else if |
Condicional alternativa |
se não |
else |
Caso contrário |
enquanto (...) { } |
while (...) { } |
Laço de repetição |
repetir(i, 10) { } |
for (let i=0; i<10; i++) |
Laço de repetição simplificado |
-
index.js: Ponto de entrada da CLI e pipeline de transpilação. -
src/gramatica.ne: Definição da gramática da linguagem (Nearley). -
src/lexer.js: Configuração do analisador léxico (Moo). -
src/transpilador.js: Motor que converte a AST em código JS.