@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
51 lines • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.gerarPalavrasReservadasPorParadigma = gerarPalavrasReservadasPorParadigma;
exports.obterPalavrasExcluidas = obterPalavrasExcluidas;
const palavras_reservadas_1 = require("./palavras-reservadas");
const mapeamento_paradigmas_1 = require("./mapeamento-paradigmas");
/**
* Gera um conjunto de palavras reservadas filtrado por paradigma.
* @param paradigma O paradigma desejado ('imperativo', 'infinitivo', ou 'ambos')
* @returns Um objeto mapeando palavras reservadas para tipos de símbolos
*/
function gerarPalavrasReservadasPorParadigma(paradigma) {
// Se 'ambos', retorna todas as palavras reservadas
if (paradigma === 'ambos') {
return { ...palavras_reservadas_1.palavrasReservadasDelegua };
}
const palavrasFiltradas = {};
// Adiciona todas as palavras neutras
Object.assign(palavrasFiltradas, mapeamento_paradigmas_1.palavrasNeutras);
// Adiciona palavras do paradigma selecionado
for (const grupo of mapeamento_paradigmas_1.gruposPalavrasParadigma) {
const palavrasDoParadigma = paradigma === 'imperativo' ? grupo.imperativo : grupo.infinitivo;
if (palavrasDoParadigma) {
for (const palavra of palavrasDoParadigma) {
palavrasFiltradas[palavra] = grupo.tipo;
}
}
}
return palavrasFiltradas;
}
/**
* Obtém as palavras que foram excluídas para um paradigma específico.
* Útil para mensagens de erro ou documentação.
* @param paradigma O paradigma escolhido
* @returns Lista de palavras que não são aceitas neste paradigma
*/
function obterPalavrasExcluidas(paradigma) {
if (paradigma === 'ambos') {
return [];
}
const palavrasExcluidas = [];
const paradigmaOposto = paradigma === 'imperativo' ? 'infinitivo' : 'imperativo';
for (const grupo of mapeamento_paradigmas_1.gruposPalavrasParadigma) {
const palavrasOpostas = paradigmaOposto === 'imperativo' ? grupo.imperativo : grupo.infinitivo;
if (palavrasOpostas) {
palavrasExcluidas.push(...palavrasOpostas);
}
}
return palavrasExcluidas;
}
//# sourceMappingURL=filtro-paradigma.js.map