@designliquido/delegua 1.28.1 → 1.28.3

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.
Files changed (38) hide show
  1. package/analisador-semantico/analisador-semantico.d.ts +1 -0
  2. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  3. package/analisador-semantico/analisador-semantico.js +28 -0
  4. package/analisador-semantico/analisador-semantico.js.map +1 -1
  5. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts +3 -1
  6. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  7. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +31 -0
  8. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  9. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +2 -0
  10. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +44 -1
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  13. package/bin/package.json +1 -1
  14. package/declaracoes/importar.d.ts +4 -0
  15. package/declaracoes/importar.d.ts.map +1 -1
  16. package/declaracoes/importar.js +1 -0
  17. package/declaracoes/importar.js.map +1 -1
  18. package/interpretador/comum.d.ts.map +1 -1
  19. package/interpretador/comum.js +49 -41
  20. package/interpretador/comum.js.map +1 -1
  21. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +15 -14
  22. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
  23. package/interpretador/dialetos/pitugues/interpretador-pitugues.js +54 -12
  24. package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
  25. package/interpretador/estruturas/funcao-padrao.d.ts +2 -0
  26. package/interpretador/estruturas/funcao-padrao.d.ts.map +1 -1
  27. package/interpretador/estruturas/funcao-padrao.js +1 -1
  28. package/interpretador/estruturas/funcao-padrao.js.map +1 -1
  29. package/interpretador/interpretador-base.d.ts.map +1 -1
  30. package/interpretador/interpretador-base.js +2 -1
  31. package/interpretador/interpretador-base.js.map +1 -1
  32. package/interpretador/interpretador.js +1 -1
  33. package/interpretador/interpretador.js.map +1 -1
  34. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  35. package/lexador/dialetos/lexador-pitugues.js +11 -0
  36. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  37. package/package.json +1 -1
  38. package/umd/delegua.js +137 -45
package/umd/delegua.js CHANGED
@@ -548,7 +548,35 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
548
548
  }
549
549
  }
550
550
  }
551
+ declararVariaveisImportadas(declaracao) {
552
+ if (declaracao.simboloTudo) {
553
+ this.gerenciadorEscopos.declarar(declaracao.simboloTudo.lexema, {
554
+ nome: declaracao.simboloTudo.lexema,
555
+ tipo: 'módulo',
556
+ imutavel: true,
557
+ valor: undefined,
558
+ inicializada: true,
559
+ usada: false,
560
+ hashArquivo: declaracao.simboloTudo.hashArquivo,
561
+ linha: declaracao.simboloTudo.linha,
562
+ });
563
+ return;
564
+ }
565
+ for (const simboloImportado of declaracao.elementosImportacao || []) {
566
+ this.gerenciadorEscopos.declarar(simboloImportado.lexema, {
567
+ nome: simboloImportado.lexema,
568
+ tipo: 'qualquer',
569
+ imutavel: true,
570
+ valor: undefined,
571
+ inicializada: true,
572
+ usada: false,
573
+ hashArquivo: simboloImportado.hashArquivo,
574
+ linha: simboloImportado.linha,
575
+ });
576
+ }
577
+ }
551
578
  async visitarDeclaracaoImportar(declaracao) {
579
+ this.declararVariaveisImportadas(declaracao);
552
580
  this.registrarFuncoesImportadasDeTestes(declaracao);
553
581
  return Promise.resolve();
554
582
  }
@@ -6610,6 +6638,7 @@ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSin
6610
6638
  this.blocos = 0;
6611
6639
  this.performance = performance;
6612
6640
  this.intuirTipoQualquerParaIdentificadores = false;
6641
+ this.existeImportacaoCoringa = false;
6613
6642
  this.escopos = [];
6614
6643
  this.pilhaDecoradores = [];
6615
6644
  this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
@@ -6652,6 +6681,12 @@ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSin
6652
6681
  return this.primitivasConhecidas[primitiva][entidadeChamada.simbolo.lexema].tipo;
6653
6682
  }
