UNPKG

@designliquido/delegua

Version:

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

51 lines 2.22 kB
"use strict"; 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