mandacaru-js
v1.0.1
Published
Transpilador de Mandacaru (.mdcr) para JavaScript
Maintainers
Readme
🌵 Mandacaru (.mdcr)
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.
🚀 Características
- 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.
📦 Instalação
O Mandacaru pode ser instalado globalmente via NPM:
npm install -g mandacaru-js🛠️ Como Usar
1. 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📜 Gramática e Sintaxe
| Mandacaru | JavaScript | Descrição |
| ------ | ------ | ------ |
| verdadeiro | true | Boleano |
| falso | false | Boleano |
| E | && | Operador lógico |
| OU | || | Operador lógico |
| ! | ! | 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 |
🏗️ Estrutura do Projeto
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.
