UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

58 lines 1.91 kB
"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