-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Delégua é uma variação da linguagem Égua patrocinada pela Design Líquido – empresa brasileira sediada em Curitiba, Paraná, Brasil. Seu principal objetivo é uma abordagem mais comercial em cima da linguagem Égua, com algumas capacidades adicionais, como trabalhar com o ecossistema Node.js e a composição das bibliotecas, que não fazem parte do núcleo da linguagem.
Mesmo com a abordagem mais comercial, a licença da linguagem é MIT, o que significa que a linguagem sempre foi e sempre será gratuita para qualquer uso. A ideia é apenas torná-la mais robusta, para o caso de aplicações grandes, escaláveis, com valor além do educacional.
Delégua começou tendo como base o código-fonte de Égua até a versão 1.2.0, quando nasceu, no começo de 2022, mas é radicalmente diferente na implementação. Toda a lógica da linguagem é traduzida ao máximo para o português, para também servir aos fins didáticos de como construir uma linguagem interpretada. Égua, até então, é implementada em cima de JavaScript. Delégua usa TypeScript e é mais modularizada.
O que chamamos de núcleo da linguagem é implementado em outro repositório. Lá temos as definições básicas de lexadores, avaliadores sintáticos e interpretadores. Neste repositório, aumentamos essas capacidades adicionando suporte ao Node.js, como capacidade de trabalhar com diversos arquivos (recurso de importação), suporte à depuração remota e acesso ao NPM.
A separação foi necessária porque o núcleo da linguagem é usado em aplicações que não estão necessariamente no Node.js. Antigamente o recurso era contornado usando o Browserify, mas isso virou um problema ao usar a bibliotecas em aplicações que usam frameworks baseados no Webpack, como React e Vue.js. É possível usar o Browserify, mas fica impossível depurar o código decentemente ao realizar a geração dos fontes pelo Browserify.
Delégua Node possui todos os componentes do núcleo da linguagem e mais alguns:
-
Um importador, classe responsável por abrir um arquivo de fonte, analisá-lo e, caso o conteúdo esteja semanticamente correto, prover a lista de declarações para os demais componentes. Dentro do importador, vivem outros dois componentes:
-
Um lexador, ou analisador léxico, que obtém todos os lexemas (ou radicais) do código e os transforma em tokens (ou símbolos), que são unidades de categorização de função linguística, como literais, variáveis, funções, classes etc.
-
Um parser, ou analisador sintático, que confere todos os símbolos definidos pelo lexador e transforma-os em estruturas de alto nível, que serão usadas para a execução lógica do código.
-
Em teoria, Delégua Node suporta qualquer biblioteca Node.js no padrão do NPM. Por exemplo, se quisermos usar a biblioteca Lodash, uma conhecida biblioteca para tratamento de estruturas de dados, podemos usar o seguinte:
// Para isso funcionar, a biblioteca `lodash` precisa estar instalada ou no projeto (diretório `node_modules`), ou globalmente.
var lodash = importar('lodash');
var a = { 'b': 'c' };
escreva(lodash.get(a, 'b', 'f'));
// Resultado: c
Delégua Node possui quatro modos de execução:
-
LAIR (Leia-Avalie-Imprima-Repita), conhecido em inglês como REPL (Read-Evaluate-Print-Loop);
-
Execução de um arquivo fornecido como parâmetro;
-
Execução de código fornecido como parâmetro;
-
Tradução de um arquivo em um dialeto para outro dialeto.
Para usar Delégua em modo LAIR, você pode ou instalar o pacote do Delégua Node:
npm i -g @designliquido/delegua-node
Ou a solução completa (recomendado):
npm i -g delegua
Após a instalação, use o comando:
delegua
Inspirado em Python, o modo LAIR de Delégua funciona basicamente como uma calculadora. Não é preciso usar a instrução escreva()
para saber o resultado de cada linha (Égua requer a instrução escreva()
).
delegua> 2+2
4
delegua> 3*5
15
delegua> 3**5
243
delegua> 5 ** 4 ** 3 ** 2
59604644775390620
Se a ideia é executar um arquivo, basta passar o nome do arquivo como último argumento.
delegua meu-arquivo.delegua
Se a ideia é executar um código como argumento, use o parâmetro -c
ou --codigo
seguido do código a ser executado, entre aspas.
delegua -c "escreva(2+1)"