@designliquido/delegua 1.28.2 → 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 (37) 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 +38 -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.map +1 -1
  22. package/interpretador/dialetos/pitugues/interpretador-pitugues.js +20 -1
  23. package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
  24. package/interpretador/estruturas/funcao-padrao.d.ts +2 -0
  25. package/interpretador/estruturas/funcao-padrao.d.ts.map +1 -1
  26. package/interpretador/estruturas/funcao-padrao.js +1 -1
  27. package/interpretador/estruturas/funcao-padrao.js.map +1 -1
  28. package/interpretador/interpretador-base.d.ts.map +1 -1
  29. package/interpretador/interpretador-base.js +2 -1
  30. package/interpretador/interpretador-base.js.map +1 -1
  31. package/interpretador/interpretador.js +1 -1
  32. package/interpretador/interpretador.js.map +1 -1
  33. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  34. package/lexador/dialetos/lexador-pitugues.js +11 -0
  35. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  36. package/package.json +1 -1
  37. package/umd/delegua.js +131 -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();
@@ -7213,7 +7242,12 @@ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSin
7213
7242
  .obterTipoVariavelPorNome(simboloIdentificador.lexema);
7214
7243
  }
7215
7244
  catch (erro) {
7216
- throw this.erro(simboloIdentificador, erro.message);
7245
+ if (this.existeImportacaoCoringa) {
7246
+ tipoOperando = 'qualquer';
7247
+ }
7248
+ else {
7249
+ throw this.erro(simboloIdentificador, erro.message);
7250
+ }
7217
7251
  }
7218
7252
  }
7219
7253
  return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador, tipoOperando);
@@ -7841,21 +7875,52 @@ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSin
7841
7875
  else {
7842
7876
  declaracao.simboloTudo = nomeModulo;
7843
7877
  }
7878
+ await this.registrarAliasImportacao(declaracao);
7844
7879
  return Promise.resolve(declaracao);
7845
7880
  }
7846
7881
  async declaracaoImportarDe() {
7847
7882
  const nomeModulo = this.consumir(pitugues_2.default.IDENTIFICADOR, "Esperado nome do módulo após 'de'.");
7848
7883
  const caminho = new construtos_1.Literal(nomeModulo.hashArquivo, Number(nomeModulo.linha), nomeModulo.lexema);
7849
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
+ }
7850
7891
  const elementosImportacao = [];
7892
+ const elementosImportacaoComo = [];
7851
7893
  do {
7852
7894
  const elemento = this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado identificador de elemento a ser importado.');
7853
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
+ }
7854
7900
  } while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
7855
7901
  const declaracao = new declaracoes_1.Importar(caminho);
7856
7902
  declaracao.elementosImportacao = elementosImportacao;
7903
+ declaracao.elementosImportacaoComo = elementosImportacaoComo;
7904
+ await this.registrarAliasImportacao(declaracao);
7857
7905
  return Promise.resolve(declaracao);
7858
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
+ }
7859
7924
  async declaracaoTente() {
7860
7925
  const simboloTente = this.simboloAnterior();
7861
7926
  this.consumir(pitugues_2.default.DOIS_PONTOS, "Esperado ':' após a declaração 'tente'.");
@@ -16657,6 +16722,7 @@ class Importar extends declaracao_1.Declaracao {
16657
16722
  super(caminho.linha, caminho.hashArquivo);
16658
16723
  this.simboloTudo = null;
16659
16724
  this.elementosImportacao = [];
16725
+ this.elementosImportacaoComo = [];
16660
16726
  this.caminho = caminho;
16661
16727
  }
16662
16728
  async aceitar(visitante) {
@@ -20322,67 +20388,75 @@ async function visitarExpressaoAcessoIntervaloVariavel(interpretador, expressao)
20322
20388
  return resultadoFatiado;
20323
20389
  }
20324
20390
  function carregarBibliotecasGlobais(pilhaEscoposExecucao) {
20325
- pilhaEscoposExecucao.definirVariavel('aleatorio', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
20326
- pilhaEscoposExecucao.definirVariavel('aleatório', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.aleatorio));
20327
- pilhaEscoposExecucao.definirVariavel('aleatorioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
20328
- pilhaEscoposExecucao.definirVariavel('aleatórioEntre', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.aleatorioEntre));
20329
- pilhaEscoposExecucao.definirVariavel('algum', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.algum));
20330
- pilhaEscoposExecucao.definirVariavel('arredondar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.arredondar));
20331
- pilhaEscoposExecucao.definirVariavel('clonar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.clonar));
20332
- pilhaEscoposExecucao.definirVariavel('encontrar', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrar));
20333
- pilhaEscoposExecucao.definirVariavel('encontrarIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
20334
- pilhaEscoposExecucao.definirVariavel('encontrarÍndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarIndice));
20335
- pilhaEscoposExecucao.definirVariavel('encontrarUltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
20336
- pilhaEscoposExecucao.definirVariavel('encontrarÚltimo', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimo));
20337
- pilhaEscoposExecucao.definirVariavel('encontrarUltimoIndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimoIndice));
20338
- pilhaEscoposExecucao.definirVariavel('encontrarÚltimoÍndice', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.encontrarUltimoIndice));
20339
- pilhaEscoposExecucao.definirVariavel('filtrarPor', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.filtrarPor));
20340
- pilhaEscoposExecucao.definirVariavel('incluido', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.incluido));
20341
- 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));
20342
20416
  const funcaoInteiro = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.inteiro);
20343
20417
  funcaoInteiro.MAXIMO = 2147483647;
20344
20418
  funcaoInteiro.MÁXIMO = 2147483647;