6654
6683
  }
6684
+ // 'módulo' é um tipo opaco (usado por integrações externas, como o Liquido,
6685
+ // para objetos cujo formato não é conhecido em tempo de análise estática).
6686
+ // Não há como validar a existência do membro, então assumimos 'qualquer'.
6687
+ if (entidadeChamada.objeto.tipo === 'módulo') {
6688
+ return 'qualquer';
6689
+ }
6655
6690
  throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamada.simbolo, `Primitiva '${entidadeChamada.simbolo.lexema}' não existe.`);
6656
6691
  }
6657
6692
  logicaComumInferenciaTiposVariaveisEConstantes(inicializador, tipoPrevio) {
@@ -7207,7 +7242,12 @@ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSin
7207
7242
  .obterTipoVariavelPorNome(simboloIdentificador.lexema);
7208
7243
  }
7209
7244
  catch (erro) {
7210
- throw this.erro(simboloIdentificador, erro.message);
7245
+ if (this.existeImportacaoCoringa) {
7246
+ tipoOperando = 'qualquer';
7247
+ }
7248
+ else {
7249
+ throw this.erro(simboloIdentificador, erro.message);
7250
+ }
7211
7251
  }
7212
7252
  }
7213
7253
  return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador, tipoOperando);
@@ -7835,21 +7875,52 @@ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSin
7835
7875
  else {
7836
7876
  declaracao.simboloTudo = nomeModulo;
7837
7877
  }
7878
+ await this.registrarAliasImportacao(declaracao);
7838
7879
  return Promise.resolve(declaracao);
7839
7880
  }
7840
7881
  async declaracaoImportarDe() {
7841
7882
  const nomeModulo = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado nome do módulo após 'de'.");
7842
7883
  const caminho = new construtos_1.Literal(nomeModulo.hashArquivo, Number(nomeModulo.linha), nomeModulo.lexema);
7843
7884
  this.consumir(pitugues_2.default.IMPORTAR, "Esperado 'importar' após nome do módulo em declaração 'de ... importar'.");
7885
+ if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MULTIPLICACAO)) {
7886
+ const declaracao = new declaracoes_1.Importar(caminho);
7887
+ declaracao.simboloTudo = this.simboloAnterior();
7888
+ this.existeImportacaoCoringa = true;
7889
+ return Promise.resolve(declaracao);
7890
+ }
7844
7891
  const elementosImportacao = [];
7892
+ const elementosImportacaoComo = [];
7845
7893
  do {
7846
7894
  const elemento = this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado identificador de elemento a ser importado.');
7847
7895
  elementosImportacao.push(elemento);
7896
+ if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COMO)) {
7897
+ const alias = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado identificador após 'como' em importação seletiva.");
7898
+ elementosImportacaoComo.push({ elemento, alias });
7899
+ }
7848
7900
  } while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
7849
7901
  const declaracao = new declaracoes_1.Importar(caminho);
7850
7902
  declaracao.elementosImportacao = elementosImportacao;
7903
+ declaracao.elementosImportacaoComo = elementosImportacaoComo;
7904
+ await this.registrarAliasImportacao(declaracao);
7851
7905
  return Promise.resolve(declaracao);
7852
7906
  }
