-
Notifications
You must be signed in to change notification settings - Fork 24
Home
Égua é uma linguagem de programação nascida e mantida em Belém do Pará, Brasil. O principal objetivo da linguagem é auxiliar no aprendizado de lógica de programação em língua portuguesa, visto que todos os comandos da linguagem são feitos em português, fazendo com que os desenvolvedores que não possuem conhecimento da língua inglesa consigam entender de fato o código escrito.
Égua é uma linguagem em código aberto e gratuita para a utilização de todos. O site oficial é https://egua.tech.
Delégua é uma variação da linguagem Égua patrocinada pela Design Líquido, empresa brasileira sediada em Curitiba, Paraná, Brasil. O principal objetivo da linguagem é uma abordagem mais comercial em cima da linguagem Égua, com algumas capacidades a mais, 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 tornar a linguagem 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.
Delégua tem os seguintes componentes internos:
- Um importador, classe responsável por abrir um arquivo de fonte, analisá-lo e, se seu conteúdo está 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 os transforma em estruturas de alto nível, que serão usadas para a execução lógica do código.
- Um interpretador, que efetivamente executa a lógica do código, visitando as estruturas de alto nível criadas pelo analisador sintático. Dentro dele, ocorrem algumas operações internas feitas pelos componentes:
- Resolvedor, que organiza a tabela de símbolos lógicos (literais, variáveis, funções, classes, etc., por seus nomes) por distâncias de escopos.
- Por exemplo, as variáveis de uma classe podem ser acessadas por seus métodos, mas as variáveis declaradas dentro de métodos não podem ser acessadas por outros métodos da mesma classe. Em outras palavras, o escopo dos métodos é mais restritivo que o escopo da classe à qual pertencem.
- Todas as referências usadas pelo código, como acesso a objetos, métodos e variáveis, são intermediadas (ou resolvidas) pelo resolvedor.
- Resolvedor, que organiza a tabela de símbolos lógicos (literais, variáveis, funções, classes, etc., por seus nomes) por distâncias de escopos.
Essa organização vale para os dialetos padrão (Delégua) e EguaP. Para Égua Clássico, a organização é um pouco diferente. Mais detalhes podem ser encontrados aqui.
A interpretação é feita usando Node.js, um motor bastante conhecido na indústria da tecnologia de informação, que interpreta JavaScript e é escrito em C/C++.
O código fonte é em TypeScript, que é transpilado para JavaScript no momento em que uma nova versão de Delégua é lançada. Há também a interpretação direta em TypeScript quando desenvolvemos ou depuramos o motor da linguagem, usando ts-node.
Em teoria, Delégua 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
Égua e Delégua possuem dois 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
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
Delégua adere à norma culta da Língua Portuguesa quanto a lexemas acentuados, mas também permite lexemas não acentuados por uma questão de acessibilidade. Certos equipamentos eletrônicos não permitem acentuação por uma série de motivos, e Delégua considera palavras reservadas com ou sem acentos equivalentes. Exemplos:
-
padrão
epadrao
; -
senão
esenao
.
- Estruturas de dados elementares
- Entrada e saída
- Operadores
- Condicionais
- Laços de repetição
- Funções
- Funções nativas
- Escopos
- Exceções
- Tipos e Inferência de variáveis
- Orientação a objetos
- Decoradores
- Tradução para outras linguagens
- Compilação para código de máquina
- Dialetos suportados em Delégua
- Implementando Delégua na sua aplicação
- Estruturas de dados elementares
- Entrada e saída
- Operadores
- Condicionais
- Laços de repetição
- Funções
- Funções nativas
- Escopos
- Exceções
- Tipos e Inferência de variáveis
- Orientação a objetos
- Decoradores
- Tradução para outras linguagens
- Compilação para código de máquina
- Dialetos suportados em Delégua
- Implementando Delégua na sua aplicação