UNPKG

@designliquido/delegua

Version:

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

72 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TABELA_AVISOS_SEMANTICOS = exports.TABELA_ERROS_SEMANTICOS = void 0; exports.inferirCodigoDiagnosticoSemantico = inferirCodigoDiagnosticoSemantico; const interfaces_1 = require("../interfaces"); exports.TABELA_ERROS_SEMANTICOS = [ { codigoDiagnostico: 'SEMANTICO_TIPO_DESCONHECIDO', descricao: 'Tipo de dados desconhecido.', padroesMensagem: [/tipo de dados desconhecido/i], }, { codigoDiagnostico: 'SEMANTICO_VARIAVEL_NAO_DECLARADA', descricao: 'Variavel nao declarada.', padroesMensagem: [/variavel\s+nao\s+declarada/i, /variavel\s+n(?:ao|\u00e3o)\s+declarada/i], }, { codigoDiagnostico: 'SEMANTICO_TIPO_INCOMPATIVEL', descricao: 'Tipos incompativeis em atribuicao, chamada ou operacao.', padroesMensagem: [/tipo.*diferente/i, /tipo.*incompativel/i, /incompativeis/i], }, { codigoDiagnostico: 'SEMANTICO_FUNCAO_PARAMETROS_INVALIDOS', descricao: 'Quantidade ou tipo de parametros invalida para funcao.', padroesMensagem: [/funcao.*espera.*parametr/i, /parametr.*diferente/i], }, { codigoDiagnostico: 'SEMANTICO_METODO_NAO_ENCONTRADO', descricao: 'Metodo nao encontrado na classe.', padroesMensagem: [/m[eé]todo n[aã]o encontrado na classe/i], }, { codigoDiagnostico: 'SEMANTICO_ERRO_GENERICO', descricao: 'Erro semantico nao categorizado.', padroesMensagem: [], }, ]; exports.TABELA_AVISOS_SEMANTICOS = [ { codigoDiagnostico: 'SEMANTICO_VARIAVEL_NAO_UTILIZADA', descricao: 'Variavel declarada e nao utilizada.', padroesMensagem: [/nao utilizada/i, /n(?:ao|\u00e3o) utilizada/i], }, { codigoDiagnostico: 'SEMANTICO_AVISO_GENERICO', descricao: 'Aviso semantico nao categorizado.', padroesMensagem: [], }, ]; function inferirCodigoDiagnosticoSemantico(mensagem, severidade) { const tabela = severidade === interfaces_1.DiagnosticoSeveridade.ERRO ? exports.TABELA_ERROS_SEMANTICOS : severidade === interfaces_1.DiagnosticoSeveridade.AVISO ? exports.TABELA_AVISOS_SEMANTICOS : []; for (const entrada of tabela) { if (!entrada.padroesMensagem.length) { continue; } if (entrada.padroesMensagem.some((regex) => regex.test(mensagem))) { return entrada.codigoDiagnostico; } } if (severidade === interfaces_1.DiagnosticoSeveridade.ERRO) { return 'SEMANTICO_ERRO_GENERICO'; } if (severidade === interfaces_1.DiagnosticoSeveridade.AVISO) { return 'SEMANTICO_AVISO_GENERICO'; } return 'SEMANTICO_DIAGNOSTICO_GENERICO'; } //# sourceMappingURL=tabela-diagnosticos-semanticos.js.map