Skip to content

henriquejhas/Mandacaru

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌵 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.mdcr

Isso gerará automaticamente um arquivo teste.js na mesma pasta. ou:

mandacaru teste.mdcr --output meuteste.js

3. 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
==, !=, >=, <=, >, < ==, !=, >=, <=, >, < 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.

👤 Autor

Jefferson Henrique Alves da Silva

About

Um transpilador de código em Português para JavaScript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors