@designliquido/delegua 0.57.2 → 0.58.0
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/avaliador-sintatico/avaliador-sintatico.d.ts +7 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +69 -14
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +3 -3
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +26 -10
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts +23 -0
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts.map +1 -0
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js +199 -0
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js.map +1 -0
- package/avaliador-sintatico/elemento-montao-tipos.d.ts.map +1 -1
- package/avaliador-sintatico/elemento-montao-tipos.js.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/montao-tipos.d.ts +1 -1
- package/avaliador-sintatico/montao-tipos.d.ts.map +1 -1
- package/avaliador-sintatico/montao-tipos.js.map +1 -1
- package/avaliador-sintatico/pilha-escopos.d.ts.map +1 -1
- package/avaliador-sintatico/pilha-escopos.js.map +1 -1
- package/bibliotecas/biblioteca-global.d.ts +7 -0
- package/bibliotecas/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/biblioteca-global.js +206 -0
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.js +8 -2
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts +169 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js +686 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js +56 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.js +84 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js +254 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.js +373 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.js.map +1 -0
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/primitivas-vetor.js +6 -5
- package/bibliotecas/primitivas-vetor.js.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/elvis.d.ts +2 -2
- package/construtos/elvis.d.ts.map +1 -1
- package/construtos/elvis.js.map +1 -1
- package/construtos/enquanto-como-construto.d.ts +4 -4
- package/construtos/fazer-como-construto.d.ts +4 -4
- package/construtos/importar-como-construto.d.ts +3 -3
- package/construtos/importar-como-construto.d.ts.map +1 -1
- package/construtos/importar-como-construto.js.map +1 -1
- package/construtos/para-cada-como-construto.d.ts +6 -6
- package/construtos/para-como-construto.d.ts +4 -4
- package/construtos/se-ternario.d.ts +2 -2
- package/formatadores/formatador-pitugues.d.ts.map +1 -1
- package/formatadores/formatador-pitugues.js.map +1 -1
- package/geracao-identificadores/index.d.ts.map +1 -1
- package/geracao-identificadores/index.js.map +1 -1
- package/informacao-elemento-sintatico.d.ts +1 -1
- package/interfaces/delegua/enquanto-interface.d.ts +2 -2
- package/interfaces/delegua/fazer-interface.d.ts +2 -2
- package/interfaces/delegua/para-cada-interface.d.ts +2 -2
- package/interfaces/delegua/para-interface.d.ts +2 -2
- package/interfaces/visitante-comum-interface.d.ts.map +1 -1
- package/interfaces/visitante-delegua-interface.d.ts +3 -3
- package/interfaces/visitante-delegua-interface.d.ts.map +1 -1
- package/interpretador/comum.d.ts.map +1 -1
- package/interpretador/comum.js +1 -0
- package/interpretador/comum.js.map +1 -1
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +6 -3
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/dialetos/pitugues/index.d.ts +2 -0
- package/interpretador/dialetos/pitugues/index.d.ts.map +1 -0
- package/interpretador/dialetos/pitugues/index.js +18 -0
- package/interpretador/dialetos/pitugues/index.js.map +1 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +17 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js +248 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -0
- package/interpretador/estruturas/classe-de-modulo.d.ts +1 -1
- package/interpretador/estruturas/classe-de-modulo.d.ts.map +1 -1
- package/interpretador/estruturas/classe-de-modulo.js.map +1 -1
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +2 -5
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts +5 -0
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +39 -22
- package/interpretador/interpretador.js.map +1 -1
- package/lexador/dialetos/lexador-pitugues.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.d.ts +1 -0
- package/lexador/dialetos/palavras-reservadas/pitugues.d.ts.map +1 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.js +2 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.js.map +1 -1
- package/package.json +1 -1
- package/quebras/index.d.ts.map +1 -1
- package/quebras/index.js.map +1 -1
- package/tipos-de-simbolos/pitugues.d.ts.map +1 -1
- package/tipos-de-simbolos/pitugues.js.map +1 -1
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-python.d.ts.map +1 -1
- package/tradutores/tradutor-python.js.map +1 -1
- package/umd/delegua.js +354 -60
package/umd/delegua.js
CHANGED
|
@@ -293,6 +293,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
293
293
|
this.primitivasConhecidas = {};
|
|
294
294
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
295
295
|
this.montaoTipos = new montao_tipos_1.MontaoTipos();
|
|
296
|
+
this.intuirTipoQualquerParaIdentificadores = false;
|
|
296
297
|
(0, comum_1.registrarPrimitiva)(this.primitivasConhecidas, 'dicionário', primitivas_dicionario_1.default);
|
|
297
298
|
(0, comum_1.registrarPrimitiva)(this.primitivasConhecidas, 'número', primitivas_numero_1.default);
|
|
298
299
|
(0, comum_1.registrarPrimitiva)(this.primitivasConhecidas, 'texto', primitivas_texto_1.default);
|
|
@@ -443,6 +444,34 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
443
444
|
this.blocos -= 1;
|
|
444
445
|
}
|
|
445
446
|
}
|
|
447
|
+
/**
|
|
448
|
+
* Resolve uma lista de compreensão.
|
|
449
|
+
* @returns {ListaCompreensao} A lista de compreensão resolvida.
|
|
450
|
+
*/
|
|
451
|
+
resolverCompreensaoDeLista(retornoExpressao) {
|
|
452
|
+
this.consumir(delegua_2.default.PARA, "Esperado instrução 'para' após identificado.");
|
|
453
|
+
this.consumir(delegua_2.default.CADA, "Esperado instrução 'cada' após 'para'.");
|
|
454
|
+
const simboloVariavelIteracao = this.consumir(delegua_2.default.IDENTIFICADOR, "Esperado identificador de variável após 'para cada'.");
|
|
455
|
+
if (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.DE, delegua_2.default.EM)) {
|
|
456
|
+
throw this.erro(this.simbolos[this.atual], "Esperado palavras reservadas 'em' ou 'de' após variável de iteração em instrução em lista de compreensão.");
|
|
457
|
+
}
|
|
458
|
+
const localizacaoVetor = this.simboloAnterior();
|
|
459
|
+
const vetor = this.ou();
|
|
460
|
+
this.consumir(delegua_2.default.SE, "Esperado condição 'se' após vetor.");
|
|
461
|
+
const condicao = this.expressao();
|
|
462
|
+
this.consumir(delegua_2.default.COLCHETE_DIREITO, 'Espero fechamento de colchetes após condição.');
|
|
463
|
+
const tipoVetor = vetor.tipo;
|
|
464
|
+
if (!tipoVetor.endsWith('[]') && !['qualquer', 'vetor'].includes(tipoVetor)) {
|
|
465
|
+
throw this.erro(localizacaoVetor, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
466
|
+
}
|
|
467
|
+
const variavelIteracao = new construtos_1.Variavel(this.hashArquivo, simboloVariavelIteracao);
|
|
468
|
+
return new construtos_1.ListaCompreensao(Number(this.simbolos[this.atual]), this.hashArquivo, retornoExpressao, vetor, new construtos_1.ParaCadaComoConstruto(retornoExpressao.hashArquivo, retornoExpressao.linha, variavelIteracao, vetor, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
469
|
+
new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
470
|
+
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao),
|
|
471
|
+
]), [], null),
|
|
472
|
+
])), 'qualquer[]' // TODO: Talvez um dia inferir o tipo aqui.
|
|
473
|
+
);
|
|
474
|
+
}
|
|
446
475
|
primario() {
|
|
447
476
|
const simboloAtual = this.simbolos[this.atual];
|
|
448
477
|
let valores = [];
|
|
@@ -458,6 +487,16 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
458
487
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.PARENTESE_ESQUERDO)) {
|
|
459
488
|
return this.construtoTupla();
|
|
460
489
|
}
|
|
490
|
+
// Ao resolver a expressão aqui, identificadores dentro da expressão de compreensão
|
|
491
|
+
// de lista serão tratados como 'qualquer', para evitar erros de tipo.
|
|
492
|
+
this.intuirTipoQualquerParaIdentificadores = true;
|
|
493
|
+
const retornoExpressaoOuPrimeiroValor = this.seTernario();
|
|
494
|
+
this.intuirTipoQualquerParaIdentificadores = false;
|
|
495
|
+
if (this.simbolos[this.atual].tipo === delegua_2.default.PARA) {
|
|
496
|
+
return this.resolverCompreensaoDeLista(retornoExpressaoOuPrimeiroValor);
|
|
497
|
+
}
|
|
498
|
+
// Aqui já sabemos que não é uma compreensão de lista.
|
|
499
|
+
valores.push(retornoExpressaoOuPrimeiroValor);
|
|
461
500
|
while (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.COLCHETE_DIREITO)) {
|
|
462
501
|
switch (this.simbolos[this.atual].tipo) {
|
|
463
502
|
case delegua_2.default.VIRGULA:
|
|
@@ -469,7 +508,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
469
508
|
valores.push(new construtos_1.ComentarioComoConstruto(simboloComentario));
|
|
470
509
|
break;
|
|
471
510
|
default:
|
|
472
|
-
const valor = this.
|
|
511
|
+
const valor = this.seTernario();
|
|
473
512
|
valores.push(valor);
|
|
474
513
|
break;
|
|
475
514
|
}
|
|
@@ -527,7 +566,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
527
566
|
case delegua_2.default.IDENTIFICADOR:
|
|
528
567
|
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
529
568
|
let tipoOperando;
|
|
530
|
-
if (
|
|
569
|
+
if (this.intuirTipoQualquerParaIdentificadores) {
|
|
570
|
+
// Esta indicação é utilizada para compreensões de lista, onde o
|
|
571
|
+
// tipo do identificador de iteração é 'qualquer' por definição.
|
|
572
|
+
tipoOperando = 'qualquer';
|
|
573
|
+
this.pilhaEscopos.definirInformacoesVariavel(simboloIdentificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(simboloIdentificador.lexema, 'qualquer') // TODO: Talvez um dia inferir o tipo aqui.
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
else if (simboloIdentificador.lexema in this.tiposDefinidosEmCodigo) {
|
|
531
577
|
tipoOperando = simboloIdentificador.lexema;
|
|
532
578
|
}
|
|
533
579
|
else {
|
|
@@ -663,7 +709,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
663
709
|
const nome = this.consumir(delegua_2.default.IDENTIFICADOR, "Esperado nome de método ou propriedade após '.'.");
|
|
664
710
|
let tipoInferido = expressaoAnterior.tipo;
|
|
665
711
|
// Se não for um dicionário anônimo (ou seja, ser variável ou constante com nome)
|
|
666
|
-
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
712
|
+
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
713
|
+
expressaoAnterior.constructor !== construtos_1.Dicionario) {
|
|
667
714
|
// TODO: Achar algum caso em que aqui não seja variável.
|
|
668
715
|
const nomeDicionario = expressaoAnterior.simbolo.lexema;
|
|
669
716
|
const elementoDicionarioPilha = this.pilhaEscopos.obterElementoMontaoTipos(nomeDicionario);
|
|
@@ -1082,7 +1129,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1082
1129
|
const corpo = this.resolverDeclaracao();
|
|
1083
1130
|
return {
|
|
1084
1131
|
condicao,
|
|
1085
|
-
corpo
|
|
1132
|
+
corpo,
|
|
1086
1133
|
};
|
|
1087
1134
|
}
|
|
1088
1135
|
declaracaoEnquanto() {
|
|
@@ -1187,7 +1234,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1187
1234
|
const condicaoEnquanto = this.expressao();
|
|
1188
1235
|
return {
|
|
1189
1236
|
caminhoFazer,
|
|
1190
|
-
condicaoEnquanto
|
|
1237
|
+
condicaoEnquanto,
|
|
1191
1238
|
};
|
|
1192
1239
|
}
|
|
1193
1240
|
declaracaoFazer(simboloFazer) {
|
|
@@ -1218,7 +1265,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1218
1265
|
case delegua_2.default.CHAVE_ESQUERDA:
|
|
1219
1266
|
this.avancarEDevolverAnterior();
|
|
1220
1267
|
do {
|
|
1221
|
-
const identificadorImportacao = this.consumir(delegua_2.default.IDENTIFICADOR,
|
|
1268
|
+
const identificadorImportacao = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado identificador de elemento a ser importado.');
|
|
1222
1269
|
elementosImportacao.push(identificadorImportacao);
|
|
1223
1270
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
1224
1271
|
this.consumir(delegua_2.default.CHAVE_DIREITA, "Esperado '}' após lista de elementos a serem importados.");
|
|
@@ -1285,7 +1332,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1285
1332
|
nomeVariavelChave,
|
|
1286
1333
|
nomeVariavelValor,
|
|
1287
1334
|
dicionario,
|
|
1288
|
-
corpo
|
|
1335
|
+
corpo,
|
|
1289
1336
|
};
|
|
1290
1337
|
}
|
|
1291
1338
|
declaracaoParaCadaDicionario(simboloPara) {
|
|
@@ -1309,7 +1356,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1309
1356
|
}
|
|
1310
1357
|
}
|
|
1311
1358
|
const tipoVetor = vetor.tipo;
|
|
1312
|
-
if (!tipoVetor.endsWith('[]') &&
|
|
1359
|
+
if (!tipoVetor.endsWith('[]') &&
|
|
1360
|
+
!['dicionário', 'qualquer', 'texto', 'vetor'].includes(tipoVetor)) {
|
|
1313
1361
|
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
1314
1362
|
}
|
|
1315
1363
|
let tipoVariavelIteracao = 'qualquer';
|
|
@@ -1322,7 +1370,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1322
1370
|
return {
|
|
1323
1371
|
variavelIteracao,
|
|
1324
1372
|
vetor,
|
|
1325
|
-
corpo
|
|
1373
|
+
corpo,
|
|
1326
1374
|
};
|
|
1327
1375
|
}
|
|
1328
1376
|
declaracaoParaCadaVetor(simboloPara) {
|
|
@@ -1373,7 +1421,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1373
1421
|
inicializador,
|
|
1374
1422
|
condicao,
|
|
1375
1423
|
incrementar,
|
|
1376
|
-
corpo
|
|
1424
|
+
corpo,
|
|
1377
1425
|
};
|
|
1378
1426
|
}
|
|
1379
1427
|
declaracaoParaTradicional(simboloPara) {
|
|
@@ -1642,11 +1690,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1642
1690
|
if (!tipoCorrespondente) {
|
|
1643
1691
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaAcessoMetodoOuPropriedade.simbolo, `Tipo '${entidadeChamadaAcessoMetodoOuPropriedade.objeto.tipo}' não foi encontrado entre os tipos definidos por bibliotecas.`);
|
|
1644
1692
|
}
|
|
1645
|
-
if (!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1646
|
-
|
|
1693
|
+
if (!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1694
|
+
tipoCorrespondente.metodos) &&
|
|
1695
|
+
!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1696
|
+
tipoCorrespondente.propriedades)) {
|
|
1647
1697
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaAcessoMetodoOuPropriedade.simbolo, `Membro '${entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema}' não existe no tipo '${entidadeChamadaAcessoMetodoOuPropriedade.objeto.tipo}'.`);
|
|
1648
1698
|
}
|
|
1649
|
-
if (entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1699
|
+
if (entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1700
|
+
tipoCorrespondente.metodos) {
|
|
1650
1701
|
return tipoCorrespondente.metodos[entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema].tipo;
|
|
1651
1702
|
}
|
|
1652
1703
|
return tipoCorrespondente.propriedades[entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema].tipo;
|
|
@@ -1713,7 +1764,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1713
1764
|
for (var i = 0; i < construto.valores.length; i++) {
|
|
1714
1765
|
const chaveCorrespondente = this.resolverValorConstruto(construto.chaves[i]);
|
|
1715
1766
|
const valorCorrespondente = construto.valores[i];
|
|
1716
|
-
subElementos[chaveCorrespondente] =
|
|
1767
|
+
subElementos[chaveCorrespondente] =
|
|
1768
|
+
this.resolverInformacaoElementoSintaticoDeDicionario(valorCorrespondente);
|
|
1717
1769
|
}
|
|
1718
1770
|
retorno.subElementos = subElementos;
|
|
1719
1771
|
const endereco = this.montaoTipos.adicionarReferencia(retorno);
|
|
@@ -2066,6 +2118,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2066
2118
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2067
2119
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2068
2120
|
]));
|
|
2121
|
+
this.pilhaEscopos.definirInformacoesVariavel('clonar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('clonar', 'qualquer', true, [
|
|
2122
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
2123
|
+
]));
|
|
2069
2124
|
this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrar', 'qualquer', true, [
|
|
2070
2125
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2071
2126
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
@@ -3182,7 +3237,6 @@ const primitivas_dicionario_1 = __importDefault(require("../../bibliotecas/primi
|
|
|
3182
3237
|
const primitivas_numero_1 = __importDefault(require("../../bibliotecas/primitivas-numero"));
|
|
3183
3238
|
const primitivas_texto_1 = __importDefault(require("../../bibliotecas/primitivas-texto"));
|
|
3184
3239
|
const primitivas_vetor_1 = __importDefault(require("../../bibliotecas/primitivas-vetor"));
|
|
3185
|
-
const lista_compreensao_1 = require("../../construtos/lista-compreensao");
|
|
3186
3240
|
/**
|
|
3187
3241
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
3188
3242
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -3409,8 +3463,9 @@ class AvaliadorSintaticoPitugues {
|
|
|
3409
3463
|
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
3410
3464
|
return new construtos_1.Vetor(this.hashArquivo, simboloAtual.linha, [], 0, 'qualquer[]');
|
|
3411
3465
|
}
|
|
3412
|
-
if (this.simbolos[this.atual].tipo == 'IDENTIFICADOR' &&
|
|
3413
|
-
|
|
3466
|
+
if (this.simbolos[this.atual].tipo == 'IDENTIFICADOR' &&
|
|
3467
|
+
!this.verificarTipoProximoSimbolo(pitugues_2.default.VIRGULA)) {
|
|
3468
|
+
return this.resolverCompreensaoDeLista();
|
|
3414
3469
|
}
|
|
3415
3470
|
while (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
3416
3471
|
const valor = this.atribuir();
|
|
@@ -3617,8 +3672,22 @@ class AvaliadorSintaticoPitugues {
|
|
|
3617
3672
|
}
|
|
3618
3673
|
return expressao;
|
|
3619
3674
|
}
|
|
3675
|
+
seTernario() {
|
|
3676
|
+
let expressaoEntao = this.ou();
|
|
3677
|
+
if (this.simbolos[this.atual] && this.simbolos[this.atual].tipo === pitugues_2.default.SE && expressaoEntao.linha === this.simbolos[this.atual].linha) {
|
|
3678
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.SE)) {
|
|
3679
|
+
const operador = this.simbolos[this.atual - 1];
|
|
3680
|
+
const expressaoOuCondicao = this.seTernario();
|
|
3681
|
+
this.consumir(pitugues_2.default.SENAO, `Esperado 'senão' ou 'senao' após caminho positivo em se ternário. Atual:
|
|
3682
|
+
${this.simbolos[this.atual].lexema}.`);
|
|
3683
|
+
const expressaoSenao = this.seTernario();
|
|
3684
|
+
expressaoEntao = new construtos_1.SeTernario(this.hashArquivo, expressaoOuCondicao, expressaoEntao, operador, expressaoSenao);
|
|
3685
|
+
}
|
|
3686
|
+
}
|
|
3687
|
+
return expressaoEntao;
|
|
3688
|
+
}
|
|
3620
3689
|
atribuir() {
|
|
3621
|
-
const expressao = this.
|
|
3690
|
+
const expressao = this.seTernario();
|
|
3622
3691
|
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.IGUAL) ||
|
|
3623
3692
|
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MAIS_IGUAL)) {
|
|
3624
3693
|
const igual = this.simboloAnterior();
|
|
@@ -3981,7 +4050,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
3981
4050
|
* Resolve uma lista de compreensão.
|
|
3982
4051
|
* @returns {ListaCompreensao} A lista de compreensão resolvida.
|
|
3983
4052
|
*/
|
|
3984
|
-
|
|
4053
|
+
resolverCompreensaoDeLista() {
|
|
3985
4054
|
// TODO: Se expressão não começar com um identificador, por exemplo `3 * x`, como faríamos para
|
|
3986
4055
|
// aceitar o `x` na avaliação da expressão?
|
|
3987
4056
|
if (this.simbolos[this.atual].tipo === pitugues_2.default.IDENTIFICADOR) {
|
|
@@ -3990,7 +4059,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
3990
4059
|
this.pilhaEscopos.definirInformacoesVariavel(simboloVariavelIteracao.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(simboloVariavelIteracao.lexema, 'qualquer') // TODO: Talvez um dia inferir o tipo aqui.
|
|
3991
4060
|
);
|
|
3992
4061
|
}
|
|
3993
|
-
|
|
4062
|
+
// TODO: Reavaliar a precedência do se ternário.
|
|
4063
|
+
const retornoExpressao = this.ou();
|
|
3994
4064
|
this.consumir(pitugues_2.default.PARA, "Esperado instrução 'para' após identificado.");
|
|
3995
4065
|
this.consumir(pitugues_2.default.CADA, "Esperado instrução 'cada' após 'para'.");
|
|
3996
4066
|
const simboloVariavelIteracao = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado identificador de variável após 'para cada'.");
|
|
@@ -4005,7 +4075,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
4005
4075
|
throw this.erro(this.simbolos[this.atual], "Esperado palavras reservadas 'em' ou 'de' após variável de iteração em instrução em lista de compreensão.");
|
|
4006
4076
|
}
|
|
4007
4077
|
const localizacaoVetor = this.simboloAnterior();
|
|
4008
|
-
|
|
4078
|
+
// TODO: Reavaliar a precedência do se ternário.
|
|
4079
|
+
const vetor = this.ou();
|
|
4009
4080
|
this.consumir(pitugues_2.default.SE, "Esperado condição 'se' após vetor.");
|
|
4010
4081
|
const condicao = this.expressao();
|
|
4011
4082
|
this.consumir(pitugues_2.default.COLCHETE_DIREITO, 'Espero fechamento de colchetes após condição.');
|
|
@@ -4014,10 +4085,10 @@ class AvaliadorSintaticoPitugues {
|
|
|
4014
4085
|
throw this.erro(localizacaoVetor, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
4015
4086
|
}
|
|
4016
4087
|
const variavelIteracao = new construtos_1.Variavel(this.hashArquivo, simboloVariavelIteracao);
|
|
4017
|
-
return new
|
|
4088
|
+
return new construtos_1.ListaCompreensao(Number(this.simbolos[this.atual]), this.hashArquivo, retornoExpressao, vetor, new construtos_1.ParaCadaComoConstruto(retornoExpressao.hashArquivo, retornoExpressao.linha, variavelIteracao, vetor, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
4018
4089
|
new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
4019
|
-
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao)
|
|
4020
|
-
]), [], null)
|
|
4090
|
+
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao),
|
|
4091
|
+
]), [], null),
|
|
4021
4092
|
])), 'qualquer[]' // TODO: Talvez um dia inferir o tipo aqui.
|
|
4022
4093
|
);
|
|
4023
4094
|
}
|
|
@@ -4241,7 +4312,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
4241
4312
|
}
|
|
4242
4313
|
exports.AvaliadorSintaticoPitugues = AvaliadorSintaticoPitugues;
|
|
4243
4314
|
|
|
4244
|
-
},{"../../bibliotecas/primitivas-dicionario":21,"../../bibliotecas/primitivas-numero":22,"../../bibliotecas/primitivas-texto":23,"../../bibliotecas/primitivas-vetor":24,"../../construtos":52,"../../
|
|
4315
|
+
},{"../../bibliotecas/primitivas-dicionario":21,"../../bibliotecas/primitivas-numero":22,"../../bibliotecas/primitivas-texto":23,"../../bibliotecas/primitivas-vetor":24,"../../construtos":52,"../../declaracoes":97,"../../inferenciador":116,"../../informacao-elemento-sintatico":117,"../../lexador":174,"../../tipos-de-dados/dialetos/pitugues":183,"../../tipos-de-simbolos/pitugues":191,"../comum":3,"../erro-avaliador-sintatico":11,"../informacao-escopo":13,"../pilha-escopos":17,"browser-process-hrtime":367}],7:[function(require,module,exports){
|
|
4245
4316
|
"use strict";
|
|
4246
4317
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4247
4318
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -5977,6 +6048,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5977
6048
|
exports.aleatorio = aleatorio;
|
|
5978
6049
|
exports.aleatorioEntre = aleatorioEntre;
|
|
5979
6050
|
exports.algum = algum;
|
|
6051
|
+
exports.clonar = clonar;
|
|
5980
6052
|
exports.encontrar = encontrar;
|
|
5981
6053
|
exports.encontrarIndice = encontrarIndice;
|
|
5982
6054
|
exports.encontrarUltimo = encontrarUltimo;
|
|
@@ -6083,6 +6155,211 @@ async function algum(interpretador, vetor, funcaoPesquisa) {
|
|
|
6083
6155
|
}
|
|
6084
6156
|
return false;
|
|
6085
6157
|
}
|
|
6158
|
+
/**
|
|
6159
|
+
* Clona profundamente uma variável ou constante em Delégua.
|
|
6160
|
+
* @param {InterpretadorInterface} interpretador A instância do interpretador.
|
|
6161
|
+
* @param {VariavelInterface | any} valor O valor a ser clonado.
|
|
6162
|
+
* @returns {Promise<any>} Uma cópia profunda do valor fornecido.
|
|
6163
|
+
*/
|
|
6164
|
+
async function clonar(interpretador, valor) {
|
|
6165
|
+
// Resolver o valor caso seja uma VariavelInterface
|
|
6166
|
+
// Verificar se é null/undefined antes de usar hasOwnProperty
|
|
6167
|
+
let valorResolvido;
|
|
6168
|
+
if (valor === null || valor === undefined) {
|
|
6169
|
+
valorResolvido = valor;
|
|
6170
|
+
}
|
|
6171
|
+
else if (typeof valor === 'object' && valor.hasOwnProperty('valor')) {
|
|
6172
|
+
valorResolvido = valor.valor;
|
|
6173
|
+
}
|
|
6174
|
+
else {
|
|
6175
|
+
valorResolvido = valor;
|
|
6176
|
+
}
|
|
6177
|
+
// Map para evitar referências circulares
|
|
6178
|
+
const visitados = new WeakMap();
|
|
6179
|
+
function clonarProfundo(valorAtual) {
|
|
6180
|
+
var _a;
|
|
6181
|
+
// Valores primitivos (null, undefined, number, string, boolean)
|
|
6182
|
+
if (valorAtual === null || valorAtual === undefined) {
|
|
6183
|
+
return valorAtual;
|
|
6184
|
+
}
|
|
6185
|
+
if (typeof valorAtual !== 'object') {
|
|
6186
|
+
return valorAtual;
|
|
6187
|
+
}
|
|
6188
|
+
// Verificar se já visitamos este objeto (evitar referências circulares)
|
|
6189
|
+
if (visitados.has(valorAtual)) {
|
|
6190
|
+
return visitados.get(valorAtual);
|
|
6191
|
+
}
|
|
6192
|
+
// Arrays
|
|
6193
|
+
if (Array.isArray(valorAtual)) {
|
|
6194
|
+
const arrayClonado = [];
|
|
6195
|
+
visitados.set(valorAtual, arrayClonado);
|
|
6196
|
+
for (let i = 0; i < valorAtual.length; i++) {
|
|
6197
|
+
arrayClonado[i] = clonarProfundo(valorAtual[i]);
|
|
6198
|
+
}
|
|
6199
|
+
return arrayClonado;
|
|
6200
|
+
}
|
|
6201
|
+
// Objetos de Delégua - ObjetoDeleguaClasse
|
|
6202
|
+
if (valorAtual instanceof objeto_delegua_classe_1.ObjetoDeleguaClasse) {
|
|
6203
|
+
// Clonar propriedades do objeto
|
|
6204
|
+
const propriedadesClonadas = {};
|
|
6205
|
+
visitados.set(valorAtual, propriedadesClonadas);
|
|
6206
|
+
for (const chave in valorAtual.propriedades) {
|
|
6207
|
+
if (valorAtual.propriedades.hasOwnProperty(chave)) {
|
|
6208
|
+
propriedadesClonadas[chave] = clonarProfundo(valorAtual.propriedades[chave]);
|
|
6209
|
+
}
|
|
6210
|
+
}
|
|
6211
|
+
// Criar novo objeto com as propriedades clonadas
|
|
6212
|
+
// Nota: A classe em si não é clonada, apenas suas propriedades
|
|
6213
|
+
const objetoClonado = new objeto_delegua_classe_1.ObjetoDeleguaClasse(valorAtual.classe);
|
|
6214
|
+
objetoClonado.propriedades = propriedadesClonadas;
|
|
6215
|
+
return objetoClonado;
|
|
6216
|
+
}
|
|
6217
|
+
// Tuplas
|
|
6218
|
+
const nomeClasseTupla = (_a = valorAtual.constructor) === null || _a === void 0 ? void 0 : _a.name;
|
|
6219
|
+
if (nomeClasseTupla &&
|
|
6220
|
+
/^(Dupla|Trio|Quarteto|Quinteto|Sexteto|Septeto|Octeto|Noneto|Deceto)$/.test(nomeClasseTupla)) {
|
|
6221
|
+
const valoresClonados = [];
|
|
6222
|
+
visitados.set(valorAtual, valoresClonados);
|
|
6223
|
+
// Extrair valores da tupla baseado no tipo
|
|
6224
|
+
let valores = [];
|
|
6225
|
+
switch (nomeClasseTupla) {
|
|
6226
|
+
case 'Dupla':
|
|
6227
|
+
valores = [valorAtual.primeiro, valorAtual.segundo];
|
|
6228
|
+
break;
|
|
6229
|
+
case 'Trio':
|
|
6230
|
+
valores = [valorAtual.primeiro, valorAtual.segundo, valorAtual.terceiro];
|
|
6231
|
+
break;
|
|
6232
|
+
case 'Quarteto':
|
|
6233
|
+
valores = [
|
|
6234
|
+
valorAtual.primeiro,
|
|
6235
|
+
valorAtual.segundo,
|
|
6236
|
+
valorAtual.terceiro,
|
|
6237
|
+
valorAtual.quarto,
|
|
6238
|
+
];
|
|
6239
|
+
break;
|
|
6240
|
+
case 'Quinteto':
|
|
6241
|
+
valores = [
|
|
6242
|
+
valorAtual.primeiro,
|
|
6243
|
+
valorAtual.segundo,
|
|
6244
|
+
valorAtual.terceiro,
|
|
6245
|
+
valorAtual.quarto,
|
|
6246
|
+
valorAtual.quinto,
|
|
6247
|
+
];
|
|
6248
|
+
break;
|
|
6249
|
+
case 'Sexteto':
|
|
6250
|
+
valores = [
|
|
6251
|
+
valorAtual.primeiro,
|
|
6252
|
+
valorAtual.segundo,
|
|
6253
|
+
valorAtual.terceiro,
|
|
6254
|
+
valorAtual.quarto,
|
|
6255
|
+
valorAtual.quinto,
|
|
6256
|
+
valorAtual.sexto,
|
|
6257
|
+
];
|
|
6258
|
+
break;
|
|
6259
|
+
case 'Septeto':
|
|
6260
|
+
valores = [
|
|
6261
|
+
valorAtual.primeiro,
|
|
6262
|
+
valorAtual.segundo,
|
|
6263
|
+
valorAtual.terceiro,
|
|
6264
|
+
valorAtual.quarto,
|
|
6265
|
+
valorAtual.quinto,
|
|
6266
|
+
valorAtual.sexto,
|
|
6267
|
+
valorAtual.setimo,
|
|
6268
|
+
];
|
|
6269
|
+
break;
|
|
6270
|
+
case 'Octeto':
|
|
6271
|
+
valores = [
|
|
6272
|
+
valorAtual.primeiro,
|
|
6273
|
+
valorAtual.segundo,
|
|
6274
|
+
valorAtual.terceiro,
|
|
6275
|
+
valorAtual.quarto,
|
|
6276
|
+
valorAtual.quinto,
|
|
6277
|
+
valorAtual.sexto,
|
|
6278
|
+
valorAtual.setimo,
|
|
6279
|
+
valorAtual.oitavo,
|
|
6280
|
+
];
|
|
6281
|
+
break;
|
|
6282
|
+
case 'Noneto':
|
|
6283
|
+
valores = [
|
|
6284
|
+
valorAtual.primeiro,
|
|
6285
|
+
valorAtual.segundo,
|
|
6286
|
+
valorAtual.terceiro,
|
|
6287
|
+
valorAtual.quarto,
|
|
6288
|
+
valorAtual.quinto,
|
|
6289
|
+
valorAtual.sexto,
|
|
6290
|
+
valorAtual.setimo,
|
|
6291
|
+
valorAtual.oitavo,
|
|
6292
|
+
valorAtual.nono,
|
|
6293
|
+
];
|
|
6294
|
+
break;
|
|
6295
|
+
case 'Deceto':
|
|
6296
|
+
valores = [
|
|
6297
|
+
valorAtual.primeiro,
|
|
6298
|
+
valorAtual.segundo,
|
|
6299
|
+
valorAtual.terceiro,
|
|
6300
|
+
valorAtual.quarto,
|
|
6301
|
+
valorAtual.quinto,
|
|
6302
|
+
valorAtual.sexto,
|
|
6303
|
+
valorAtual.setimo,
|
|
6304
|
+
valorAtual.oitavo,
|
|
6305
|
+
valorAtual.nono,
|
|
6306
|
+
valorAtual.decimo,
|
|
6307
|
+
];
|
|
6308
|
+
break;
|
|
6309
|
+
default:
|
|
6310
|
+
// Se não conseguir identificar, tentar extrair valores diretamente
|
|
6311
|
+
if (valorAtual.valor) {
|
|
6312
|
+
valores = Array.isArray(valorAtual.valor)
|
|
6313
|
+
? valorAtual.valor
|
|
6314
|
+
: [valorAtual.valor];
|
|
6315
|
+
}
|
|
6316
|
+
}
|
|
6317
|
+
// Clonar valores
|
|
6318
|
+
for (let i = 0; i < valores.length; i++) {
|
|
6319
|
+
valoresClonados.push(clonarProfundo(valores[i]));
|
|
6320
|
+
}
|
|
6321
|
+
// Recriar a tupla com valores clonados
|
|
6322
|
+
switch (nomeClasseTupla) {
|
|
6323
|
+
case 'Dupla':
|
|
6324
|
+
return new construtos_1.Dupla(valoresClonados[0], valoresClonados[1]);
|
|
6325
|
+
case 'Trio':
|
|
6326
|
+
return new construtos_1.Trio(valoresClonados[0], valoresClonados[1], valoresClonados[2]);
|
|
6327
|
+
case 'Quarteto':
|
|
6328
|
+
return new construtos_1.Quarteto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3]);
|
|
6329
|
+
case 'Quinteto':
|
|
6330
|
+
return new construtos_1.Quinteto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4]);
|
|
6331
|
+
case 'Sexteto':
|
|
6332
|
+
return new construtos_1.Sexteto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5]);
|
|
6333
|
+
case 'Septeto':
|
|
6334
|
+
return new construtos_1.Septeto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6]);
|
|
6335
|
+
case 'Octeto':
|
|
6336
|
+
return new construtos_1.Octeto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6], valoresClonados[7]);
|
|
6337
|
+
case 'Noneto':
|
|
6338
|
+
return new construtos_1.Noneto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6], valoresClonados[7], valoresClonados[8]);
|
|
6339
|
+
case 'Deceto':
|
|
6340
|
+
return new construtos_1.Deceto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6], valoresClonados[7], valoresClonados[8], valoresClonados[9]);
|
|
6341
|
+
default:
|
|
6342
|
+
// Se não conseguir recriar, retornar os valores clonados como array
|
|
6343
|
+
return valoresClonados;
|
|
6344
|
+
}
|
|
6345
|
+
}
|
|
6346
|
+
// DeleguaFuncao e FuncaoPadrao - funções não são clonadas profundamente
|
|
6347
|
+
// Elas mantêm referência à mesma definição, mas isso é comportamento esperado
|
|
6348
|
+
if (valorAtual instanceof estruturas_1.DeleguaFuncao || valorAtual instanceof funcao_padrao_1.FuncaoPadrao) {
|
|
6349
|
+
return valorAtual;
|
|
6350
|
+
}
|
|
6351
|
+
// Objetos simples (plain objects)
|
|
6352
|
+
const objetoClonado = {};
|
|
6353
|
+
visitados.set(valorAtual, objetoClonado);
|
|
6354
|
+
for (const chave in valorAtual) {
|
|
6355
|
+
if (valorAtual.hasOwnProperty(chave)) {
|
|
6356
|
+
objetoClonado[chave] = clonarProfundo(valorAtual[chave]);
|
|
6357
|
+
}
|
|
6358
|
+
}
|
|
6359
|
+
return objetoClonado;
|
|
6360
|
+
}
|
|
6361
|
+
return Promise.resolve(clonarProfundo(valorResolvido));
|
|
6362
|
+
}
|
|
6086
6363
|
/**
|
|
6087
6364
|
* Encontra o primeiro elemento de um vetor cuja função de pesquisa retorne
|
|
6088
6365
|
* verdadeiro na avaliação de cada elemento.
|
|
@@ -7067,7 +7344,7 @@ exports.default = {
|
|
|
7067
7344
|
],
|
|
7068
7345
|
implementacao: (interpretador, nomePrimitiva, vetor, elemento) => {
|
|
7069
7346
|
vetor.push(elemento);
|
|
7070
|
-
// TODO: Será que apenas isso é suficiente aqui?
|
|
7347
|
+
// TODO: Será que apenas isso é suficiente aqui?
|
|
7071
7348
|
if (nomePrimitiva !== '') {
|
|
7072
7349
|
interpretador.pilhaEscoposExecucao.atribuirVariavel({ lexema: nomePrimitiva }, vetor);
|
|
7073
7350
|
}
|
|
@@ -7139,7 +7416,9 @@ exports.default = {
|
|
|
7139
7416
|
return Promise.resolve(elementos);
|
|
7140
7417
|
}
|
|
7141
7418
|
else {
|
|
7142
|
-
elementos = !itens.length
|
|
7419
|
+
elementos = !itens.length
|
|
7420
|
+
? vetor.splice(posicaoInicial)
|
|
7421
|
+
: vetor.splice(posicaoInicial, ...itens);
|
|
7143
7422
|
if (nomePrimitiva !== '') {
|
|
7144
7423
|
interpretador.pilhaEscoposExecucao.atribuirVariavel({ lexema: nomePrimitiva }, elementos);
|
|
7145
7424
|
}
|
|
@@ -7230,7 +7509,7 @@ exports.default = {
|
|
|
7230
7509
|
'escreva(v.inclui(2)) // verdadeiro\n' +
|
|
7231
7510
|
'escreva(v.inclui(4)) // falso\n```' +
|
|
7232
7511
|
'\n\n ### Formas de uso \n',
|
|
7233
|
-
exemploCodigo: 'vetor.inclui(elemento)'
|
|
7512
|
+
exemploCodigo: 'vetor.inclui(elemento)',
|
|
7234
7513
|
},
|
|
7235
7514
|
inverter: {
|
|
7236
7515
|
tipoRetorno: 'qualquer[]',
|
|
@@ -7258,8 +7537,7 @@ exports.default = {
|
|
|
7258
7537
|
'\n\n```delegua\nvar v = [1, 2, 3]\n' +
|
|
7259
7538
|
'escreva(v.juntar(":")) // "1:2:3"\n```' +
|
|
7260
7539
|
'\n\n ### Formas de uso \n',
|
|
7261
|
-
exemploCodigo: 'vetor.juntar()\n' +
|
|
7262
|
-
'vetor.juntar(<separador>)',
|
|
7540
|
+
exemploCodigo: 'vetor.juntar()\n' + 'vetor.juntar(<separador>)',
|
|
7263
7541
|
},
|
|
7264
7542
|
mapear: {
|
|
7265
7543
|
tipoRetorno: 'qualquer[]',
|
|
@@ -11052,6 +11330,7 @@ function carregarBibliotecasGlobais(pilhaEscoposExecucao) {
|
|
|
11052
11330
|
pilhaEscoposExecucao.definirVariavel('aleatorio', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
|
|
11053
11331
|
pilhaEscoposExecucao.definirVariavel('aleatorioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
|
|
11054
11332
|
pilhaEscoposExecucao.definirVariavel('algum', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.algum));
|
|
11333
|
+
pilhaEscoposExecucao.definirVariavel('clonar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.clonar));
|
|
11055
11334
|
pilhaEscoposExecucao.definirVariavel('encontrar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrar));
|
|
11056
11335
|
pilhaEscoposExecucao.definirVariavel('encontrarIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
|
|
11057
11336
|
pilhaEscoposExecucao.definirVariavel('encontrarUltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
|
|
@@ -11701,7 +11980,6 @@ const metodo_primitiva_1 = require("./estruturas/metodo-primitiva");
|
|
|
11701
11980
|
const lexador_1 = require("../lexador");
|
|
11702
11981
|
const avaliador_sintatico_1 = require("../avaliador-sintatico");
|
|
11703
11982
|
const espaco_memoria_1 = require("./espaco-memoria");
|
|
11704
|
-
const comum_1 = require("./comum");
|
|
11705
11983
|
const excecoes_1 = require("../excecoes");
|
|
11706
11984
|
const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
|
|
11707
11985
|
const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
|
|
@@ -11757,7 +12035,6 @@ class InterpretadorBase {
|
|
|
11757
12035
|
emLacoRepeticao: false,
|
|
11758
12036
|
};
|
|
11759
12037
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
11760
|
-
(0, comum_1.carregarBibliotecasGlobais)(this.pilhaEscoposExecucao);
|
|
11761
12038
|
}
|
|
11762
12039
|
visitarExpressaoSeparador(expressao) {
|
|
11763
12040
|
throw new Error('Método não implementado.');
|
|
@@ -12433,8 +12710,7 @@ class InterpretadorBase {
|
|
|
12433
12710
|
// para vetor de duplas.
|
|
12434
12711
|
// TODO: Converter elementos para `Construto` se necessário.
|
|
12435
12712
|
if (declaracao.vetorOuDicionario.tipo === 'dicionário') {
|
|
12436
|
-
valorVetorResolvido = Object.entries(valorVetorResolvido)
|
|
12437
|
-
.map(v => new construtos_1.Dupla(v[0], v[1]));
|
|
12713
|
+
valorVetorResolvido = Object.entries(valorVetorResolvido).map((v) => new construtos_1.Dupla(v[0], v[1]));
|
|
12438
12714
|
}
|
|
12439
12715
|
if (!Array.isArray(valorVetorResolvido)) {
|
|
12440
12716
|
return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
|
|
@@ -12864,7 +13140,7 @@ class InterpretadorBase {
|
|
|
12864
13140
|
const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
|
|
12865
13141
|
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
|
|
12866
13142
|
return Promise.resolve({
|
|
12867
|
-
declaracao: funcao
|
|
13143
|
+
declaracao: funcao,
|
|
12868
13144
|
});
|
|
12869
13145
|
}
|
|
12870
13146
|
/**
|
|
@@ -13216,7 +13492,7 @@ class InterpretadorBase {
|
|
|
13216
13492
|
exports.InterpretadorBase = InterpretadorBase;
|
|
13217
13493
|
|
|
13218
13494
|
}).call(this)}).call(this,require('_process'))
|
|
13219
|
-
},{"../avaliador-sintatico":12,"../bibliotecas/primitivas-dicionario":21,"../construtos":52,"../excecoes":110,"../inferenciador":116,"../lexador":174,"../quebras":181,"../tipos-de-dados/delegua":182,"../tipos-de-dados/primitivos":184,"../tipos-de-simbolos/delegua":187,"./
|
|
13495
|
+
},{"../avaliador-sintatico":12,"../bibliotecas/primitivas-dicionario":21,"../construtos":52,"../excecoes":110,"../inferenciador":116,"../lexador":174,"../quebras":181,"../tipos-de-dados/delegua":182,"../tipos-de-dados/primitivos":184,"../tipos-de-simbolos/delegua":187,"./espaco-memoria":143,"./estruturas":150,"./estruturas/metodo-primitiva":151,"./pilha-escopos-execucao":160,"_process":421,"browser-process-hrtime":367}],158:[function(require,module,exports){
|
|
13220
13496
|
"use strict";
|
|
13221
13497
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13222
13498
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -13231,6 +13507,7 @@ const excecoes_1 = require("../excecoes");
|
|
|
13231
13507
|
const declaracoes_1 = require("../declaracoes");
|
|
13232
13508
|
const quebras_1 = require("../quebras");
|
|
13233
13509
|
const montao_1 = require("./montao");
|
|
13510
|
+
const comum_1 = require("./comum");
|
|
13234
13511
|
const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
|
|
13235
13512
|
const primitivas_numero_1 = __importDefault(require("../bibliotecas/primitivas-numero"));
|
|
13236
13513
|
const primitivas_texto_1 = __importDefault(require("../bibliotecas/primitivas-texto"));
|
|
@@ -13244,6 +13521,14 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13244
13521
|
constructor(diretorioBase, performance = false, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
|
|
13245
13522
|
super(diretorioBase, performance, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
|
|
13246
13523
|
this.montao = new montao_1.Montao();
|
|
13524
|
+
this.pontoInicializacaoBibliotecasGlobais();
|
|
13525
|
+
}
|
|
13526
|
+
/**
|
|
13527
|
+
* Cada dialeto que deriva deste interpretador conhece este ponto de inicialização.
|
|
13528
|
+
* A partir daqui, cada dialeto pode carregar as bibliotecas globais específicas do seu dialeto.
|
|
13529
|
+
*/
|
|
13530
|
+
pontoInicializacaoBibliotecasGlobais() {
|
|
13531
|
+
(0, comum_1.carregarBibliotecasGlobais)(this.pilhaEscoposExecucao);
|
|
13247
13532
|
}
|
|
13248
13533
|
resolverReferenciaMontao(referenciaMontao) {
|
|
13249
13534
|
const valorMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, referenciaMontao.endereco);
|
|
@@ -13294,8 +13579,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13294
13579
|
}
|
|
13295
13580
|
if (objeto.valor instanceof estruturas_1.ObjetoPadrao)
|
|
13296
13581
|
return objeto.valor.paraTexto();
|
|
13297
|
-
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
13298
|
-
objeto instanceof estruturas_1.DeleguaFuncao)
|
|
13582
|
+
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto instanceof estruturas_1.DeleguaFuncao)
|
|
13299
13583
|
return objeto.paraTexto();
|
|
13300
13584
|
if (objeto instanceof quebras_1.RetornoQuebra) {
|
|
13301
13585
|
if (typeof objeto.valor === 'boolean')
|
|
@@ -13333,7 +13617,8 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13333
13617
|
if (typeof valor === primitivos_1.default.BOOLEANO) {
|
|
13334
13618
|
valor = valor ? 'verdadeiro' : 'falso';
|
|
13335
13619
|
}
|
|
13336
|
-
if (valor instanceof estruturas_1.ReferenciaMontao ||
|
|
13620
|
+
if (valor instanceof estruturas_1.ReferenciaMontao ||
|
|
13621
|
+
((valor === null || valor === void 0 ? void 0 : valor.hasOwnProperty) && (valor === null || valor === void 0 ? void 0 : valor.hasOwnProperty('tipo')))) {
|
|
13337
13622
|
valor = this.resolverValor(valor);
|
|
13338
13623
|
}
|
|
13339
13624
|
objetoEscrita[propriedade] = valor;
|
|
@@ -13372,13 +13657,14 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13372
13657
|
return Promise.resolve({
|
|
13373
13658
|
tipo: `função<${funcao.declaracao.tipo || 'qualquer'}>`,
|
|
13374
13659
|
tipoExplicito: funcao.declaracao.tipoExplicito,
|
|
13375
|
-
declaracao: funcao
|
|
13660
|
+
declaracao: funcao,
|
|
13376
13661
|
});
|
|
13377
13662
|
}
|
|
13378
13663
|
async logicaComumExecucaoEnquanto(enquanto, acumularRetornos) {
|
|
13379
13664
|
let retornoExecucao;
|
|
13380
13665
|
const retornos = [];
|
|
13381
|
-
while ((acumularRetornos ||
|
|
13666
|
+
while ((acumularRetornos ||
|
|
13667
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) &&
|
|
13382
13668
|
this.eVerdadeiro(await this.avaliar(enquanto.condicao))) {
|
|
13383
13669
|
try {
|
|
13384
13670
|
retornoExecucao = await this.executar(enquanto.corpo);
|
|
@@ -13386,7 +13672,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13386
13672
|
if (acumularRetornos) {
|
|
13387
13673
|
return {
|
|
13388
13674
|
valorRetornado: retornos,
|
|
13389
|
-
tipo: 'vetor'
|
|
13675
|
+
tipo: 'vetor',
|
|
13390
13676
|
};
|
|
13391
13677
|
}
|
|
13392
13678
|
return null;
|
|
@@ -13410,7 +13696,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13410
13696
|
if (acumularRetornos) {
|
|
13411
13697
|
return {
|
|
13412
13698
|
valorRetornado: retornos,
|
|
13413
|
-
tipo: 'vetor'
|
|
13699
|
+
tipo: 'vetor',
|
|
13414
13700
|
};
|
|
13415
13701
|
}
|
|
13416
13702
|
return retornoExecucao;
|
|
@@ -13428,7 +13714,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13428
13714
|
if (acumularRetornos) {
|
|
13429
13715
|
return {
|
|
13430
13716
|
valorRetornado: retornos,
|
|
13431
|
-
tipo: 'vetor'
|
|
13717
|
+
tipo: 'vetor',
|
|
13432
13718
|
};
|
|
13433
13719
|
}
|
|
13434
13720
|
return null;
|
|
@@ -13448,12 +13734,13 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13448
13734
|
});
|
|
13449
13735
|
return Promise.reject(erro);
|
|
13450
13736
|
}
|
|
13451
|
-
} while ((acumularRetornos ||
|
|
13737
|
+
} while ((acumularRetornos ||
|
|
13738
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) &&
|
|
13452
13739
|
this.eVerdadeiro(await this.avaliar(fazer.condicaoEnquanto)));
|
|
13453
13740
|
if (acumularRetornos) {
|
|
13454
13741
|
return {
|
|
13455
13742
|
valorRetornado: retornos,
|
|
13456
|
-
tipo: 'vetor'
|
|
13743
|
+
tipo: 'vetor',
|
|
13457
13744
|
};
|
|
13458
13745
|
}
|
|
13459
13746
|
}
|
|
@@ -13469,9 +13756,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13469
13756
|
}
|
|
13470
13757
|
let retornoExecucao;
|
|
13471
13758
|
const retornos = [];
|
|
13472
|
-
while (acumularRetornos ||
|
|
13473
|
-
|
|
13474
|
-
|
|
13759
|
+
while (acumularRetornos ||
|
|
13760
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) {
|
|
13761
|
+
if (para.condicao !== null && !this.eVerdadeiro(await this.avaliar(para.condicao))) {
|
|
13475
13762
|
break;
|
|
13476
13763
|
}
|
|
13477
13764
|
retornoExecucao = await this.executar(para.corpo);
|
|
@@ -13479,7 +13766,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13479
13766
|
if (acumularRetornos) {
|
|
13480
13767
|
return {
|
|
13481
13768
|
valorRetornado: retornos,
|
|
13482
|
-
tipo: 'vetor'
|
|
13769
|
+
tipo: 'vetor',
|
|
13483
13770
|
};
|
|
13484
13771
|
}
|
|
13485
13772
|
return null;
|
|
@@ -13497,7 +13784,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13497
13784
|
if (acumularRetornos) {
|
|
13498
13785
|
return {
|
|
13499
13786
|
valorRetornado: retornos,
|
|
13500
|
-
tipo: 'vetor'
|
|
13787
|
+
tipo: 'vetor',
|
|
13501
13788
|
};
|
|
13502
13789
|
}
|
|
13503
13790
|
return retornoExecucao;
|
|
@@ -13518,14 +13805,16 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13518
13805
|
if (paraCada.vetorOuDicionario.tipo === 'dicionário') {
|
|
13519
13806
|
valorVetorOuDicionarioResolvido = Object.entries(valorVetorOuDicionarioResolvido).map((v) => new construtos_1.Dupla(v[0], v[1]));
|
|
13520
13807
|
}
|
|
13521
|
-
if (paraCada.vetorOuDicionario.tipo === 'texto' ||
|
|
13808
|
+
if (paraCada.vetorOuDicionario.tipo === 'texto' ||
|
|
13809
|
+
typeof valorVetorOuDicionarioResolvido === 'string') {
|
|
13522
13810
|
valorVetorOuDicionarioResolvido = valorVetorOuDicionarioResolvido.split('');
|
|
13523
13811
|
}
|
|
13524
13812
|
if (!Array.isArray(valorVetorOuDicionarioResolvido)) {
|
|
13525
13813
|
return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
|
|
13526
13814
|
}
|
|
13527
13815
|
const retornos = [];
|
|
13528
|
-
while ((acumularRetornos ||
|
|
13816
|
+
while ((acumularRetornos ||
|
|
13817
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) &&
|
|
13529
13818
|
paraCada.posicaoAtual < valorVetorOuDicionarioResolvido.length) {
|
|
13530
13819
|
try {
|
|
13531
13820
|
if (paraCada.variavelIteracao instanceof construtos_1.Variavel) {
|
|
@@ -13541,7 +13830,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13541
13830
|
if (acumularRetornos) {
|
|
13542
13831
|
return {
|
|
13543
13832
|
valorRetornado: retornos,
|
|
13544
|
-
tipo: 'vetor'
|
|
13833
|
+
tipo: 'vetor',
|
|
13545
13834
|
};
|
|
13546
13835
|
}
|
|
13547
13836
|
return null;
|
|
@@ -13566,7 +13855,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13566
13855
|
if (acumularRetornos) {
|
|
13567
13856
|
return {
|
|
13568
13857
|
valorRetornado: retornos,
|
|
13569
|
-
tipo: 'vetor'
|
|
13858
|
+
tipo: 'vetor',
|
|
13570
13859
|
};
|
|
13571
13860
|
}
|
|
13572
13861
|
return retornoExecucao;
|
|
@@ -14024,7 +14313,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14024
14313
|
return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
|
|
14025
14314
|
}
|
|
14026
14315
|
const resultadoCompreensao = await this.avaliar(listaCompreensao.paraCada);
|
|
14027
|
-
const resultadoCompreensaoResolvido = resultadoCompreensao.valorRetornado
|
|
14316
|
+
const resultadoCompreensaoResolvido = resultadoCompreensao.valorRetornado
|
|
14317
|
+
.filter((r) => r !== null)
|
|
14318
|
+
.map((r) => this.resolverValor(r));
|
|
14028
14319
|
return resultadoCompreensaoResolvido;
|
|
14029
14320
|
}
|
|
14030
14321
|
visitarExpressaoPara(expressao) {
|
|
@@ -14159,7 +14450,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14159
14450
|
escopoAnterior.espacoMemoria.valores = Object.assign(escopoAnterior.espacoMemoria.valores, ultimoEscopo.espacoMemoria.valores);
|
|
14160
14451
|
escopoAnterior.espacoMemoria.enderecosMontao = new Set([
|
|
14161
14452
|
...escopoAnterior.espacoMemoria.enderecosMontao,
|
|
14162
|
-
...ultimoEscopo.espacoMemoria.enderecosMontao
|
|
14453
|
+
...ultimoEscopo.espacoMemoria.enderecosMontao,
|
|
14163
14454
|
]);
|
|
14164
14455
|
}
|
|
14165
14456
|
else {
|
|
@@ -14179,7 +14470,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14179
14470
|
const resultados = await super.interpretar(declaracoes, manterAmbiente);
|
|
14180
14471
|
if (resultados.resultado.length > 0) {
|
|
14181
14472
|
const ultimoResultado = resultados.resultado[resultados.resultado.length - 1];
|
|
14182
|
-
if (ultimoResultado &&
|
|
14473
|
+
if (ultimoResultado &&
|
|
14474
|
+
ultimoResultado.valorRetornado instanceof quebras_1.RetornoQuebra &&
|
|
14475
|
+
ultimoResultado.valorRetornado.valor instanceof estruturas_1.ReferenciaMontao) {
|
|
14183
14476
|
const ultimaDeclaracao = declaracoes[declaracoes.length - 1];
|
|
14184
14477
|
ultimoResultado.valorRetornado.valor = this.montao.obterReferencia(ultimaDeclaracao.hashArquivo, ultimaDeclaracao.linha, ultimoResultado.valorRetornado.valor.endereco);
|
|
14185
14478
|
}
|
|
@@ -14189,7 +14482,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14189
14482
|
}
|
|
14190
14483
|
exports.Interpretador = Interpretador;
|
|
14191
14484
|
|
|
14192
|
-
},{"../bibliotecas/primitivas-dicionario":21,"../bibliotecas/primitivas-numero":22,"../bibliotecas/primitivas-texto":23,"../bibliotecas/primitivas-vetor":24,"../construtos":52,"../declaracoes":97,"../excecoes":110,"../inferenciador":116,"../quebras":181,"../tipos-de-dados/delegua":182,"../tipos-de-dados/primitivos":184,"./estruturas":150,"./interpretador-base":157,"./montao":159}],159:[function(require,module,exports){
|
|
14485
|
+
},{"../bibliotecas/primitivas-dicionario":21,"../bibliotecas/primitivas-numero":22,"../bibliotecas/primitivas-texto":23,"../bibliotecas/primitivas-vetor":24,"../construtos":52,"../declaracoes":97,"../excecoes":110,"../inferenciador":116,"../quebras":181,"../tipos-de-dados/delegua":182,"../tipos-de-dados/primitivos":184,"./comum":142,"./estruturas":150,"./interpretador-base":157,"./montao":159}],159:[function(require,module,exports){
|
|
14193
14486
|
"use strict";
|
|
14194
14487
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14195
14488
|
exports.Montao = void 0;
|
|
@@ -16369,13 +16662,14 @@ exports.palavrasReservadas = {
|
|
|
16369
16662
|
nulo: pitugues_1.default.NULO,
|
|
16370
16663
|
ou: pitugues_1.default.OU,
|
|
16371
16664
|
padrao: pitugues_1.default.PADRAO,
|
|
16665
|
+
padrão: pitugues_1.default.PADRAO,
|
|
16372
16666
|
para: pitugues_1.default.PARA,
|
|
16373
16667
|
pegue: pitugues_1.default.PEGUE,
|
|
16374
16668
|
quebrar: pitugues_1.default.QUEBRAR,
|
|
16375
16669
|
retorna: pitugues_1.default.RETORNA,
|
|
16376
16670
|
se: pitugues_1.default.SE,
|
|
16377
16671
|
senao: pitugues_1.default.SENAO,
|
|
16378
|
-
senão: pitugues_1.default.
|
|
16672
|
+
senão: pitugues_1.default.SENAO,
|
|
16379
16673
|
super: pitugues_1.default.SUPER,
|
|
16380
16674
|
sustar: pitugues_1.default.SUSTAR,
|
|
16381
16675
|
tendo: pitugues_1.default.TENDO,
|