7907
+ async registrarAliasImportacao(declaracao) {
7908
+ if (declaracao.simboloTudo) {
7909
+ this.pilhaEscopos.definirInformacoesVariavel(declaracao.simboloTudo.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(declaracao.simboloTudo.lexema, 'qualquer'));
7910
+ }
7911
+ if (declaracao.elementosImportacao) {
7912
+ for (const elemento of declaracao.elementosImportacao) {
7913
+ this.pilhaEscopos.definirInformacoesVariavel(elemento.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(elemento.lexema, 'qualquer'));
7914
+ }
7915
+ for (const { alias } of declaracao.elementosImportacaoComo) {
7916
+ this.pilhaEscopos.definirInformacoesVariavel(alias.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(alias.lexema, 'qualquer'));
7917
+ }
7918
+ }
7919
+ else {
7920
+ const alias = this.avancarEDevolverAnterior();
7921
+ this.pilhaEscopos.definirInformacoesVariavel(alias.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(alias.lexema, 'qualquer'));
7922
+ }
7923
+ }
7853
7924
  async declaracaoTente() {
7854
7925
  const simboloTente = this.simboloAnterior();
7855
7926
  this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após a declaração 'tente'.");
@@ -16651,6 +16722,7 @@ class Importar extends declaracao_1.Declaracao {
16651
16722
  super(caminho.linha, caminho.hashArquivo);
16652
16723
  this.simboloTudo = null;
16653
16724
  this.elementosImportacao = [];
16725
+ this.elementosImportacaoComo = [];
16654
16726
  this.caminho = caminho;
16655
16727
  }
16656
16728
  async aceitar(visitante) {
@@ -20316,67 +20388,75 @@ async function visitarExpressaoAcessoIntervaloVariavel(interpretador, expressao)
20316
20388
  return resultadoFatiado;
20317
20389
  }
20318
20390
  function carregarBibliotecasGlobais(pilhaEscoposExecucao) {
20319
- pilhaEscoposExecucao.definirVariavel('aleatorio', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
20320
- pilhaEscoposExecucao.definirVariavel('aleatório', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
20321
- pilhaEscoposExecucao.definirVariavel('aleatorioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
20322
- pilhaEscoposExecucao.definirVariavel('aleatórioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
20323
- pilhaEscoposExecucao.definirVariavel('algum', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.algum));
20324
- pilhaEscoposExecucao.definirVariavel('arredondar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.arredondar));
20325
- pilhaEscoposExecucao.definirVariavel('clonar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.clonar));
20326
- pilhaEscoposExecucao.definirVariavel('encontrar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrar));
20327
- pilhaEscoposExecucao.definirVariavel('encontrarIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
20328
- pilhaEscoposExecucao.definirVariavel('encontrarÍndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
20329
- pilhaEscoposExecucao.definirVariavel('encontrarUltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
20330
- pilhaEscoposExecucao.definirVariavel('encontrarÚltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
20331
- pilhaEscoposExecucao.definirVariavel('encontrarUltimoIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimoIndice));
20332
- pilhaEscoposExecucao.definirVariavel('encontrarÚltimoÍndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimoIndice));
20333
- pilhaEscoposExecucao.definirVariavel('filtrarPor', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.filtrarPor));
20334
- pilhaEscoposExecucao.definirVariavel('incluido', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.incluido));
20335
- pilhaEscoposExecucao.definirVariavel('incluído', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.incluido));
20391
+ // Registra a variável e, para funções padrão, guarda o nome com que foram
20392
+ // registradas, usado para representá-las como texto (ex.: `escreva(real)`).
20393
+ const definir = (nome, valor) => {
20394
+ if (valor instanceof funcao_padrao_1.FuncaoPadrao && !valor.nome) {
20395
+ valor.nome = nome;
20396
+ }
20397
+ pilhaEscoposExecucao.definirVariavel(nome, valor);
20398
+ };
20399
+ definir('aleatorio', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
20400
+ definir('aleatório', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
20401
+ definir('aleatorioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
20402
+ definir('aleatórioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
20403
+ definir('algum', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.algum));
20404
+ definir('arredondar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.arredondar));
20405
+ definir('clonar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.clonar));
20406
+ definir('encontrar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrar));
20407
+ definir('encontrarIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
20408
+ definir('encontrarÍndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
20409
+ definir('encontrarUltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
20410
+ definir('encontrarÚltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
20411
+ definir('encontrarUltimoIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimoIndice));
20412
+ definir('encontrarÚltimoÍndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimoIndice));
20413
+ definir('filtrarPor', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.filtrarPor));
20414
+ definir('incluido', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.incluido));
20415
+ definir('incluído', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.incluido));
20336
20416
  const funcaoInteiro = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.inteiro);
20337
20417
  funcaoInteiro.MAXIMO = 2147483647;
20338
20418
  funcaoInteiro.MÁXIMO = 2147483647;
20339
20419
  funcaoInteiro.MINIMO = -2147483648;
20340
20420
  funcaoInteiro.MÍNIMO = -2147483648;
20341
- pilhaEscoposExecucao.definirVariavel('inteiro', funcaoInteiro);
20421
+ definir('inteiro', funcaoInteiro);
20342
20422
  const funcaoLongo = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.longo);
20343
20423
  funcaoLongo.MAXIMO = globalThis.BigInt('9223372036854775807');
20344
20424
  funcaoLongo.MÁXIMO = globalThis.BigInt('9223372036854775807');
20345
20425
  funcaoLongo.MINIMO = globalThis.BigInt('-9223372036854775808');
20346
20426
  funcaoLongo.MÍNIMO = globalThis.BigInt('-9223372036854775808');
20347
- pilhaEscoposExecucao.definirVariavel('longo', funcaoLongo);
20348
- pilhaEscoposExecucao.definirVariavel('intervalo', new funcao_padrao_1.FuncaoPadrao(3, bibliotecaGlobal.intervalo));
20349
- pilhaEscoposExecucao.definirVariavel('mapear', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.mapear));
20350
- pilhaEscoposExecucao.definirVariavel('maximo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.maximo));
20351
- pilhaEscoposExecucao.definirVariavel('máximo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.maximo));
20352
- pilhaEscoposExecucao.definirVariavel('minimo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.minimo));
20353
- pilhaEscoposExecucao.definirVariavel('mínimo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.minimo));
20427
+ definir('longo', funcaoLongo);
20428
+ definir('intervalo', new funcao_padrao_1.FuncaoPadrao(3, bibliotecaGlobal.intervalo));
20429
+ definir('mapear', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.mapear));
20430
+ definir('maximo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.maximo));
20431
+ definir('máximo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.maximo));
20432
+ definir('minimo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.minimo));
20433
+ definir('mínimo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.minimo));
20354
20434
  const funcaoNumero = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.numero);
20355
20435
  funcaoNumero.MAXIMO = Number.MAX_VALUE;
20356
20436
  funcaoNumero.MÁXIMO = Number.MAX_VALUE;
20357
20437
  funcaoNumero.MINIMO = -Number.MAX_VALUE;
20358
20438
  funcaoNumero.MÍNIMO = -Number.MAX_VALUE;
20359
- pilhaEscoposExecucao.definirVariavel('numero', funcaoNumero);
20360
- pilhaEscoposExecucao.definirVariavel('número', funcaoNumero);
20361
- pilhaEscoposExecucao.definirVariavel('ordenar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.ordenar));
20362
- pilhaEscoposExecucao.definirVariavel('paraCada', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.paraCada));
20363
- pilhaEscoposExecucao.definirVariavel('primeiroEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.primeiroEmCondicao));
20364
- pilhaEscoposExecucao.definirVariavel('primeiroEmCondição', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.primeiroEmCondicao));
20439
+ definir('numero', funcaoNumero);
20440
+ definir('número', funcaoNumero);
20441
+ definir('ordenar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.ordenar));
20442
+ definir('paraCada', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.paraCada));
20443
+ definir('primeiroEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.primeiroEmCondicao));
20444
+ definir('primeiroEmCondição', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.primeiroEmCondicao));
20365
20445
  const funcaoReal = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.real);
20366
20446
  funcaoReal.MAXIMO = Number.MAX_VALUE;
20367
20447
  funcaoReal.MÁXIMO = Number.MAX_VALUE;
20368
20448
  funcaoReal.MINIMO = -Number.MAX_VALUE;
20369
20449
  funcaoReal.MÍNIMO = -Number.MAX_VALUE;
20370
- pilhaEscoposExecucao.definirVariavel('real', funcaoReal);
20371
- pilhaEscoposExecucao.definirVariavel('reduzir', new funcao_padrao_1.FuncaoPadrao(3, bibliotecaGlobal.reduzir));
20372
- pilhaEscoposExecucao.definirVariavel('somar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.somar));
20373
- pilhaEscoposExecucao.definirVariavel('tamanho', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tamanho));
20374
- pilhaEscoposExecucao.definirVariavel('texto', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.texto));
20375
- pilhaEscoposExecucao.definirVariavel('todos', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.todos));
20376
- pilhaEscoposExecucao.definirVariavel('todosEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
20377
- pilhaEscoposExecucao.definirVariavel('todosEmCondição', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
20378
- pilhaEscoposExecucao.definirVariavel('tupla', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tupla));
20379
- pilhaEscoposExecucao.definirVariavel('vetor', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.vetor));
20450
+ definir('real', funcaoReal);
20451
+ definir('reduzir', new funcao_padrao_1.FuncaoPadrao(3, bibliotecaGlobal.reduzir));
20452
+ definir('somar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.somar));
20453
+ definir('tamanho', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tamanho));
20454
+ definir('texto', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.texto));
20455
+ definir('todos', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.todos));
20456
+ definir('todosEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
20457
+ definir('todosEmCondição', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
20458
+ definir('tupla', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tupla));
20459
+ definir('vetor', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.vetor));
20380
20460
  }
20381
20461
  function pontoEntradaAjuda(funcao, topico) {
20382
20462
  if (!funcao) {
@@ -21763,7 +21843,7 @@ class FuncaoPadrao extends chamavel_1.Chamavel {
21763
21843
  * @returns {string} A representação da função como texto.
21764
21844
  */
21765
21845
  paraTexto() {
21766
- return `<função-padrão nome=${this.simbolo?.lexema || '(função anônima)'} />`;
21846
+ return `<função-padrão nome=${this.nome || this.simbolo?.lexema || '(função anônima)'} />`;
21767
21847
  }
21768
21848
  /**
21769
21849
  * Método utilizado pelo VSCode para representar esta função quando impressa.
@@ -24649,7 +24729,8 @@ class InterpretadorBase {
24649
24729
  return this.paraTexto(objeto.valor);
24650
24730
  if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
24651
24731
  objeto instanceof estruturas_1.DeleguaFuncao ||
24652
- objeto instanceof estruturas_1.DescritorTipoClasse)
24732
+ objeto instanceof estruturas_1.DescritorTipoClasse ||
24733
+ objeto instanceof estruturas_1.FuncaoPadrao)
24653
24734
  return objeto.paraTexto();
24654
24735
  if (objeto instanceof quebras_1.RetornoQuebra) {
24655
24736
  if (typeof objeto.valor === 'boolean')
@@ -25005,7 +25086,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
25005
25086
  if (typeof objeto.valor === 'boolean')
25006
25087
  return objeto.valor ? 'verdadeiro' : 'falso';
25007
25088
  }
25008
- if (objeto instanceof estruturas_1.MetodoPrimitiva) {
25089
+ if (objeto instanceof estruturas_1.MetodoPrimitiva || objeto instanceof estruturas_1.FuncaoPadrao) {
25009
25090
  return objeto.paraTexto();
25010
25091
  }
25011
25092
  if (objeto instanceof Date) {
@@ -28072,6 +28153,17 @@ class LexadorPitugues {
28072
28153
  break;
28073
28154
  case '*':
28074
28155
  this.inicioSimbolo = this.atual;
28156
+ const terminaLinha = this.atual + 1 >= this.codigo[this.linha].length;
28157
+ if (terminaLinha) {
28158
+ this.atual += 1;
28159
+ this.adicionarSimbolo(pitugues_2.default.MULTIPLICACAO);
28160
+ if (!this.eUltimaLinha()) {
28161
+ this.linha += 1;
28162
+ this.atual = 0;
28163
+ this.analisarIndentacao();
28164
+ }
28165
+ break;
28166
+ }
28075
28167
  this.avancar();
28076
28168
  if (this.simboloAtual() === '*') {
28077
28169
  this.avancar();