20345
20419
  funcaoInteiro.MINIMO = -2147483648;
20346
20420
  funcaoInteiro.MÍNIMO = -2147483648;
20347
- pilhaEscoposExecucao.definirVariavel('inteiro', funcaoInteiro);
20421
+ definir('inteiro', funcaoInteiro);
20348
20422
  const funcaoLongo = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.longo);
20349
20423
  funcaoLongo.MAXIMO = globalThis.BigInt('9223372036854775807');
20350
20424
  funcaoLongo.MÁXIMO = globalThis.BigInt('9223372036854775807');
20351
20425
  funcaoLongo.MINIMO = globalThis.BigInt('-9223372036854775808');
20352
20426
  funcaoLongo.MÍNIMO = globalThis.BigInt('-9223372036854775808');
20353
- pilhaEscoposExecucao.definirVariavel('longo', funcaoLongo);
20354
- pilhaEscoposExecucao.definirVariavel('intervalo', new funcao_padrao_1.FuncaoPadrao(3, bibliotecaGlobal.intervalo));
20355
- pilhaEscoposExecucao.definirVariavel('mapear', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.mapear));
20356
- pilhaEscoposExecucao.definirVariavel('maximo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.maximo));
20357
- pilhaEscoposExecucao.definirVariavel('máximo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.maximo));
20358
- pilhaEscoposExecucao.definirVariavel('minimo', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.minimo));
20359
- 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));
20360
20434
  const funcaoNumero = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.numero);
20361
20435
  funcaoNumero.MAXIMO = Number.MAX_VALUE;
20362
20436
  funcaoNumero.MÁXIMO = Number.MAX_VALUE;
20363
20437
  funcaoNumero.MINIMO = -Number.MAX_VALUE;
20364
20438
  funcaoNumero.MÍNIMO = -Number.MAX_VALUE;
20365
- pilhaEscoposExecucao.definirVariavel('numero', funcaoNumero);
20366
- pilhaEscoposExecucao.definirVariavel('número', funcaoNumero);
20367
- pilhaEscoposExecucao.definirVariavel('ordenar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.ordenar));
20368
- pilhaEscoposExecucao.definirVariavel('paraCada', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.paraCada));
20369
- pilhaEscoposExecucao.definirVariavel('primeiroEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.primeiroEmCondicao));
20370
- 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));
20371
20445
  const funcaoReal = new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.real);
20372
20446
  funcaoReal.MAXIMO = Number.MAX_VALUE;
20373
20447
  funcaoReal.MÁXIMO = Number.MAX_VALUE;
20374
20448
  funcaoReal.MINIMO = -Number.MAX_VALUE;
20375
20449
  funcaoReal.MÍNIMO = -Number.MAX_VALUE;
20376
- pilhaEscoposExecucao.definirVariavel('real', funcaoReal);
20377
- pilhaEscoposExecucao.definirVariavel('reduzir', new funcao_padrao_1.FuncaoPadrao(3, bibliotecaGlobal.reduzir));
20378
- pilhaEscoposExecucao.definirVariavel('somar', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.somar));
20379
- pilhaEscoposExecucao.definirVariavel('tamanho', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tamanho));
20380
- pilhaEscoposExecucao.definirVariavel('texto', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.texto));
20381
- pilhaEscoposExecucao.definirVariavel('todos', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.todos));
20382
- pilhaEscoposExecucao.definirVariavel('todosEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
20383
- pilhaEscoposExecucao.definirVariavel('todosEmCondição', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
20384
- pilhaEscoposExecucao.definirVariavel('tupla', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tupla));
20385
- 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));
20386
20460
  }
20387
20461
  function pontoEntradaAjuda(funcao, topico) {
20388
20462
  if (!funcao) {
@@ -21769,7 +21843,7 @@ class FuncaoPadrao extends chamavel_1.Chamavel {
21769
21843
  * @returns {string} A representação da função como texto.
21770
21844
  */
21771
21845
  paraTexto() {
21772
- 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)'} />`;
21773
21847
  }
21774
21848
  /**
21775
21849
  * Método utilizado pelo VSCode para representar esta função quando impressa.
@@ -24655,7 +24729,8 @@ class InterpretadorBase {
24655
24729
  return this.paraTexto(objeto.valor);
24656
24730
  if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
24657
24731
  objeto instanceof estruturas_1.DeleguaFuncao ||
24658
- objeto instanceof estruturas_1.DescritorTipoClasse)
24732
+ objeto instanceof estruturas_1.DescritorTipoClasse ||
24733
+ objeto instanceof estruturas_1.FuncaoPadrao)
24659
24734
  return objeto.paraTexto();
24660
24735
  if (objeto instanceof quebras_1.RetornoQuebra) {
24661
24736
  if (typeof objeto.valor === 'boolean')
@@ -25011,7 +25086,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
25011
25086
  if (typeof objeto.valor === 'boolean')
25012
25087
  return objeto.valor ? 'verdadeiro' : 'falso';
25013
25088
  }
25014
- if (objeto instanceof estruturas_1.MetodoPrimitiva) {
25089
+ if (objeto instanceof estruturas_1.MetodoPrimitiva || objeto instanceof estruturas_1.FuncaoPadrao) {
25015
25090
  return objeto.paraTexto();
25016
25091
  }
25017
25092
  if (objeto instanceof Date) {
@@ -28078,6 +28153,17 @@ class LexadorPitugues {
28078
28153
  break;
28079
28154
  case '*':
28080
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
+ }
28081
28167
  this.avancar();
28082
28168
  if (this.simboloAtual() === '*') {
28083
28169
  this.avancar();