UNPKG

@designliquido/delegua

Version:

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

54 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TradutorCalango = void 0; class TradutorCalango { constructor() { this.indentacao = 0; this.dicionarioConstrutos = { FormatacaoEscrita: this.traduzirConstrutoFormatacaoEscrita.bind(this), Literal: this.traduzirConstrutoLiteral.bind(this), }; this.dicionarioDeclaracoes = { Escreva: this.traduzirDeclaracaoEscreva.bind(this), EscrevaMesmaLinha: this.traduzirDeclaracaoEscrevaMesmaLinha.bind(this), }; } traduzirConstrutoFormatacaoEscrita(formatacaoEscrita) { const avaliacaoExpressao = this.dicionarioConstrutos[formatacaoEscrita.expressao.constructor.name](formatacaoEscrita.expressao); return `${avaliacaoExpressao}`; } traduzirConstrutoLiteral(literal) { if (typeof literal.valor === 'string') return `'${literal.valor}'`; return String(literal.valor); } traduzirDeclaracaoEscreva(declaracaoEscreva) { let resultado = 'escreva('; for (const argumento of declaracaoEscreva.argumentos) { const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento); resultado += valor + ', '; } resultado = resultado.slice(0, -2); resultado += ')'; return resultado; } traduzirDeclaracaoEscrevaMesmaLinha(declaracaoEscreva) { let resultado = 'escreva('; for (const argumento of declaracaoEscreva.argumentos) { const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento); resultado += valor + ', '; } resultado = resultado.slice(0, -2); resultado += ')'; return resultado; } traduzir(declaracoes) { let resultado = ''; for (const declaracao of declaracoes) { resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`; } return resultado; } } exports.TradutorCalango = TradutorCalango; //# sourceMappingURL=tradutor-calango.js.map