@designliquido/delegua 0.57.2 → 0.59.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 +74 -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 +6 -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 +363 -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,39 @@ 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
|
+
let condicao = null;
|
|
461
|
+
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.SE)) {
|
|
462
|
+
condicao = this.expressao();
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
condicao = new declaracoes_1.Expressao(new construtos_1.Literal(this.hashArquivo, Number(localizacaoVetor.linha), true));
|
|
466
|
+
}
|
|
467
|
+
this.consumir(delegua_2.default.COLCHETE_DIREITO, 'Espero fechamento de colchetes após condição.');
|
|
468
|
+
const tipoVetor = vetor.tipo;
|
|
469
|
+
if (!tipoVetor.endsWith('[]') && !['qualquer', 'vetor'].includes(tipoVetor)) {
|
|
470
|
+
throw this.erro(localizacaoVetor, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
471
|
+
}
|
|
472
|
+
const variavelIteracao = new construtos_1.Variavel(this.hashArquivo, simboloVariavelIteracao);
|
|
473
|
+
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, [
|
|
474
|
+
new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
475
|
+
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao),
|
|
476
|
+
]), [], null),
|
|
477
|
+
])), 'qualquer[]' // TODO: Talvez um dia inferir o tipo aqui.
|
|
478
|
+
);
|
|
479
|
+
}
|
|
446
480
|
primario() {
|
|
447
481
|
const simboloAtual = this.simbolos[this.atual];
|
|
448
482
|
let valores = [];
|
|
@@ -458,6 +492,16 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
458
492
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.PARENTESE_ESQUERDO)) {
|
|
459
493
|
return this.construtoTupla();
|
|
460
494
|
}
|
|
495
|
+
// Ao resolver a expressão aqui, identificadores dentro da expressão de compreensão
|
|
496
|
+
// de lista serão tratados como 'qualquer', para evitar erros de tipo.
|
|
497
|
+
this.intuirTipoQualquerParaIdentificadores = true;
|
|
498
|
+
const retornoExpressaoOuPrimeiroValor = this.seTernario();
|
|
499
|
+
this.intuirTipoQualquerParaIdentificadores = false;
|
|
500
|
+
if (this.simbolos[this.atual].tipo === delegua_2.default.PARA) {
|
|
501
|
+
return this.resolverCompreensaoDeLista(retornoExpressaoOuPrimeiroValor);
|
|
502
|
+
}
|
|
503
|
+
// Aqui já sabemos que não é uma compreensão de lista.
|
|
504
|
+
valores.push(retornoExpressaoOuPrimeiroValor);
|
|
461
505
|
while (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.COLCHETE_DIREITO)) {
|
|
462
506
|
switch (this.simbolos[this.atual].tipo) {
|
|
463
507
|
case delegua_2.default.VIRGULA:
|
|
@@ -469,7 +513,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
469
513
|
valores.push(new construtos_1.ComentarioComoConstruto(simboloComentario));
|
|
470
514
|
break;
|
|
471
515
|
default:
|
|
472
|
-
const valor = this.
|
|
516
|
+
const valor = this.seTernario();
|
|
473
517
|
valores.push(valor);
|
|
474
518
|
break;
|
|
475
519
|
}
|
|
@@ -527,7 +571,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
527
571
|
case delegua_2.default.IDENTIFICADOR:
|
|
528
572
|
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
529
573
|
let tipoOperando;
|
|
530
|
-
if (
|
|
574
|
+
if (this.intuirTipoQualquerParaIdentificadores) {
|
|
575
|
+
// Esta indicação é utilizada para compreensões de lista, onde o
|
|
576
|
+
// tipo do identificador de iteração é 'qualquer' por definição.
|
|
577
|
+
tipoOperando = 'qualquer';
|
|
578
|
+
this.pilhaEscopos.definirInformacoesVariavel(simboloIdentificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(simboloIdentificador.lexema, 'qualquer') // TODO: Talvez um dia inferir o tipo aqui.
|
|
579
|
+
);
|
|
580
|
+
}
|
|
581
|
+
else if (simboloIdentificador.lexema in this.tiposDefinidosEmCodigo) {
|
|
531
582
|
tipoOperando = simboloIdentificador.lexema;
|
|
532
583
|
}
|
|
533
584
|
else {
|
|
@@ -663,7 +714,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
663
714
|
const nome = this.consumir(delegua_2.default.IDENTIFICADOR, "Esperado nome de método ou propriedade após '.'.");
|
|
664
715
|
let tipoInferido = expressaoAnterior.tipo;
|
|
665
716
|
// Se não for um dicionário anônimo (ou seja, ser variável ou constante com nome)
|
|
666
|
-
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
717
|
+
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
718
|
+
expressaoAnterior.constructor !== construtos_1.Dicionario) {
|
|
667
719
|
// TODO: Achar algum caso em que aqui não seja variável.
|
|
668
720
|
const nomeDicionario = expressaoAnterior.simbolo.lexema;
|
|
669
721
|
const elementoDicionarioPilha = this.pilhaEscopos.obterElementoMontaoTipos(nomeDicionario);
|
|
@@ -1082,7 +1134,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1082
1134
|
const corpo = this.resolverDeclaracao();
|
|
1083
1135
|
return {
|
|
1084
1136
|
condicao,
|
|
1085
|
-
corpo
|
|
1137
|
+
corpo,
|
|
1086
1138
|
};
|
|
1087
1139
|
}
|
|
1088
1140
|
declaracaoEnquanto() {
|
|
@@ -1187,7 +1239,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1187
1239
|
const condicaoEnquanto = this.expressao();
|
|
1188
1240
|
return {
|
|
1189
1241
|
caminhoFazer,
|
|
1190
|
-
condicaoEnquanto
|
|
1242
|
+
condicaoEnquanto,
|
|
1191
1243
|
};
|
|
1192
1244
|
}
|
|
1193
1245
|
declaracaoFazer(simboloFazer) {
|
|
@@ -1218,7 +1270,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1218
1270
|
case delegua_2.default.CHAVE_ESQUERDA:
|
|
1219
1271
|
this.avancarEDevolverAnterior();
|
|
1220
1272
|
do {
|
|
1221
|
-
const identificadorImportacao = this.consumir(delegua_2.default.IDENTIFICADOR,
|
|
1273
|
+
const identificadorImportacao = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado identificador de elemento a ser importado.');
|
|
1222
1274
|
elementosImportacao.push(identificadorImportacao);
|
|
1223
1275
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
1224
1276
|
this.consumir(delegua_2.default.CHAVE_DIREITA, "Esperado '}' após lista de elementos a serem importados.");
|
|
@@ -1285,7 +1337,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1285
1337
|
nomeVariavelChave,
|
|
1286
1338
|
nomeVariavelValor,
|
|
1287
1339
|
dicionario,
|
|
1288
|
-
corpo
|
|
1340
|
+
corpo,
|
|
1289
1341
|
};
|
|
1290
1342
|
}
|
|
1291
1343
|
declaracaoParaCadaDicionario(simboloPara) {
|
|
@@ -1309,7 +1361,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1309
1361
|
}
|
|
1310
1362
|
}
|
|
1311
1363
|
const tipoVetor = vetor.tipo;
|
|
1312
|
-
if (!tipoVetor.endsWith('[]') &&
|
|
1364
|
+
if (!tipoVetor.endsWith('[]') &&
|
|
1365
|
+
!['dicionário', 'qualquer', 'texto', 'vetor'].includes(tipoVetor)) {
|
|
1313
1366
|
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
1314
1367
|
}
|
|
1315
1368
|
let tipoVariavelIteracao = 'qualquer';
|
|
@@ -1322,7 +1375,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1322
1375
|
return {
|
|
1323
1376
|
variavelIteracao,
|
|
1324
1377
|
vetor,
|
|
1325
|
-
corpo
|
|
1378
|
+
corpo,
|
|
1326
1379
|
};
|
|
1327
1380
|
}
|
|
1328
1381
|
declaracaoParaCadaVetor(simboloPara) {
|
|
@@ -1373,7 +1426,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1373
1426
|
inicializador,
|
|
1374
1427
|
condicao,
|
|
1375
1428
|
incrementar,
|
|
1376
|
-
corpo
|
|
1429
|
+
corpo,
|
|
1377
1430
|
};
|
|
1378
1431
|
}
|
|
1379
1432
|
declaracaoParaTradicional(simboloPara) {
|
|
@@ -1642,11 +1695,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1642
1695
|
if (!tipoCorrespondente) {
|
|
1643
1696
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaAcessoMetodoOuPropriedade.simbolo, `Tipo '${entidadeChamadaAcessoMetodoOuPropriedade.objeto.tipo}' não foi encontrado entre os tipos definidos por bibliotecas.`);
|
|
1644
1697
|
}
|
|
1645
|
-
if (!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1646
|
-
|
|
1698
|
+
if (!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1699
|
+
tipoCorrespondente.metodos) &&
|
|
1700
|
+
!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1701
|
+
tipoCorrespondente.propriedades)) {
|
|
1647
1702
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaAcessoMetodoOuPropriedade.simbolo, `Membro '${entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema}' não existe no tipo '${entidadeChamadaAcessoMetodoOuPropriedade.objeto.tipo}'.`);
|
|
1648
1703
|
}
|
|
1649
|
-
if (entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1704
|
+
if (entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1705
|
+
tipoCorrespondente.metodos) {
|
|
1650
1706
|
return tipoCorrespondente.metodos[entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema].tipo;
|
|
1651
1707
|
}
|
|
1652
1708
|
return tipoCorrespondente.propriedades[entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema].tipo;
|
|
@@ -1713,7 +1769,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1713
1769
|
for (var i = 0; i < construto.valores.length; i++) {
|
|
1714
1770
|
const chaveCorrespondente = this.resolverValorConstruto(construto.chaves[i]);
|
|
1715
1771
|
const valorCorrespondente = construto.valores[i];
|
|
1716
|
-
subElementos[chaveCorrespondente] =
|
|
1772
|
+
subElementos[chaveCorrespondente] =
|
|
1773
|
+
this.resolverInformacaoElementoSintaticoDeDicionario(valorCorrespondente);
|
|
1717
1774
|
}
|
|
1718
1775
|
retorno.subElementos = subElementos;
|
|
1719
1776
|
const endereco = this.montaoTipos.adicionarReferencia(retorno);
|
|
@@ -2066,6 +2123,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2066
2123
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2067
2124
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
2068
2125
|
]));
|
|
2126
|
+
this.pilhaEscopos.definirInformacoesVariavel('clonar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('clonar', 'qualquer', true, [
|
|
2127
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
2128
|
+
]));
|
|
2069
2129
|
this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrar', 'qualquer', true, [
|
|
2070
2130
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
2071
2131
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
@@ -3182,7 +3242,6 @@ const primitivas_dicionario_1 = __importDefault(require("../../bibliotecas/primi
|
|
|
3182
3242
|
const primitivas_numero_1 = __importDefault(require("../../bibliotecas/primitivas-numero"));
|
|
3183
3243
|
const primitivas_texto_1 = __importDefault(require("../../bibliotecas/primitivas-texto"));
|
|
3184
3244
|
const primitivas_vetor_1 = __importDefault(require("../../bibliotecas/primitivas-vetor"));
|
|
3185
|
-
const lista_compreensao_1 = require("../../construtos/lista-compreensao");
|
|
3186
3245
|
/**
|
|
3187
3246
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
3188
3247
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -3409,8 +3468,9 @@ class AvaliadorSintaticoPitugues {
|
|
|
3409
3468
|
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
3410
3469
|
return new construtos_1.Vetor(this.hashArquivo, simboloAtual.linha, [], 0, 'qualquer[]');
|
|
3411
3470
|
}
|
|
3412
|
-
if (this.simbolos[this.atual].tipo == 'IDENTIFICADOR' &&
|
|
3413
|
-
|
|
3471
|
+
if (this.simbolos[this.atual].tipo == 'IDENTIFICADOR' &&
|
|
3472
|
+
!this.verificarTipoProximoSimbolo(pitugues_2.default.VIRGULA)) {
|
|
3473
|
+
return this.resolverCompreensaoDeLista();
|
|
3414
3474
|
}
|
|
3415
3475
|
while (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
|
|
3416
3476
|
const valor = this.atribuir();
|
|
@@ -3617,8 +3677,22 @@ class AvaliadorSintaticoPitugues {
|
|
|
3617
3677
|
}
|
|
3618
3678
|
return expressao;
|
|
3619
3679
|
}
|
|
3680
|
+
seTernario() {
|
|
3681
|
+
let expressaoEntao = this.ou();
|
|
3682
|
+
if (this.simbolos[this.atual] && this.simbolos[this.atual].tipo === pitugues_2.default.SE && expressaoEntao.linha === this.simbolos[this.atual].linha) {
|
|
3683
|
+
while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.SE)) {
|
|
3684
|
+
const operador = this.simbolos[this.atual - 1];
|
|
3685
|
+
const expressaoOuCondicao = this.seTernario();
|
|
3686
|
+
this.consumir(pitugues_2.default.SENAO, `Esperado 'senão' ou 'senao' após caminho positivo em se ternário. Atual:
|
|
3687
|
+
${this.simbolos[this.atual].lexema}.`);
|
|
3688
|
+
const expressaoSenao = this.seTernario();
|
|
3689
|
+
expressaoEntao = new construtos_1.SeTernario(this.hashArquivo, expressaoOuCondicao, expressaoEntao, operador, expressaoSenao);
|
|
3690
|
+
}
|
|
3691
|
+
}
|
|
3692
|
+
return expressaoEntao;
|
|
3693
|
+
}
|
|
3620
3694
|
atribuir() {
|
|
3621
|
-
const expressao = this.
|
|
3695
|
+
const expressao = this.seTernario();
|
|
3622
3696
|
if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.IGUAL) ||
|
|
3623
3697
|
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MAIS_IGUAL)) {
|
|
3624
3698
|
const igual = this.simboloAnterior();
|
|
@@ -3981,7 +4055,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
3981
4055
|
* Resolve uma lista de compreensão.
|
|
3982
4056
|
* @returns {ListaCompreensao} A lista de compreensão resolvida.
|
|
3983
4057
|
*/
|
|
3984
|
-
|
|
4058
|
+
resolverCompreensaoDeLista() {
|
|
3985
4059
|
// TODO: Se expressão não começar com um identificador, por exemplo `3 * x`, como faríamos para
|
|
3986
4060
|
// aceitar o `x` na avaliação da expressão?
|
|
3987
4061
|
if (this.simbolos[this.atual].tipo === pitugues_2.default.IDENTIFICADOR) {
|
|
@@ -3990,7 +4064,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
3990
4064
|
this.pilhaEscopos.definirInformacoesVariavel(simboloVariavelIteracao.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(simboloVariavelIteracao.lexema, 'qualquer') // TODO: Talvez um dia inferir o tipo aqui.
|
|
3991
4065
|
);
|
|
3992
4066
|
}
|
|
3993
|
-
|
|
4067
|
+
// TODO: Reavaliar a precedência do se ternário.
|
|
4068
|
+
const retornoExpressao = this.ou();
|
|
3994
4069
|
this.consumir(pitugues_2.default.PARA, "Esperado instrução 'para' após identificado.");
|
|
3995
4070
|
this.consumir(pitugues_2.default.CADA, "Esperado instrução 'cada' após 'para'.");
|
|
3996
4071
|
const simboloVariavelIteracao = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado identificador de variável após 'para cada'.");
|
|
@@ -4005,7 +4080,8 @@ class AvaliadorSintaticoPitugues {
|
|
|
4005
4080
|
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
4081
|
}
|
|
4007
4082
|
const localizacaoVetor = this.simboloAnterior();
|
|
4008
|
-
|
|
4083
|
+
// TODO: Reavaliar a precedência do se ternário.
|
|
4084
|
+
const vetor = this.ou();
|
|
4009
4085
|
this.consumir(pitugues_2.default.SE, "Esperado condição 'se' após vetor.");
|
|
4010
4086
|
const condicao = this.expressao();
|
|
4011
4087
|
this.consumir(pitugues_2.default.COLCHETE_DIREITO, 'Espero fechamento de colchetes após condição.');
|
|
@@ -4014,10 +4090,10 @@ class AvaliadorSintaticoPitugues {
|
|
|
4014
4090
|
throw this.erro(localizacaoVetor, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
4015
4091
|
}
|
|
4016
4092
|
const variavelIteracao = new construtos_1.Variavel(this.hashArquivo, simboloVariavelIteracao);
|
|
4017
|
-
return new
|
|
4093
|
+
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
4094
|
new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
4019
|
-
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao)
|
|
4020
|
-
]), [], null)
|
|
4095
|
+
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao),
|
|
4096
|
+
]), [], null),
|
|
4021
4097
|
])), 'qualquer[]' // TODO: Talvez um dia inferir o tipo aqui.
|
|
4022
4098
|
);
|
|
4023
4099
|
}
|
|
@@ -4241,7 +4317,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
4241
4317
|
}
|
|
4242
4318
|
exports.AvaliadorSintaticoPitugues = AvaliadorSintaticoPitugues;
|
|
4243
4319
|
|
|
4244
|
-
},{"../../bibliotecas/primitivas-dicionario":21,"../../bibliotecas/primitivas-numero":22,"../../bibliotecas/primitivas-texto":23,"../../bibliotecas/primitivas-vetor":24,"../../construtos":52,"../../
|
|
4320
|
+
},{"../../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
4321
|
"use strict";
|
|
4246
4322
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4247
4323
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -5977,6 +6053,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5977
6053
|
exports.aleatorio = aleatorio;
|
|
5978
6054
|
exports.aleatorioEntre = aleatorioEntre;
|
|
5979
6055
|
exports.algum = algum;
|
|
6056
|
+
exports.clonar = clonar;
|
|
5980
6057
|
exports.encontrar = encontrar;
|
|
5981
6058
|
exports.encontrarIndice = encontrarIndice;
|
|
5982
6059
|
exports.encontrarUltimo = encontrarUltimo;
|
|
@@ -6083,6 +6160,211 @@ async function algum(interpretador, vetor, funcaoPesquisa) {
|
|
|
6083
6160
|
}
|
|
6084
6161
|
return false;
|
|
6085
6162
|
}
|
|
6163
|
+
/**
|
|
6164
|
+
* Clona profundamente uma variável ou constante em Delégua.
|
|
6165
|
+
* @param {InterpretadorInterface} interpretador A instância do interpretador.
|
|
6166
|
+
* @param {VariavelInterface | any} valor O valor a ser clonado.
|
|
6167
|
+
* @returns {Promise<any>} Uma cópia profunda do valor fornecido.
|
|
6168
|
+
*/
|
|
6169
|
+
async function clonar(interpretador, valor) {
|
|
6170
|
+
// Resolver o valor caso seja uma VariavelInterface
|
|
6171
|
+
// Verificar se é null/undefined antes de usar hasOwnProperty
|
|
6172
|
+
let valorResolvido;
|
|
6173
|
+
if (valor === null || valor === undefined) {
|
|
6174
|
+
valorResolvido = valor;
|
|
6175
|
+
}
|
|
6176
|
+
else if (typeof valor === 'object' && valor.hasOwnProperty('valor')) {
|
|
6177
|
+
valorResolvido = valor.valor;
|
|
6178
|
+
}
|
|
6179
|
+
else {
|
|
6180
|
+
valorResolvido = valor;
|
|
6181
|
+
}
|
|
6182
|
+
// Map para evitar referências circulares
|
|
6183
|
+
const visitados = new WeakMap();
|
|
6184
|
+
function clonarProfundo(valorAtual) {
|
|
6185
|
+
var _a;
|
|
6186
|
+
// Valores primitivos (null, undefined, number, string, boolean)
|
|
6187
|
+
if (valorAtual === null || valorAtual === undefined) {
|
|
6188
|
+
return valorAtual;
|
|
6189
|
+
}
|
|
6190
|
+
if (typeof valorAtual !== 'object') {
|
|
6191
|
+
return valorAtual;
|
|
6192
|
+
}
|
|
6193
|
+
// Verificar se já visitamos este objeto (evitar referências circulares)
|
|
6194
|
+
if (visitados.has(valorAtual)) {
|
|
6195
|
+
return visitados.get(valorAtual);
|
|
6196
|
+
}
|
|
6197
|
+
// Arrays
|
|
6198
|
+
if (Array.isArray(valorAtual)) {
|
|
6199
|
+
const arrayClonado = [];
|
|
6200
|
+
visitados.set(valorAtual, arrayClonado);
|
|
6201
|
+
for (let i = 0; i < valorAtual.length; i++) {
|
|
6202
|
+
arrayClonado[i] = clonarProfundo(valorAtual[i]);
|
|
6203
|
+
}
|
|
6204
|
+
return arrayClonado;
|
|
6205
|
+
}
|
|
6206
|
+
// Objetos de Delégua - ObjetoDeleguaClasse
|
|
6207
|
+
if (valorAtual instanceof objeto_delegua_classe_1.ObjetoDeleguaClasse) {
|
|
6208
|
+
// Clonar propriedades do objeto
|
|
6209
|
+
const propriedadesClonadas = {};
|
|
6210
|
+
visitados.set(valorAtual, propriedadesClonadas);
|
|
6211
|
+
for (const chave in valorAtual.propriedades) {
|
|
6212
|
+
if (valorAtual.propriedades.hasOwnProperty(chave)) {
|
|
6213
|
+
propriedadesClonadas[chave] = clonarProfundo(valorAtual.propriedades[chave]);
|
|
6214
|
+
}
|
|
6215
|
+
}
|
|
6216
|
+
// Criar novo objeto com as propriedades clonadas
|
|
6217
|
+
// Nota: A classe em si não é clonada, apenas suas propriedades
|
|
6218
|
+
const objetoClonado = new objeto_delegua_classe_1.ObjetoDeleguaClasse(valorAtual.classe);
|
|
6219
|
+
objetoClonado.propriedades = propriedadesClonadas;
|
|
6220
|
+
return objetoClonado;
|
|
6221
|
+
}
|
|
6222
|
+
// Tuplas
|
|
6223
|
+
const nomeClasseTupla = (_a = valorAtual.constructor) === null || _a === void 0 ? void 0 : _a.name;
|
|
6224
|
+
if (nomeClasseTupla &&
|
|
6225
|
+
/^(Dupla|Trio|Quarteto|Quinteto|Sexteto|Septeto|Octeto|Noneto|Deceto)$/.test(nomeClasseTupla)) {
|
|
6226
|
+
const valoresClonados = [];
|
|
6227
|
+
visitados.set(valorAtual, valoresClonados);
|
|
6228
|
+
// Extrair valores da tupla baseado no tipo
|
|
6229
|
+
let valores = [];
|
|
6230
|
+
switch (nomeClasseTupla) {
|
|
6231
|
+
case 'Dupla':
|
|
6232
|
+
valores = [valorAtual.primeiro, valorAtual.segundo];
|
|
6233
|
+
break;
|
|
6234
|
+
case 'Trio':
|
|
6235
|
+
valores = [valorAtual.primeiro, valorAtual.segundo, valorAtual.terceiro];
|
|
6236
|
+
break;
|
|
6237
|
+
case 'Quarteto':
|
|
6238
|
+
valores = [
|
|
6239
|
+
valorAtual.primeiro,
|
|
6240
|
+
valorAtual.segundo,
|
|
6241
|
+
valorAtual.terceiro,
|
|
6242
|
+
valorAtual.quarto,
|
|
6243
|
+
];
|
|
6244
|
+
break;
|
|
6245
|
+
case 'Quinteto':
|
|
6246
|
+
valores = [
|
|
6247
|
+
valorAtual.primeiro,
|
|
6248
|
+
valorAtual.segundo,
|
|
6249
|
+
valorAtual.terceiro,
|
|
6250
|
+
valorAtual.quarto,
|
|
6251
|
+
valorAtual.quinto,
|
|
6252
|
+
];
|
|
6253
|
+
break;
|
|
6254
|
+
case 'Sexteto':
|
|
6255
|
+
valores = [
|
|
6256
|
+
valorAtual.primeiro,
|
|
6257
|
+
valorAtual.segundo,
|
|
6258
|
+
valorAtual.terceiro,
|
|
6259
|
+
valorAtual.quarto,
|
|
6260
|
+
valorAtual.quinto,
|
|
6261
|
+
valorAtual.sexto,
|
|
6262
|
+
];
|
|
6263
|
+
break;
|
|
6264
|
+
case 'Septeto':
|
|
6265
|
+
valores = [
|
|
6266
|
+
valorAtual.primeiro,
|
|
6267
|
+
valorAtual.segundo,
|
|
6268
|
+
valorAtual.terceiro,
|
|
6269
|
+
valorAtual.quarto,
|
|
6270
|
+
valorAtual.quinto,
|
|
6271
|
+
valorAtual.sexto,
|
|
6272
|
+
valorAtual.setimo,
|
|
6273
|
+
];
|
|
6274
|
+
break;
|
|
6275
|
+
case 'Octeto':
|
|
6276
|
+
valores = [
|
|
6277
|
+
valorAtual.primeiro,
|
|
6278
|
+
valorAtual.segundo,
|
|
6279
|
+
valorAtual.terceiro,
|
|
6280
|
+
valorAtual.quarto,
|
|
6281
|
+
valorAtual.quinto,
|
|
6282
|
+
valorAtual.sexto,
|
|
6283
|
+
valorAtual.setimo,
|
|
6284
|
+
valorAtual.oitavo,
|
|
6285
|
+
];
|
|
6286
|
+
break;
|
|
6287
|
+
case 'Noneto':
|
|
6288
|
+
valores = [
|
|
6289
|
+
valorAtual.primeiro,
|
|
6290
|
+
valorAtual.segundo,
|
|
6291
|
+
valorAtual.terceiro,
|
|
6292
|
+
valorAtual.quarto,
|
|
6293
|
+
valorAtual.quinto,
|
|
6294
|
+
valorAtual.sexto,
|
|
6295
|
+
valorAtual.setimo,
|
|
6296
|
+
valorAtual.oitavo,
|
|
6297
|
+
valorAtual.nono,
|
|
6298
|
+
];
|
|
6299
|
+
break;
|
|
6300
|
+
case 'Deceto':
|
|
6301
|
+
valores = [
|
|
6302
|
+
valorAtual.primeiro,
|
|
6303
|
+
valorAtual.segundo,
|
|
6304
|
+
valorAtual.terceiro,
|
|
6305
|
+
valorAtual.quarto,
|
|
6306
|
+
valorAtual.quinto,
|
|
6307
|
+
valorAtual.sexto,
|
|
6308
|
+
valorAtual.setimo,
|
|
6309
|
+
valorAtual.oitavo,
|
|
6310
|
+
valorAtual.nono,
|
|
6311
|
+
valorAtual.decimo,
|
|
6312
|
+
];
|
|
6313
|
+
break;
|
|
6314
|
+
default:
|
|
6315
|
+
// Se não conseguir identificar, tentar extrair valores diretamente
|
|
6316
|
+
if (valorAtual.valor) {
|
|
6317
|
+
valores = Array.isArray(valorAtual.valor)
|
|
6318
|
+
? valorAtual.valor
|
|
6319
|
+
: [valorAtual.valor];
|
|
6320
|
+
}
|
|
6321
|
+
}
|
|
6322
|
+
// Clonar valores
|
|
6323
|
+
for (let i = 0; i < valores.length; i++) {
|
|
6324
|
+
valoresClonados.push(clonarProfundo(valores[i]));
|
|
6325
|
+
}
|
|
6326
|
+
// Recriar a tupla com valores clonados
|
|
6327
|
+
switch (nomeClasseTupla) {
|
|
6328
|
+
case 'Dupla':
|
|
6329
|
+
return new construtos_1.Dupla(valoresClonados[0], valoresClonados[1]);
|
|
6330
|
+
case 'Trio':
|
|
6331
|
+
return new construtos_1.Trio(valoresClonados[0], valoresClonados[1], valoresClonados[2]);
|
|
6332
|
+
case 'Quarteto':
|
|
6333
|
+
return new construtos_1.Quarteto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3]);
|
|
6334
|
+
case 'Quinteto':
|
|
6335
|
+
return new construtos_1.Quinteto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4]);
|
|
6336
|
+
case 'Sexteto':
|
|
6337
|
+
return new construtos_1.Sexteto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5]);
|
|
6338
|
+
case 'Septeto':
|
|
6339
|
+
return new construtos_1.Septeto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6]);
|
|
6340
|
+
case 'Octeto':
|
|
6341
|
+
return new construtos_1.Octeto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6], valoresClonados[7]);
|
|
6342
|
+
case 'Noneto':
|
|
6343
|
+
return new construtos_1.Noneto(valoresClonados[0], valoresClonados[1], valoresClonados[2], valoresClonados[3], valoresClonados[4], valoresClonados[5], valoresClonados[6], valoresClonados[7], valoresClonados[8]);
|
|
6344
|
+
case 'Deceto':
|
|
6345
|
+
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]);
|
|
6346
|
+
default:
|
|
6347
|
+
// Se não conseguir recriar, retornar os valores clonados como array
|
|
6348
|
+
return valoresClonados;
|
|
6349
|
+
}
|
|
6350
|
+
}
|
|
6351
|
+
// DeleguaFuncao e FuncaoPadrao - funções não são clonadas profundamente
|
|
6352
|
+
// Elas mantêm referência à mesma definição, mas isso é comportamento esperado
|
|
6353
|
+
if (valorAtual instanceof estruturas_1.DeleguaFuncao || valorAtual instanceof funcao_padrao_1.FuncaoPadrao) {
|
|
6354
|
+
return valorAtual;
|
|
6355
|
+
}
|
|
6356
|
+
// Objetos simples (plain objects)
|
|
6357
|
+
const objetoClonado = {};
|
|
6358
|
+
visitados.set(valorAtual, objetoClonado);
|
|
6359
|
+
for (const chave in valorAtual) {
|
|
6360
|
+
if (valorAtual.hasOwnProperty(chave)) {
|
|
6361
|
+
objetoClonado[chave] = clonarProfundo(valorAtual[chave]);
|
|
6362
|
+
}
|
|
6363
|
+
}
|
|
6364
|
+
return objetoClonado;
|
|
6365
|
+
}
|
|
6366
|
+
return Promise.resolve(clonarProfundo(valorResolvido));
|
|
6367
|
+
}
|
|
6086
6368
|
/**
|
|
6087
6369
|
* Encontra o primeiro elemento de um vetor cuja função de pesquisa retorne
|
|
6088
6370
|
* verdadeiro na avaliação de cada elemento.
|
|
@@ -7067,7 +7349,7 @@ exports.default = {
|
|
|
7067
7349
|
],
|
|
7068
7350
|
implementacao: (interpretador, nomePrimitiva, vetor, elemento) => {
|
|
7069
7351
|
vetor.push(elemento);
|
|
7070
|
-
// TODO: Será que apenas isso é suficiente aqui?
|
|
7352
|
+
// TODO: Será que apenas isso é suficiente aqui?
|
|
7071
7353
|
if (nomePrimitiva !== '') {
|
|
7072
7354
|
interpretador.pilhaEscoposExecucao.atribuirVariavel({ lexema: nomePrimitiva }, vetor);
|
|
7073
7355
|
}
|
|
@@ -7139,7 +7421,9 @@ exports.default = {
|
|
|
7139
7421
|
return Promise.resolve(elementos);
|
|
7140
7422
|
}
|
|
7141
7423
|
else {
|
|
7142
|
-
elementos = !itens.length
|
|
7424
|
+
elementos = !itens.length
|
|
7425
|
+
? vetor.splice(posicaoInicial)
|
|
7426
|
+
: vetor.splice(posicaoInicial, ...itens);
|
|
7143
7427
|
if (nomePrimitiva !== '') {
|
|
7144
7428
|
interpretador.pilhaEscoposExecucao.atribuirVariavel({ lexema: nomePrimitiva }, elementos);
|
|
7145
7429
|
}
|
|
@@ -7230,7 +7514,7 @@ exports.default = {
|
|
|
7230
7514
|
'escreva(v.inclui(2)) // verdadeiro\n' +
|
|
7231
7515
|
'escreva(v.inclui(4)) // falso\n```' +
|
|
7232
7516
|
'\n\n ### Formas de uso \n',
|
|
7233
|
-
exemploCodigo: 'vetor.inclui(elemento)'
|
|
7517
|
+
exemploCodigo: 'vetor.inclui(elemento)',
|
|
7234
7518
|
},
|
|
7235
7519
|
inverter: {
|
|
7236
7520
|
tipoRetorno: 'qualquer[]',
|
|
@@ -7258,8 +7542,7 @@ exports.default = {
|
|
|
7258
7542
|
'\n\n```delegua\nvar v = [1, 2, 3]\n' +
|
|
7259
7543
|
'escreva(v.juntar(":")) // "1:2:3"\n```' +
|
|
7260
7544
|
'\n\n ### Formas de uso \n',
|
|
7261
|
-
exemploCodigo: 'vetor.juntar()\n' +
|
|
7262
|
-
'vetor.juntar(<separador>)',
|
|
7545
|
+
exemploCodigo: 'vetor.juntar()\n' + 'vetor.juntar(<separador>)',
|
|
7263
7546
|
},
|
|
7264
7547
|
mapear: {
|
|
7265
7548
|
tipoRetorno: 'qualquer[]',
|
|
@@ -11052,6 +11335,7 @@ function carregarBibliotecasGlobais(pilhaEscoposExecucao) {
|
|
|
11052
11335
|
pilhaEscoposExecucao.definirVariavel('aleatorio', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
|
|
11053
11336
|
pilhaEscoposExecucao.definirVariavel('aleatorioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
|
|
11054
11337
|
pilhaEscoposExecucao.definirVariavel('algum', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.algum));
|
|
11338
|
+
pilhaEscoposExecucao.definirVariavel('clonar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.clonar));
|
|
11055
11339
|
pilhaEscoposExecucao.definirVariavel('encontrar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrar));
|
|
11056
11340
|
pilhaEscoposExecucao.definirVariavel('encontrarIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
|
|
11057
11341
|
pilhaEscoposExecucao.definirVariavel('encontrarUltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
|
|
@@ -11701,7 +11985,6 @@ const metodo_primitiva_1 = require("./estruturas/metodo-primitiva");
|
|
|
11701
11985
|
const lexador_1 = require("../lexador");
|
|
11702
11986
|
const avaliador_sintatico_1 = require("../avaliador-sintatico");
|
|
11703
11987
|
const espaco_memoria_1 = require("./espaco-memoria");
|
|
11704
|
-
const comum_1 = require("./comum");
|
|
11705
11988
|
const excecoes_1 = require("../excecoes");
|
|
11706
11989
|
const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
|
|
11707
11990
|
const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
|
|
@@ -11757,7 +12040,6 @@ class InterpretadorBase {
|
|
|
11757
12040
|
emLacoRepeticao: false,
|
|
11758
12041
|
};
|
|
11759
12042
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
11760
|
-
(0, comum_1.carregarBibliotecasGlobais)(this.pilhaEscoposExecucao);
|
|
11761
12043
|
}
|
|
11762
12044
|
visitarExpressaoSeparador(expressao) {
|
|
11763
12045
|
throw new Error('Método não implementado.');
|
|
@@ -12140,6 +12422,10 @@ class InterpretadorBase {
|
|
|
12140
12422
|
return Number(valorEsquerdo) - Number(valorDireito);
|
|
12141
12423
|
case delegua_1.default.ADICAO:
|
|
12142
12424
|
case delegua_1.default.MAIS_IGUAL:
|
|
12425
|
+
// Se ambos os operandos são vetores, concatená-los
|
|
12426
|
+
if (Array.isArray(valorEsquerdo) && Array.isArray(valorDireito)) {
|
|
12427
|
+
return valorEsquerdo.concat(valorDireito);
|
|
12428
|
+
}
|
|
12143
12429
|
if (this.tiposNumericos.includes(tipoEsquerdo) &&
|
|
12144
12430
|
this.tiposNumericos.includes(tipoDireito)) {
|
|
12145
12431
|
return Number(valorEsquerdo) + Number(valorDireito);
|
|
@@ -12433,8 +12719,7 @@ class InterpretadorBase {
|
|
|
12433
12719
|
// para vetor de duplas.
|
|
12434
12720
|
// TODO: Converter elementos para `Construto` se necessário.
|
|
12435
12721
|
if (declaracao.vetorOuDicionario.tipo === 'dicionário') {
|
|
12436
|
-
valorVetorResolvido = Object.entries(valorVetorResolvido)
|
|
12437
|
-
.map(v => new construtos_1.Dupla(v[0], v[1]));
|
|
12722
|
+
valorVetorResolvido = Object.entries(valorVetorResolvido).map((v) => new construtos_1.Dupla(v[0], v[1]));
|
|
12438
12723
|
}
|
|
12439
12724
|
if (!Array.isArray(valorVetorResolvido)) {
|
|
12440
12725
|
return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
|
|
@@ -12864,7 +13149,7 @@ class InterpretadorBase {
|
|
|
12864
13149
|
const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
|
|
12865
13150
|
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
|
|
12866
13151
|
return Promise.resolve({
|
|
12867
|
-
declaracao: funcao
|
|
13152
|
+
declaracao: funcao,
|
|
12868
13153
|
});
|
|
12869
13154
|
}
|
|
12870
13155
|
/**
|
|
@@ -13216,7 +13501,7 @@ class InterpretadorBase {
|
|
|
13216
13501
|
exports.InterpretadorBase = InterpretadorBase;
|
|
13217
13502
|
|
|
13218
13503
|
}).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,"./
|
|
13504
|
+
},{"../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
13505
|
"use strict";
|
|
13221
13506
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13222
13507
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -13231,6 +13516,7 @@ const excecoes_1 = require("../excecoes");
|
|
|
13231
13516
|
const declaracoes_1 = require("../declaracoes");
|
|
13232
13517
|
const quebras_1 = require("../quebras");
|
|
13233
13518
|
const montao_1 = require("./montao");
|
|
13519
|
+
const comum_1 = require("./comum");
|
|
13234
13520
|
const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
|
|
13235
13521
|
const primitivas_numero_1 = __importDefault(require("../bibliotecas/primitivas-numero"));
|
|
13236
13522
|
const primitivas_texto_1 = __importDefault(require("../bibliotecas/primitivas-texto"));
|
|
@@ -13244,6 +13530,14 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13244
13530
|
constructor(diretorioBase, performance = false, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
|
|
13245
13531
|
super(diretorioBase, performance, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
|
|
13246
13532
|
this.montao = new montao_1.Montao();
|
|
13533
|
+
this.pontoInicializacaoBibliotecasGlobais();
|
|
13534
|
+
}
|
|
13535
|
+
/**
|
|
13536
|
+
* Cada dialeto que deriva deste interpretador conhece este ponto de inicialização.
|
|
13537
|
+
* A partir daqui, cada dialeto pode carregar as bibliotecas globais específicas do seu dialeto.
|
|
13538
|
+
*/
|
|
13539
|
+
pontoInicializacaoBibliotecasGlobais() {
|
|
13540
|
+
(0, comum_1.carregarBibliotecasGlobais)(this.pilhaEscoposExecucao);
|
|
13247
13541
|
}
|
|
13248
13542
|
resolverReferenciaMontao(referenciaMontao) {
|
|
13249
13543
|
const valorMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, referenciaMontao.endereco);
|
|
@@ -13294,8 +13588,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13294
13588
|
}
|
|
13295
13589
|
if (objeto.valor instanceof estruturas_1.ObjetoPadrao)
|
|
13296
13590
|
return objeto.valor.paraTexto();
|
|
13297
|
-
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
|
|
13298
|
-
objeto instanceof estruturas_1.DeleguaFuncao)
|
|
13591
|
+
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto instanceof estruturas_1.DeleguaFuncao)
|
|
13299
13592
|
return objeto.paraTexto();
|
|
13300
13593
|
if (objeto instanceof quebras_1.RetornoQuebra) {
|
|
13301
13594
|
if (typeof objeto.valor === 'boolean')
|
|
@@ -13333,7 +13626,8 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13333
13626
|
if (typeof valor === primitivos_1.default.BOOLEANO) {
|
|
13334
13627
|
valor = valor ? 'verdadeiro' : 'falso';
|
|
13335
13628
|
}
|
|
13336
|
-
if (valor instanceof estruturas_1.ReferenciaMontao ||
|
|
13629
|
+
if (valor instanceof estruturas_1.ReferenciaMontao ||
|
|
13630
|
+
((valor === null || valor === void 0 ? void 0 : valor.hasOwnProperty) && (valor === null || valor === void 0 ? void 0 : valor.hasOwnProperty('tipo')))) {
|
|
13337
13631
|
valor = this.resolverValor(valor);
|
|
13338
13632
|
}
|
|
13339
13633
|
objetoEscrita[propriedade] = valor;
|
|
@@ -13372,13 +13666,14 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13372
13666
|
return Promise.resolve({
|
|
13373
13667
|
tipo: `função<${funcao.declaracao.tipo || 'qualquer'}>`,
|
|
13374
13668
|
tipoExplicito: funcao.declaracao.tipoExplicito,
|
|
13375
|
-
declaracao: funcao
|
|
13669
|
+
declaracao: funcao,
|
|
13376
13670
|
});
|
|
13377
13671
|
}
|
|
13378
13672
|
async logicaComumExecucaoEnquanto(enquanto, acumularRetornos) {
|
|
13379
13673
|
let retornoExecucao;
|
|
13380
13674
|
const retornos = [];
|
|
13381
|
-
while ((acumularRetornos ||
|
|
13675
|
+
while ((acumularRetornos ||
|
|
13676
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) &&
|
|
13382
13677
|
this.eVerdadeiro(await this.avaliar(enquanto.condicao))) {
|
|
13383
13678
|
try {
|
|
13384
13679
|
retornoExecucao = await this.executar(enquanto.corpo);
|
|
@@ -13386,7 +13681,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13386
13681
|
if (acumularRetornos) {
|
|
13387
13682
|
return {
|
|
13388
13683
|
valorRetornado: retornos,
|
|
13389
|
-
tipo: 'vetor'
|
|
13684
|
+
tipo: 'vetor',
|
|
13390
13685
|
};
|
|
13391
13686
|
}
|
|
13392
13687
|
return null;
|
|
@@ -13410,7 +13705,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13410
13705
|
if (acumularRetornos) {
|
|
13411
13706
|
return {
|
|
13412
13707
|
valorRetornado: retornos,
|
|
13413
|
-
tipo: 'vetor'
|
|
13708
|
+
tipo: 'vetor',
|
|
13414
13709
|
};
|
|
13415
13710
|
}
|
|
13416
13711
|
return retornoExecucao;
|
|
@@ -13428,7 +13723,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13428
13723
|
if (acumularRetornos) {
|
|
13429
13724
|
return {
|
|
13430
13725
|
valorRetornado: retornos,
|
|
13431
|
-
tipo: 'vetor'
|
|
13726
|
+
tipo: 'vetor',
|
|
13432
13727
|
};
|
|
13433
13728
|
}
|
|
13434
13729
|
return null;
|
|
@@ -13448,12 +13743,13 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13448
13743
|
});
|
|
13449
13744
|
return Promise.reject(erro);
|
|
13450
13745
|
}
|
|
13451
|
-
} while ((acumularRetornos ||
|
|
13746
|
+
} while ((acumularRetornos ||
|
|
13747
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) &&
|
|
13452
13748
|
this.eVerdadeiro(await this.avaliar(fazer.condicaoEnquanto)));
|
|
13453
13749
|
if (acumularRetornos) {
|
|
13454
13750
|
return {
|
|
13455
13751
|
valorRetornado: retornos,
|
|
13456
|
-
tipo: 'vetor'
|
|
13752
|
+
tipo: 'vetor',
|
|
13457
13753
|
};
|
|
13458
13754
|
}
|
|
13459
13755
|
}
|
|
@@ -13469,9 +13765,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13469
13765
|
}
|
|
13470
13766
|
let retornoExecucao;
|
|
13471
13767
|
const retornos = [];
|
|
13472
|
-
while (acumularRetornos ||
|
|
13473
|
-
|
|
13474
|
-
|
|
13768
|
+
while (acumularRetornos ||
|
|
13769
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) {
|
|
13770
|
+
if (para.condicao !== null && !this.eVerdadeiro(await this.avaliar(para.condicao))) {
|
|
13475
13771
|
break;
|
|
13476
13772
|
}
|
|
13477
13773
|
retornoExecucao = await this.executar(para.corpo);
|
|
@@ -13479,7 +13775,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13479
13775
|
if (acumularRetornos) {
|
|
13480
13776
|
return {
|
|
13481
13777
|
valorRetornado: retornos,
|
|
13482
|
-
tipo: 'vetor'
|
|
13778
|
+
tipo: 'vetor',
|
|
13483
13779
|
};
|
|
13484
13780
|
}
|
|
13485
13781
|
return null;
|
|
@@ -13497,7 +13793,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13497
13793
|
if (acumularRetornos) {
|
|
13498
13794
|
return {
|
|
13499
13795
|
valorRetornado: retornos,
|
|
13500
|
-
tipo: 'vetor'
|
|
13796
|
+
tipo: 'vetor',
|
|
13501
13797
|
};
|
|
13502
13798
|
}
|
|
13503
13799
|
return retornoExecucao;
|
|
@@ -13518,14 +13814,16 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13518
13814
|
if (paraCada.vetorOuDicionario.tipo === 'dicionário') {
|
|
13519
13815
|
valorVetorOuDicionarioResolvido = Object.entries(valorVetorOuDicionarioResolvido).map((v) => new construtos_1.Dupla(v[0], v[1]));
|
|
13520
13816
|
}
|
|
13521
|
-
if (paraCada.vetorOuDicionario.tipo === 'texto' ||
|
|
13817
|
+
if (paraCada.vetorOuDicionario.tipo === 'texto' ||
|
|
13818
|
+
typeof valorVetorOuDicionarioResolvido === 'string') {
|
|
13522
13819
|
valorVetorOuDicionarioResolvido = valorVetorOuDicionarioResolvido.split('');
|
|
13523
13820
|
}
|
|
13524
13821
|
if (!Array.isArray(valorVetorOuDicionarioResolvido)) {
|
|
13525
13822
|
return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
|
|
13526
13823
|
}
|
|
13527
13824
|
const retornos = [];
|
|
13528
|
-
while ((acumularRetornos ||
|
|
13825
|
+
while ((acumularRetornos ||
|
|
13826
|
+
!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) &&
|
|
13529
13827
|
paraCada.posicaoAtual < valorVetorOuDicionarioResolvido.length) {
|
|
13530
13828
|
try {
|
|
13531
13829
|
if (paraCada.variavelIteracao instanceof construtos_1.Variavel) {
|
|
@@ -13541,7 +13839,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13541
13839
|
if (acumularRetornos) {
|
|
13542
13840
|
return {
|
|
13543
13841
|
valorRetornado: retornos,
|
|
13544
|
-
tipo: 'vetor'
|
|
13842
|
+
tipo: 'vetor',
|
|
13545
13843
|
};
|
|
13546
13844
|
}
|
|
13547
13845
|
return null;
|
|
@@ -13566,7 +13864,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
13566
13864
|
if (acumularRetornos) {
|
|
13567
13865
|
return {
|
|
13568
13866
|
valorRetornado: retornos,
|
|
13569
|
-
tipo: 'vetor'
|
|
13867
|
+
tipo: 'vetor',
|
|
13570
13868
|
};
|
|
13571
13869
|
}
|
|
13572
13870
|
return retornoExecucao;
|
|
@@ -14024,7 +14322,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14024
14322
|
return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
|
|
14025
14323
|
}
|
|
14026
14324
|
const resultadoCompreensao = await this.avaliar(listaCompreensao.paraCada);
|
|
14027
|
-
const resultadoCompreensaoResolvido = resultadoCompreensao.valorRetornado
|
|
14325
|
+
const resultadoCompreensaoResolvido = resultadoCompreensao.valorRetornado
|
|
14326
|
+
.filter((r) => r !== null)
|
|
14327
|
+
.map((r) => this.resolverValor(r));
|
|
14028
14328
|
return resultadoCompreensaoResolvido;
|
|
14029
14329
|
}
|
|
14030
14330
|
visitarExpressaoPara(expressao) {
|
|
@@ -14159,7 +14459,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14159
14459
|
escopoAnterior.espacoMemoria.valores = Object.assign(escopoAnterior.espacoMemoria.valores, ultimoEscopo.espacoMemoria.valores);
|
|
14160
14460
|
escopoAnterior.espacoMemoria.enderecosMontao = new Set([
|
|
14161
14461
|
...escopoAnterior.espacoMemoria.enderecosMontao,
|
|
14162
|
-
...ultimoEscopo.espacoMemoria.enderecosMontao
|
|
14462
|
+
...ultimoEscopo.espacoMemoria.enderecosMontao,
|
|
14163
14463
|
]);
|
|
14164
14464
|
}
|
|
14165
14465
|
else {
|
|
@@ -14179,7 +14479,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14179
14479
|
const resultados = await super.interpretar(declaracoes, manterAmbiente);
|
|
14180
14480
|
if (resultados.resultado.length > 0) {
|
|
14181
14481
|
const ultimoResultado = resultados.resultado[resultados.resultado.length - 1];
|
|
14182
|
-
if (ultimoResultado &&
|
|
14482
|
+
if (ultimoResultado &&
|
|
14483
|
+
ultimoResultado.valorRetornado instanceof quebras_1.RetornoQuebra &&
|
|
14484
|
+
ultimoResultado.valorRetornado.valor instanceof estruturas_1.ReferenciaMontao) {
|
|
14183
14485
|
const ultimaDeclaracao = declaracoes[declaracoes.length - 1];
|
|
14184
14486
|
ultimoResultado.valorRetornado.valor = this.montao.obterReferencia(ultimaDeclaracao.hashArquivo, ultimaDeclaracao.linha, ultimoResultado.valorRetornado.valor.endereco);
|
|
14185
14487
|
}
|
|
@@ -14189,7 +14491,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
14189
14491
|
}
|
|
14190
14492
|
exports.Interpretador = Interpretador;
|
|
14191
14493
|
|
|
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){
|
|
14494
|
+
},{"../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
14495
|
"use strict";
|
|
14194
14496
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14195
14497
|
exports.Montao = void 0;
|
|
@@ -16369,13 +16671,14 @@ exports.palavrasReservadas = {
|
|
|
16369
16671
|
nulo: pitugues_1.default.NULO,
|
|
16370
16672
|
ou: pitugues_1.default.OU,
|
|
16371
16673
|
padrao: pitugues_1.default.PADRAO,
|
|
16674
|
+
padrão: pitugues_1.default.PADRAO,
|
|
16372
16675
|
para: pitugues_1.default.PARA,
|
|
16373
16676
|
pegue: pitugues_1.default.PEGUE,
|
|
16374
16677
|
quebrar: pitugues_1.default.QUEBRAR,
|
|
16375
16678
|
retorna: pitugues_1.default.RETORNA,
|
|
16376
16679
|
se: pitugues_1.default.SE,
|
|
16377
16680
|
senao: pitugues_1.default.SENAO,
|
|
16378
|
-
senão: pitugues_1.default.
|
|
16681
|
+
senão: pitugues_1.default.SENAO,
|
|
16379
16682
|
super: pitugues_1.default.SUPER,
|
|
16380
16683
|
sustar: pitugues_1.default.SUSTAR,
|
|
16381
16684
|
tendo: pitugues_1.default.TENDO,
|