@designliquido/delegua 1.15.4 → 1.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analisador-semantico/analisador-semantico.d.ts +2 -1
- package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico.js +32 -4
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +1 -0
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +4 -1
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js +1 -1
- package/bibliotecas/dialetos/prisma/biblioteca-global.d.ts +1 -1
- package/bibliotecas/dialetos/prisma/biblioteca-global.js +1 -1
- package/bin/package.json +1 -1
- package/construtos/literal.d.ts +2 -1
- package/construtos/literal.d.ts.map +1 -1
- package/construtos/literal.js +2 -1
- package/construtos/literal.js.map +1 -1
- package/estilizador/estilizador-delegua.d.ts +7 -6
- package/estilizador/estilizador-delegua.d.ts.map +1 -1
- package/estilizador/estilizador-delegua.js +9 -0
- package/estilizador/estilizador-delegua.js.map +1 -1
- package/estilizador/regras/convencao-nomenclatura.d.ts +2 -2
- package/estilizador/regras/convencao-nomenclatura.d.ts.map +1 -1
- package/estilizador/regras/fortalecer-tipos.d.ts +2 -2
- package/estilizador/regras/fortalecer-tipos.d.ts.map +1 -1
- package/estilizador/regras/fortalecer-tipos.js.map +1 -1
- package/estilizador/regras/paradigma-consistente.d.ts +3 -16
- package/estilizador/regras/paradigma-consistente.d.ts.map +1 -1
- package/estilizador/regras/paradigma-consistente.js.map +1 -1
- package/formatadores/formatador-delegua.d.ts +7 -1
- package/formatadores/formatador-delegua.d.ts.map +1 -1
- package/formatadores/formatador-delegua.js +25 -6
- package/formatadores/formatador-delegua.js.map +1 -1
- package/interfaces/estilizador/estilizador-interface.d.ts +49 -0
- package/interfaces/estilizador/estilizador-interface.d.ts.map +1 -0
- package/interfaces/{estilizador-comum-interface.js → estilizador/estilizador-interface.js} +1 -1
- package/interfaces/estilizador/estilizador-interface.js.map +1 -0
- package/interfaces/estilizador/index.d.ts +5 -0
- package/interfaces/estilizador/index.d.ts.map +1 -0
- package/interfaces/estilizador/index.js +21 -0
- package/interfaces/estilizador/index.js.map +1 -0
- package/interfaces/estilizador/opcoes-paradigma-consistente-interface.d.ts +14 -0
- package/interfaces/estilizador/opcoes-paradigma-consistente-interface.d.ts.map +1 -0
- package/interfaces/estilizador/opcoes-paradigma-consistente-interface.js +3 -0
- package/interfaces/estilizador/opcoes-paradigma-consistente-interface.js.map +1 -0
- package/interfaces/estilizador/regra-estilizacao-interface.d.ts +28 -0
- package/interfaces/estilizador/regra-estilizacao-interface.d.ts.map +1 -0
- package/interfaces/estilizador/regra-estilizacao-interface.js +3 -0
- package/interfaces/estilizador/regra-estilizacao-interface.js.map +1 -0
- package/interfaces/estilizador/violacao-estilo-interface.d.ts +26 -0
- package/interfaces/estilizador/violacao-estilo-interface.d.ts.map +1 -0
- package/interfaces/estilizador/violacao-estilo-interface.js +3 -0
- package/interfaces/estilizador/violacao-estilo-interface.js.map +1 -0
- package/interfaces/index.d.ts +1 -1
- package/interfaces/index.d.ts.map +1 -1
- package/interfaces/index.js +1 -1
- package/interfaces/index.js.map +1 -1
- package/interfaces/simbolo-interface.d.ts +2 -1
- package/interfaces/simbolo-interface.d.ts.map +1 -1
- package/interpretador/dialetos/prisma/interpretador-prisma.d.ts +1 -1
- package/interpretador/dialetos/prisma/interpretador-prisma.js +1 -1
- package/lexador/filtro-paradigma.d.ts +1 -1
- package/lexador/filtro-paradigma.d.ts.map +1 -1
- package/lexador/filtro-paradigma.js.map +1 -1
- package/lexador/lexador.d.ts.map +1 -1
- package/lexador/lexador.js +2 -0
- package/lexador/lexador.js.map +1 -1
- package/lexador/mapeamento-paradigmas.d.ts +1 -7
- package/lexador/mapeamento-paradigmas.d.ts.map +1 -1
- package/lexador/mapeamento-paradigmas.js +3 -3
- package/lexador/mapeamento-paradigmas.js.map +1 -1
- package/lexador/simbolo.d.ts +2 -1
- package/lexador/simbolo.d.ts.map +1 -1
- package/lexador/simbolo.js +2 -1
- package/lexador/simbolo.js.map +1 -1
- package/package.json +1 -1
- package/tipos.d.ts +8 -0
- package/tipos.d.ts.map +1 -0
- package/tipos.js +3 -0
- package/tipos.js.map +1 -0
- package/tradutores/tradutor-assemblyscript.js +1 -1
- package/tradutores/tradutor-assemblyscript.js.map +1 -1
- package/tradutores/tradutor-elixir.d.ts +1 -1
- package/tradutores/tradutor-elixir.js +3 -3
- package/tradutores/tradutor-elixir.js.map +1 -1
- package/umd/delegua.js +87 -24
- package/interfaces/estilizador-comum-interface.d.ts +0 -85
- package/interfaces/estilizador-comum-interface.d.ts.map +0 -1
- package/interfaces/estilizador-comum-interface.js.map +0 -1
package/umd/delegua.js
CHANGED
|
@@ -503,6 +503,10 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
503
503
|
}
|
|
504
504
|
}
|
|
505
505
|
}
|
|
506
|
+
else if (declaracao.inicializador instanceof construtos_1.Chamada) {
|
|
507
|
+
// Chamadas de método/função podem retornar vetores.
|
|
508
|
+
// A validação detalhada é feita em tempo de execução.
|
|
509
|
+
}
|
|
506
510
|
else {
|
|
507
511
|
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}': é esperado um vetor de elementos.`);
|
|
508
512
|
}
|
|
@@ -796,6 +800,29 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
796
800
|
// Verifica a condição
|
|
797
801
|
return this.verificarCondicao(declaracao.condicaoEnquanto);
|
|
798
802
|
}
|
|
803
|
+
async visitarDeclaracaoPara(declaracao) {
|
|
804
|
+
if (Array.isArray(declaracao.inicializador)) {
|
|
805
|
+
for (const inicializador of declaracao.inicializador) {
|
|
806
|
+
await inicializador.aceitar(this);
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
else if (declaracao.inicializador) {
|
|
810
|
+
await declaracao.inicializador.aceitar(this);
|
|
811
|
+
}
|
|
812
|
+
// O laço precisa visitar condição/incremento/corpo para registrar usos de variáveis.
|
|
813
|
+
if (declaracao.condicao) {
|
|
814
|
+
this.marcarVariaveisUsadasEmExpressao(declaracao.condicao);
|
|
815
|
+
await this.verificarCondicao(declaracao.condicao);
|
|
816
|
+
}
|
|
817
|
+
if (declaracao.incrementar) {
|
|
818
|
+
this.marcarVariaveisUsadasEmExpressao(declaracao.incrementar);
|
|
819
|
+
this.verificarExpressao(declaracao.incrementar);
|
|
820
|
+
}
|
|
821
|
+
for (const declaracaoCorpo of declaracao.corpo.declaracoes) {
|
|
822
|
+
await declaracaoCorpo.aceitar(this);
|
|
823
|
+
}
|
|
824
|
+
return Promise.resolve();
|
|
825
|
+
}
|
|
799
826
|
visitarDeclaracaoParaCada(declaracao) {
|
|
800
827
|
// Marca o vetor/dicionário como usado
|
|
801
828
|
this.marcarVariaveisUsadasEmExpressao(declaracao.vetorOuDicionario);
|
|
@@ -1058,10 +1085,11 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
1058
1085
|
case construtos_1.Variavel:
|
|
1059
1086
|
let entidadeChamadaVariavel = chamada.entidadeChamada;
|
|
1060
1087
|
const nomeFuncao = entidadeChamadaVariavel.simbolo.lexema;
|
|
1061
|
-
// Lista de funções
|
|
1062
|
-
const
|
|
1088
|
+
// Lista de funções embutidas que não precisam ser declaradas
|
|
1089
|
+
const funcoesEmbutidas = [
|
|
1063
1090
|
'inteiro',
|
|
1064
1091
|
'real',
|
|
1092
|
+
'numero',
|
|
1065
1093
|
'número',
|
|
1066
1094
|
'texto',
|
|
1067
1095
|
'leia',
|
|
@@ -1070,8 +1098,8 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
1070
1098
|
];
|
|
1071
1099
|
// Classes/construtores geralmente começam com letra maiúscula
|
|
1072
1100
|
const pareceSerClasse = nomeFuncao[0] === nomeFuncao[0].toUpperCase();
|
|
1073
|
-
// Só verifica se a função existe se não for
|
|
1074
|
-
if (!
|
|
1101
|
+
// Só verifica se a função existe se não for embutidas e não parecer ser classe
|
|
1102
|
+
if (!funcoesEmbutidas.includes(nomeFuncao) &&
|
|
1075
1103
|
!pareceSerClasse &&
|
|
1076
1104
|
!this.funcoes[nomeFuncao] &&
|
|
1077
1105
|
!this.gerenciadorEscopos.buscar(nomeFuncao)) {
|
|
@@ -2318,7 +2346,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2318
2346
|
case delegua_2.default.TEXTO:
|
|
2319
2347
|
const simboloNumeroTexto = this.avancarEDevolverAnterior();
|
|
2320
2348
|
const tipoInferido = (0, inferenciador_1.inferirTipoVariavel)(simboloNumeroTexto.literal);
|
|
2321
|
-
|
|
2349
|
+
const delimitadorTexto = simboloNumeroTexto.tipo === delegua_2.default.TEXTO
|
|
2350
|
+
? simboloNumeroTexto.delimitadorTexto
|
|
2351
|
+
: undefined;
|
|
2352
|
+
return new construtos_1.Literal(this.hashArquivo, Number(simboloNumeroTexto.linha), simboloNumeroTexto.literal, tipoInferido, delimitadorTexto);
|
|
2322
2353
|
case delegua_2.default.PARA:
|
|
2323
2354
|
const simboloPara = this.avancarEDevolverAnterior();
|
|
2324
2355
|
return await this.paraComoConstruto(simboloPara);
|
|
@@ -8316,7 +8347,7 @@ class AvaliadorSintaticoPrisma extends avaliador_sintatico_base_1.AvaliadorSinta
|
|
|
8316
8347
|
inicializarPilhaEscopos() {
|
|
8317
8348
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
8318
8349
|
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
8319
|
-
// Registrar funções nativas (
|
|
8350
|
+
// Registrar funções nativas (embutidos) do Prisma no escopo do parser
|
|
8320
8351
|
// para evitar erros de variável não definida durante análise semântica
|
|
8321
8352
|
this.pilhaEscopos.definirInformacoesVariavel('tipo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('tipo', 'função', true, [
|
|
8322
8353
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
@@ -13369,11 +13400,12 @@ exports.ListaCompreensao = ListaCompreensao;
|
|
|
13369
13400
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13370
13401
|
exports.Literal = void 0;
|
|
13371
13402
|
class Literal {
|
|
13372
|
-
constructor(hashArquivo, linha, valor, tipo = 'qualquer') {
|
|
13403
|
+
constructor(hashArquivo, linha, valor, tipo = 'qualquer', delimitadorTexto) {
|
|
13373
13404
|
this.linha = linha;
|
|
13374
13405
|
this.hashArquivo = hashArquivo;
|
|
13375
13406
|
this.valor = valor;
|
|
13376
13407
|
this.tipo = tipo;
|
|
13408
|
+
this.delimitadorTexto = delimitadorTexto;
|
|
13377
13409
|
}
|
|
13378
13410
|
async aceitar(visitante) {
|
|
13379
13411
|
return await visitante.visitarExpressaoLiteral(this);
|
|
@@ -14999,6 +15031,7 @@ exports.Var = Var;
|
|
|
14999
15031
|
"use strict";
|
|
15000
15032
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15001
15033
|
exports.EstilizadorDelegua = void 0;
|
|
15034
|
+
const formatadores_1 = require("../formatadores");
|
|
15002
15035
|
/**
|
|
15003
15036
|
* Estilizador de código para Delégua.
|
|
15004
15037
|
* Aplica transformações no AST para enforcar convenções e melhorar qualidade do código.
|
|
@@ -15225,10 +15258,18 @@ class EstilizadorDelegua {
|
|
|
15225
15258
|
this.modoValidacao = false;
|
|
15226
15259
|
return violacoesEncontradas;
|
|
15227
15260
|
}
|
|
15261
|
+
estilizarEFormatar(declaracoes, opcoesFormatacao = {}) {
|
|
15262
|
+
var _a;
|
|
15263
|
+
const declaracoesEstilizadas = this.estilizar(declaracoes);
|
|
15264
|
+
const formatador = new formatadores_1.FormatadorDelegua(opcoesFormatacao.quebraLinha || '\n', (_a = opcoesFormatacao.tamanhoIndentacao) !== null && _a !== void 0 ? _a : 4, {
|
|
15265
|
+
delimitadorTexto: opcoesFormatacao.delimitadorTexto,
|
|
15266
|
+
});
|
|
15267
|
+
return formatador.formatar(declaracoesEstilizadas);
|
|
15268
|
+
}
|
|
15228
15269
|
}
|
|
15229
15270
|
exports.EstilizadorDelegua = EstilizadorDelegua;
|
|
15230
15271
|
|
|
15231
|
-
},{}],125:[function(require,module,exports){
|
|
15272
|
+
},{"../formatadores":134}],125:[function(require,module,exports){
|
|
15232
15273
|
"use strict";
|
|
15233
15274
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15234
15275
|
if (k2 === undefined) k2 = k;
|
|
@@ -15642,13 +15683,23 @@ const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
|
|
|
15642
15683
|
* Normalmente usado por IDEs, mas pode ser usado por linha de comando ou programaticamente.
|
|
15643
15684
|
*/
|
|
15644
15685
|
class FormatadorDelegua {
|
|
15645
|
-
constructor(quebraLinha, tamanhoIndentacao = 4) {
|
|
15686
|
+
constructor(quebraLinha, tamanhoIndentacao = 4, opcoes = {}) {
|
|
15646
15687
|
this.quebraLinha = quebraLinha;
|
|
15647
15688
|
this.tamanhoIndentacao = tamanhoIndentacao;
|
|
15648
15689
|
this.indentacaoAtual = 0;
|
|
15649
15690
|
this.codigoFormatado = '';
|
|
15650
15691
|
this.devePularLinha = true;
|
|
15651
15692
|
this.deveIndentar = true;
|
|
15693
|
+
this.delimitadorTexto = opcoes.delimitadorTexto || 'aspas-simples';
|
|
15694
|
+
}
|
|
15695
|
+
obterDelimitadorTexto(expressao) {
|
|
15696
|
+
if (this.delimitadorTexto === 'aspas-duplas') {
|
|
15697
|
+
return '"';
|
|
15698
|
+
}
|
|
15699
|
+
if (this.delimitadorTexto === 'preservar' && expressao.delimitadorTexto) {
|
|
15700
|
+
return expressao.delimitadorTexto;
|
|
15701
|
+
}
|
|
15702
|
+
return "'";
|
|
15652
15703
|
}
|
|
15653
15704
|
/* istanbul ignore next */
|
|
15654
15705
|
visitarExpressaoTuplaN(expressao) {
|
|
@@ -15688,7 +15739,7 @@ class FormatadorDelegua {
|
|
|
15688
15739
|
}
|
|
15689
15740
|
visitarDeclaracaoComentario(declaracao) {
|
|
15690
15741
|
if (declaracao.multilinha) {
|
|
15691
|
-
this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}
|
|
15742
|
+
this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}/*${this.quebraLinha}`;
|
|
15692
15743
|
for (let linhaConteudo of declaracao.conteudo) {
|
|
15693
15744
|
this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)} ${linhaConteudo.replace(/\s+/g, ' ')}${this.quebraLinha}`;
|
|
15694
15745
|
}
|
|
@@ -16147,13 +16198,19 @@ class FormatadorDelegua {
|
|
|
16147
16198
|
}
|
|
16148
16199
|
visitarExpressaoLiteral(expressao) {
|
|
16149
16200
|
if (typeof expressao.valor === 'string') {
|
|
16150
|
-
const
|
|
16201
|
+
const delimitador = this.obterDelimitadorTexto(expressao);
|
|
16202
|
+
let valorTexto = expressao.valor
|
|
16151
16203
|
.replace(/\\/g, '\\\\')
|
|
16152
16204
|
.replace(/\r/g, '\\r')
|
|
16153
16205
|
.replace(/\n/g, '\\n')
|
|
16154
|
-
.replace(/\t/g, '\\t')
|
|
16155
|
-
|
|
16156
|
-
|
|
16206
|
+
.replace(/\t/g, '\\t');
|
|
16207
|
+
if (delimitador === "'") {
|
|
16208
|
+
valorTexto = valorTexto.replace(/'/g, "\\'");
|
|
16209
|
+
}
|
|
16210
|
+
else {
|
|
16211
|
+
valorTexto = valorTexto.replace(/"/g, '\\"');
|
|
16212
|
+
}
|
|
16213
|
+
this.codigoFormatado += `${delimitador}${valorTexto}${delimitador}`;
|
|
16157
16214
|
return;
|
|
16158
16215
|
}
|
|
16159
16216
|
if (['logico', 'lógico'].includes(expressao.tipo)) {
|
|
@@ -16271,6 +16328,9 @@ class FormatadorDelegua {
|
|
|
16271
16328
|
case declaracoes_1.Classe:
|
|
16272
16329
|
this.visitarDeclaracaoClasse(declaracaoOuConstruto);
|
|
16273
16330
|
break;
|
|
16331
|
+
case declaracoes_1.Comentario:
|
|
16332
|
+
this.visitarDeclaracaoComentario(declaracaoOuConstruto);
|
|
16333
|
+
break;
|
|
16274
16334
|
case declaracoes_1.Continua:
|
|
16275
16335
|
this.visitarExpressaoContinua(declaracaoOuConstruto);
|
|
16276
16336
|
break;
|
|
@@ -17173,7 +17233,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17173
17233
|
__exportStar(require("./avaliador-sintatico-interface"), exports);
|
|
17174
17234
|
__exportStar(require("./componente-modulo-classe-interface"), exports);
|
|
17175
17235
|
__exportStar(require("./componente-modulo-funcao-interface"), exports);
|
|
17176
|
-
__exportStar(require("./estilizador-
|
|
17236
|
+
__exportStar(require("./estilizador/estilizador-interface"), exports);
|
|
17177
17237
|
__exportStar(require("./formatador-comum-interface"), exports);
|
|
17178
17238
|
__exportStar(require("./interpretador-com-depuracao-interface"), exports);
|
|
17179
17239
|
__exportStar(require("./interpretador-interface"), exports);
|
|
@@ -17194,7 +17254,7 @@ __exportStar(require("./construtos"), exports);
|
|
|
17194
17254
|
__exportStar(require("./erros"), exports);
|
|
17195
17255
|
__exportStar(require("./retornos"), exports);
|
|
17196
17256
|
|
|
17197
|
-
},{"./avaliador-sintatico-interface":139,"./componente-modulo-classe-interface":140,"./componente-modulo-funcao-interface":141,"./construtos":142,"./erros":146,"./estilizador-
|
|
17257
|
+
},{"./avaliador-sintatico-interface":139,"./componente-modulo-classe-interface":140,"./componente-modulo-funcao-interface":141,"./construtos":142,"./erros":146,"./estilizador/estilizador-interface":147,"./formatador-comum-interface":148,"./interpretador-com-depuracao-interface":150,"./interpretador-interface":151,"./lexador-interface":152,"./modulo-interface":153,"./parametro-interface":154,"./pilha-interface":155,"./primitiva-interface":156,"./resolvedor-interface":157,"./resultado-parcial-interpretador-interface":158,"./retornos":159,"./retornos/retorno-execucao-interface":162,"./simbolo-interface":165,"./tradutor-interface":166,"./variavel-interface":167,"./visitante-comum-interface":168,"./visitante-delegua-interface":169}],150:[function(require,module,exports){
|
|
17198
17258
|
"use strict";
|
|
17199
17259
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17200
17260
|
|
|
@@ -26131,6 +26191,8 @@ class Lexador {
|
|
|
26131
26191
|
if (caractere === delimitador) {
|
|
26132
26192
|
this.avancar();
|
|
26133
26193
|
this.adicionarSimbolo(delegua_1.default.TEXTO, valor);
|
|
26194
|
+
const ultimoSimbolo = this.simbolos[this.simbolos.length - 1];
|
|
26195
|
+
ultimoSimbolo.delimitadorTexto = delimitador;
|
|
26134
26196
|
return;
|
|
26135
26197
|
}
|
|
26136
26198
|
if (caractere === '\0' && this.eUltimaLinha()) {
|
|
@@ -26739,11 +26801,11 @@ function obterMapaLexemaParaParadigma() {
|
|
|
26739
26801
|
*/
|
|
26740
26802
|
function obterFormaAlternativa(lexema, paradigmaAlvo) {
|
|
26741
26803
|
var _a, _b;
|
|
26742
|
-
const
|
|
26804
|
+
const lexemaMinusculo = lexema.toLowerCase();
|
|
26743
26805
|
// Encontra o grupo que contém este lexema
|
|
26744
26806
|
for (const grupo of exports.gruposPalavrasParadigma) {
|
|
26745
|
-
const temImperativo = (_a = grupo.imperativo) === null || _a === void 0 ? void 0 : _a.some((p) => p ===
|
|
26746
|
-
const temInfinitivo = (_b = grupo.infinitivo) === null || _b === void 0 ? void 0 : _b.some((p) => p ===
|
|
26807
|
+
const temImperativo = (_a = grupo.imperativo) === null || _a === void 0 ? void 0 : _a.some((p) => p === lexemaMinusculo);
|
|
26808
|
+
const temInfinitivo = (_b = grupo.infinitivo) === null || _b === void 0 ? void 0 : _b.some((p) => p === lexemaMinusculo);
|
|
26747
26809
|
if (temImperativo || temInfinitivo) {
|
|
26748
26810
|
// Retorna a primeira forma do paradigma alvo
|
|
26749
26811
|
if (paradigmaAlvo === 'imperativo' && grupo.imperativo && grupo.imperativo.length > 0) {
|
|
@@ -27337,7 +27399,7 @@ exports.palavrasReservadasMicroGramatica = {
|
|
|
27337
27399
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27338
27400
|
exports.Simbolo = void 0;
|
|
27339
27401
|
class Simbolo {
|
|
27340
|
-
constructor(tipo, lexema, literal, linha, hashArquivo, colunaInicio = 0, colunaFim = 0) {
|
|
27402
|
+
constructor(tipo, lexema, literal, linha, hashArquivo, colunaInicio = 0, colunaFim = 0, delimitadorTexto) {
|
|
27341
27403
|
this.tipo = tipo;
|
|
27342
27404
|
this.lexema = lexema;
|
|
27343
27405
|
this.literal = literal;
|
|
@@ -27345,6 +27407,7 @@ class Simbolo {
|
|
|
27345
27407
|
this.hashArquivo = hashArquivo;
|
|
27346
27408
|
this.colunaInicio = colunaInicio;
|
|
27347
27409
|
this.colunaFim = colunaFim;
|
|
27410
|
+
this.delimitadorTexto = delimitadorTexto;
|
|
27348
27411
|
}
|
|
27349
27412
|
paraTexto() {
|
|
27350
27413
|
return this.tipo + ' ' + this.lexema + ' ' + this.literal;
|
|
@@ -43475,7 +43538,7 @@ class TradutorAssemblyScript {
|
|
|
43475
43538
|
}
|
|
43476
43539
|
traduzirDeclaracaoTendoComo(declaracaoTendoComo) {
|
|
43477
43540
|
// TendoComo is a resource management pattern (like try-with-resources in Java)
|
|
43478
|
-
// AssemblyScript doesn't have
|
|
43541
|
+
// AssemblyScript doesn't have embutidos support, so we'll just treat it as a scope
|
|
43479
43542
|
let resultado = `// tendo ${declaracaoTendoComo.simboloVariavel.lexema} como recurso\n`;
|
|
43480
43543
|
resultado += ' '.repeat(this.indentacao);
|
|
43481
43544
|
resultado += `let ${declaracaoTendoComo.simboloVariavel.lexema} = `;
|
|
@@ -44824,7 +44887,7 @@ class TradutorElixir {
|
|
|
44824
44887
|
return Promise.resolve(`${objeto}.${metodo}`);
|
|
44825
44888
|
}
|
|
44826
44889
|
/**
|
|
44827
|
-
* Mapeia métodos
|
|
44890
|
+
* Mapeia métodos embutidos de Delégua para Elixir
|
|
44828
44891
|
*/
|
|
44829
44892
|
mapearMetodoBuiltIn(metodo, objeto, argumentos) {
|
|
44830
44893
|
switch (metodo) {
|
|
@@ -44956,7 +45019,7 @@ class TradutorElixir {
|
|
|
44956
45019
|
const acessoMetodo = expressao.entidadeChamada;
|
|
44957
45020
|
const objeto = await acessoMetodo.objeto.aceitar(this);
|
|
44958
45021
|
const metodo = this.converterIdentificador(acessoMetodo.nomeMetodo);
|
|
44959
|
-
// Mapear métodos
|
|
45022
|
+
// Mapear métodos embutidos
|
|
44960
45023
|
const metodoMapeado = this.mapearMetodoBuiltIn(metodo, objeto, argumentos);
|
|
44961
45024
|
if (metodoMapeado) {
|
|
44962
45025
|
return Promise.resolve(metodoMapeado);
|
|
@@ -44968,7 +45031,7 @@ class TradutorElixir {
|
|
|
44968
45031
|
const acesso = expressao.entidadeChamada;
|
|
44969
45032
|
const objeto = await acesso.objeto.aceitar(this);
|
|
44970
45033
|
const simbolo = this.converterIdentificador(acesso.simbolo.lexema);
|
|
44971
|
-
// Mapear métodos
|
|
45034
|
+
// Mapear métodos embutidos
|
|
44972
45035
|
const metodoMapeado = this.mapearMetodoBuiltIn(simbolo, objeto, argumentos);
|
|
44973
45036
|
if (metodoMapeado) {
|
|
44974
45037
|
return Promise.resolve(metodoMapeado);
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Declaracao } from '../declaracoes/declaracao';
|
|
2
|
-
import { Construto } from '../construtos';
|
|
3
|
-
/**
|
|
4
|
-
* Define uma regra de transformação/estilização de código.
|
|
5
|
-
*/
|
|
6
|
-
export interface RegraEstilizacao {
|
|
7
|
-
/**
|
|
8
|
-
* Nome da regra para identificação e logs.
|
|
9
|
-
*/
|
|
10
|
-
nome: string;
|
|
11
|
-
/**
|
|
12
|
-
* Descrição do que a regra faz.
|
|
13
|
-
*/
|
|
14
|
-
descricao: string;
|
|
15
|
-
/**
|
|
16
|
-
* Aplica a regra em uma declaração.
|
|
17
|
-
* @param declaracao A declaração a ser verificada/transformada.
|
|
18
|
-
* @returns A declaração (modificada ou não).
|
|
19
|
-
*/
|
|
20
|
-
aplicarEmDeclaracao?(declaracao: Declaracao): Declaracao;
|
|
21
|
-
/**
|
|
22
|
-
* Aplica a regra em um construto.
|
|
23
|
-
* @param construto O construto a ser verificado/transformado.
|
|
24
|
-
* @returns O construto (modificado ou não).
|
|
25
|
-
*/
|
|
26
|
-
aplicarEmConstruto?(construto: Construto): Construto;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Interface base para estilizadores de código.
|
|
30
|
-
* Um estilizador aplica transformações no AST para enforcar convenções e melhorar a qualidade do código.
|
|
31
|
-
*/
|
|
32
|
-
export interface EstilizadorComumInterface {
|
|
33
|
-
/**
|
|
34
|
-
* Regras de estilização ativas.
|
|
35
|
-
*/
|
|
36
|
-
regras: RegraEstilizacao[];
|
|
37
|
-
/**
|
|
38
|
-
* Adiciona uma regra de estilização.
|
|
39
|
-
* @param regra A regra a ser adicionada.
|
|
40
|
-
*/
|
|
41
|
-
adicionarRegra(regra: RegraEstilizacao): void;
|
|
42
|
-
/**
|
|
43
|
-
* Remove uma regra de estilização pelo nome.
|
|
44
|
-
* @param nomeRegra O nome da regra a ser removida.
|
|
45
|
-
*/
|
|
46
|
-
removerRegra(nomeRegra: string): void;
|
|
47
|
-
/**
|
|
48
|
-
* Aplica as regras de estilização em um conjunto de declarações.
|
|
49
|
-
* @param declaracoes As declarações a serem estilizadas.
|
|
50
|
-
* @returns As declarações estilizadas (modificadas ou não).
|
|
51
|
-
*/
|
|
52
|
-
estilizar(declaracoes: Declaracao[]): Declaracao[];
|
|
53
|
-
/**
|
|
54
|
-
* Valida se o código atende todas as regras sem aplicar transformações.
|
|
55
|
-
* @param declaracoes As declarações a serem validadas.
|
|
56
|
-
* @returns Array de violações encontradas.
|
|
57
|
-
*/
|
|
58
|
-
validar(declaracoes: Declaracao[]): ViolacaoEstilo[];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Representa uma violação de estilo encontrada.
|
|
62
|
-
*/
|
|
63
|
-
export interface ViolacaoEstilo {
|
|
64
|
-
/**
|
|
65
|
-
* Nome da regra violada.
|
|
66
|
-
*/
|
|
67
|
-
regra: string;
|
|
68
|
-
/**
|
|
69
|
-
* Mensagem descritiva da violação.
|
|
70
|
-
*/
|
|
71
|
-
mensagem: string;
|
|
72
|
-
/**
|
|
73
|
-
* Linha onde a violação ocorreu.
|
|
74
|
-
*/
|
|
75
|
-
linha: number;
|
|
76
|
-
/**
|
|
77
|
-
* Hash do arquivo onde a violação ocorreu.
|
|
78
|
-
*/
|
|
79
|
-
hashArquivo: number;
|
|
80
|
-
/**
|
|
81
|
-
* Severidade da violação.
|
|
82
|
-
*/
|
|
83
|
-
severidade: 'erro' | 'aviso' | 'informacao';
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=estilizador-comum-interface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"estilizador-comum-interface.d.ts","sourceRoot":"","sources":["../../fontes/interfaces/estilizador-comum-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IAEzD;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;;OAIG;IACH,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAEnD;;;;OAIG;IACH,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;CAC/C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"estilizador-comum-interface.js","sourceRoot":"","sources":["../../fontes/interfaces/estilizador-comum-interface.ts"],"names":[],"mappings":""}
|