@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
54 lines • 2.13 kB
JavaScript
;
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