NPortugol

Linguagem de Script para .NET/Mono.

View the Project on GitHub ricardoborges/NPortugol

O que é NPortugol?

NPortugol é uma linguagem de programação para elaboração de scripts com sintaxe em língua portuguesa e utilização hospedada em aplicações nas plataformas .NET e Mono. Utiliza como base o paradigma de programação estruturada, priorizando a simplicidade na sua codificação e facilidade de aprendizado por usuários não profissionais. A linguagem inclui recursos de interoperabilidade entre o script e a plataforma .NET permitindo a utilização indireta da API nativa C#.

Executando com o Notepad++

Utilize o ótimo editor Notepad++ para codificar e executar scripts. No link acima de downloads é possível baixar um zip com o NPP já configurado para executar NPortugol através do plugin NppExec.

Direto ao ponto.

É muito simples de incorporar e executar o motor da linguagem. Apenas instancie o motor, compile o script e execute a função desejada.


var motor = new Motor();

motor.Compilar(@"função fatorial(x) 
                    se x == 0 retorne 1 fim 
                    retorne fatorial(x - 1) * x 
                 fim ");

var resultado = motor.Executar("fatorial", 10);

Interoperabilidade:

A integração com API da aplicação hospedeira é facilmente configurada. Você pode registrar um a um ou criar módulos para instalação de um conjunto de métodos da aplicação hospedeira como funções para o script.

var motor = new Motor();

motor.Hospedagem.Registrar("hoje", x => DateTime.Now.ToShortDateString());

motor.Compilar(@"função principal() 
                        variável data
                        data = hoje()
                 fim");

motor.Executar();

IDE para debug.

Crie e teste funções NPortugol numa IDE para um rápido aprendizado da sintaxe.

IDE Experimental.

Para interessados no funcionamento interno da linguagem. Visualize a árvore AST gerada pelo parser ANTLR. Compile e visualize o código gerado para o motor da linguagem.

Contribuições.

O projeto está hospedado no GitHub e necessita de muitas melhorias e correções! Contribuições serão bem vindas! Você pode ajudar criando uma documentação adequada, otimizando a execução do motor ou construindo novos recursos na sintaxe da linguagem.

keyboard-centric bug tracker continuous integration server