@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
58 lines • 1.91 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Binario = void 0;
/**
* Binário é uma estrutura com um operador e dois operandos: esquerda e direita.
* Implementa as seguintes operações para Delégua e todos os dialetos:
*
* - `+` (Adição);
* - `-` (Subtração);
* - `*` (Multiplicação);
* - `/` (Divisão);
* - `%` (Módulo);
*
* Algumas outras operações podem ser suportadas de dialeto para dialeto,
* como por exemplo:
*
* - `+=` (Adição com Atribuição);
* - `-=` (Subtração com Atribuição);
* - `*=` (Multiplicação com Atribuição);
* - `/=` (Divisão com Atribuição);
* - `%=` (Módulo com Atribuição);
* - `**` (Exponenciação);
* - `::` (Concatenação);
* - `\` (Divisão inteira).
*/
class Binario {
constructor(hashArquivo, esquerda, operador, direita) {
this.tipo = 'qualquer';
this.linha = esquerda.linha;
this.hashArquivo = hashArquivo;
this.esquerda = esquerda;
this.operador = operador;
this.direita = direita;
this.tipo = this.deduzirTipo();
}
deduzirTipo() {
if (['logico', 'lógico'].includes(this.esquerda.tipo) ||
['logico', 'lógico'].includes(this.direita.tipo)) {
return 'lógico';
}
if (this.esquerda.tipo === 'texto' || this.direita.tipo === 'texto') {
return 'texto';
}
if (this.esquerda.tipo === 'inteiro' && this.direita.tipo === 'inteiro') {
return 'inteiro';
}
if (['numero', 'número'].includes(this.esquerda.tipo) ||
['numero', 'número'].includes(this.direita.tipo)) {
return 'número';
}
return 'qualquer';
}
async aceitar(visitante) {
return await visitante.visitarExpressaoBinaria(this);
}
}
exports.Binario = Binario;
//# sourceMappingURL=binario.js.map