@designliquido/delegua 1.2.0 → 1.3.1

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 (54) hide show
  1. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  2. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +5 -0
  3. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  4. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  5. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +11 -8
  6. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  7. package/bibliotecas/biblioteca-global.d.ts +1 -1
  8. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  9. package/bibliotecas/biblioteca-global.js +3 -17
  10. package/bibliotecas/biblioteca-global.js.map +1 -1
  11. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
  12. package/bibliotecas/dialetos/pitugues/biblioteca-global.js +8 -6
  13. package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
  14. package/bin/package.json +1 -1
  15. package/interfaces/tradutor-interface.d.ts +1 -1
  16. package/interfaces/tradutor-interface.d.ts.map +1 -1
  17. package/interfaces/visitante-comum-interface.d.ts +4 -5
  18. package/interfaces/visitante-comum-interface.d.ts.map +1 -1
  19. package/interpretador/comum.d.ts.map +1 -1
  20. package/interpretador/comum.js +1 -0
  21. package/interpretador/comum.js.map +1 -1
  22. package/interpretador/depuracao/comum.d.ts +2 -0
  23. package/interpretador/depuracao/comum.d.ts.map +1 -1
  24. package/interpretador/depuracao/comum.js +15 -2
  25. package/interpretador/depuracao/comum.js.map +1 -1
  26. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +2 -0
  27. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts.map +1 -1
  28. package/interpretador/depuracao/interpretador-base-com-depuracao.js +6 -0
  29. package/interpretador/depuracao/interpretador-base-com-depuracao.js.map +1 -1
  30. package/interpretador/dialetos/pitugues/comum.d.ts.map +1 -1
  31. package/interpretador/dialetos/pitugues/comum.js +13 -0
  32. package/interpretador/dialetos/pitugues/comum.js.map +1 -1
  33. package/interpretador/interpretador-base.d.ts +2 -2
  34. package/interpretador/interpretador-base.d.ts.map +1 -1
  35. package/interpretador/interpretador-base.js +9 -17
  36. package/interpretador/interpretador-base.js.map +1 -1
  37. package/interpretador/interpretador.d.ts +3 -4
  38. package/interpretador/interpretador.d.ts.map +1 -1
  39. package/interpretador/interpretador.js +14 -8
  40. package/interpretador/interpretador.js.map +1 -1
  41. package/package.json +1 -1
  42. package/tradutores/index.d.ts +1 -0
  43. package/tradutores/index.d.ts.map +1 -1
  44. package/tradutores/index.js +1 -0
  45. package/tradutores/index.js.map +1 -1
  46. package/tradutores/tradutor-elixir.d.ts +141 -0
  47. package/tradutores/tradutor-elixir.d.ts.map +1 -0
  48. package/tradutores/tradutor-elixir.js +926 -0
  49. package/tradutores/tradutor-elixir.js.map +1 -0
  50. package/tradutores/tradutor-mermaidjs.d.ts +68 -78
  51. package/tradutores/tradutor-mermaidjs.d.ts.map +1 -1
  52. package/tradutores/tradutor-mermaidjs.js +596 -404
  53. package/tradutores/tradutor-mermaidjs.js.map +1 -1
  54. package/umd/delegua.js +1806 -698
package/umd/delegua.js CHANGED
@@ -3842,7 +3842,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
3842
3842
  }
3843
3843
  exports.AvaliadorSintatico = AvaliadorSintatico;
3844
3844
 
3845
- },{"../bibliotecas/primitivas-dicionario":29,"../bibliotecas/primitivas-numero":30,"../bibliotecas/primitivas-texto":31,"../bibliotecas/primitivas-vetor":32,"../construtos":62,"../construtos/tuplas":80,"../declaracoes":109,"../inferenciador":135,"../informacao-elemento-sintatico":136,"../tipos-de-dados/delegua":207,"../tipos-de-simbolos/delegua":212,"./avaliador-sintatico-base":9,"./comum":11,"./elemento-montao-tipos":19,"./erro-avaliador-sintatico":20,"./informacao-escopo":22,"./montao-tipos":25,"./pilha-escopos":26,"browser-process-hrtime":402}],11:[function(require,module,exports){
3845
+ },{"../bibliotecas/primitivas-dicionario":29,"../bibliotecas/primitivas-numero":30,"../bibliotecas/primitivas-texto":31,"../bibliotecas/primitivas-vetor":32,"../construtos":62,"../construtos/tuplas":80,"../declaracoes":109,"../inferenciador":135,"../informacao-elemento-sintatico":136,"../tipos-de-dados/delegua":207,"../tipos-de-simbolos/delegua":212,"./avaliador-sintatico-base":9,"./comum":11,"./elemento-montao-tipos":19,"./erro-avaliador-sintatico":20,"./informacao-escopo":22,"./montao-tipos":25,"./pilha-escopos":26,"browser-process-hrtime":403}],11:[function(require,module,exports){
3846
3846
  "use strict";
3847
3847
  Object.defineProperty(exports, "__esModule", { value: true });
3848
3848
  exports.buscarRetornos = buscarRetornos;
@@ -6021,6 +6021,12 @@ class AvaliadorSintaticoPitugues {
6021
6021
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6022
6022
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoMapeamento', 'função'),
6023
6023
  ]));
6024
+ this.pilhaEscopos.definirInformacoesVariavel('maximo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('maximo', 'número', true, [
6025
+ new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6026
+ ]));
6027
+ this.pilhaEscopos.definirInformacoesVariavel('minimo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('minimo', 'número', true, [
6028
+ new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6029
+ ]));
6024
6030
  this.pilhaEscopos.definirInformacoesVariavel('numero', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('número', 'número', true, [
6025
6031
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valorParaConverter', 'qualquer'),
6026
6032
  ]));
@@ -6047,6 +6053,9 @@ class AvaliadorSintaticoPitugues {
6047
6053
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoReducao', 'função'),
6048
6054
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valorInicial', 'qualquer'),
6049
6055
  ]));
6056
+ this.pilhaEscopos.definirInformacoesVariavel('somar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('somar', 'número', true, [
6057
+ new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6058
+ ]));
6050
6059
  this.pilhaEscopos.definirInformacoesVariavel('tamanho', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('tamanho', 'inteiro', true, [
6051
6060
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('objeto', 'qualquer'),
6052
6061
  ]));
@@ -6060,14 +6069,8 @@ class AvaliadorSintaticoPitugues {
6060
6069
  this.pilhaEscopos.definirInformacoesVariavel('tupla', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('tupla', 'tupla', true, [
6061
6070
  new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6062
6071
  ]));
6063
- this.pilhaEscopos.definirInformacoesVariavel('maximo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('maximo', 'número', true, [
6064
- new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6065
- ]));
6066
- this.pilhaEscopos.definirInformacoesVariavel('minimo', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('minimo', 'número', true, [
6067
- new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6068
- ]));
6069
- this.pilhaEscopos.definirInformacoesVariavel('somar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('somar', 'número', true, [
6070
- new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
6072
+ this.pilhaEscopos.definirInformacoesVariavel('vetor', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'vetor', true, [
6073
+ new informacao_elemento_sintatico_1.InformacaoElementoSintatico('tupla', 'qualquer')
6071
6074
  ]));
6072
6075
  }
6073
6076
  async analisar(retornoLexador, hashArquivo) {
@@ -6118,7 +6121,7 @@ class AvaliadorSintaticoPitugues {
6118
6121
  }
6119
6122
  exports.AvaliadorSintaticoPitugues = AvaliadorSintaticoPitugues;
6120
6123
 
6121
- },{"../../bibliotecas/dialetos/pitugues/primitivas-tupla":28,"../../bibliotecas/primitivas-dicionario":29,"../../bibliotecas/primitivas-numero":30,"../../bibliotecas/primitivas-texto":31,"../../bibliotecas/primitivas-vetor":32,"../../construtos":62,"../../declaracoes":109,"../../inferenciador":135,"../../informacao-elemento-sintatico":136,"../../lexador":197,"../../lexador/micro-lexador-pitugues":202,"../../tipos-de-dados/dialetos/pitugues":208,"../../tipos-de-simbolos/pitugues":216,"../comum":11,"../erro-avaliador-sintatico":20,"../informacao-escopo":22,"../pilha-escopos":26,"./micro-avaliador-sintatico-pitugues":18,"browser-process-hrtime":402}],14:[function(require,module,exports){
6124
+ },{"../../bibliotecas/dialetos/pitugues/primitivas-tupla":28,"../../bibliotecas/primitivas-dicionario":29,"../../bibliotecas/primitivas-numero":30,"../../bibliotecas/primitivas-texto":31,"../../bibliotecas/primitivas-vetor":32,"../../construtos":62,"../../declaracoes":109,"../../inferenciador":135,"../../informacao-elemento-sintatico":136,"../../lexador":197,"../../lexador/micro-lexador-pitugues":202,"../../tipos-de-dados/dialetos/pitugues":208,"../../tipos-de-simbolos/pitugues":216,"../comum":11,"../erro-avaliador-sintatico":20,"../informacao-escopo":22,"../pilha-escopos":26,"./micro-avaliador-sintatico-pitugues":18,"browser-process-hrtime":403}],14:[function(require,module,exports){
6122
6125
  "use strict";
6123
6126
  var __importDefault = (this && this.__importDefault) || function (mod) {
6124
6127
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -7042,7 +7045,7 @@ class AvaliadorSintaticoPrisma extends avaliador_sintatico_base_1.AvaliadorSinta
7042
7045
  }
7043
7046
  exports.AvaliadorSintaticoPrisma = AvaliadorSintaticoPrisma;
7044
7047
 
7045
- },{"../../bibliotecas/primitivas-dicionario":29,"../../bibliotecas/primitivas-numero":30,"../../bibliotecas/primitivas-texto":31,"../../bibliotecas/primitivas-vetor":32,"../../construtos":62,"../../declaracoes":109,"../../inferenciador":135,"../../informacao-elemento-sintatico":136,"../../lexador":197,"../../tipos-de-simbolos/prisma":218,"../avaliador-sintatico-base":9,"../comum":11,"../informacao-escopo":22,"../pilha-escopos":26,"browser-process-hrtime":402}],16:[function(require,module,exports){
7048
+ },{"../../bibliotecas/primitivas-dicionario":29,"../../bibliotecas/primitivas-numero":30,"../../bibliotecas/primitivas-texto":31,"../../bibliotecas/primitivas-vetor":32,"../../construtos":62,"../../declaracoes":109,"../../inferenciador":135,"../../informacao-elemento-sintatico":136,"../../lexador":197,"../../tipos-de-simbolos/prisma":218,"../avaliador-sintatico-base":9,"../comum":11,"../informacao-escopo":22,"../pilha-escopos":26,"browser-process-hrtime":403}],16:[function(require,module,exports){
7046
7049
  "use strict";
7047
7050
  var __importDefault = (this && this.__importDefault) || function (mod) {
7048
7051
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -8025,7 +8028,7 @@ class AvaliadorSintaticoTenda extends avaliador_sintatico_base_1.AvaliadorSintat
8025
8028
  }
8026
8029
  exports.AvaliadorSintaticoTenda = AvaliadorSintaticoTenda;
8027
8030
 
8028
- },{"../../bibliotecas/primitivas-dicionario":29,"../../bibliotecas/primitivas-numero":30,"../../bibliotecas/primitivas-texto":31,"../../bibliotecas/primitivas-vetor":32,"../../construtos":62,"../../construtos/tuplas":80,"../../declaracoes":109,"../../inferenciador":135,"../../informacao-elemento-sintatico":136,"../../lexador/simbolo":205,"../../tipos-de-dados/delegua":207,"../../tipos-de-simbolos/tenda":219,"../avaliador-sintatico-base":9,"./../erro-avaliador-sintatico":20,"./../informacao-escopo":22,"./../pilha-escopos":26,"browser-process-hrtime":402}],17:[function(require,module,exports){
8031
+ },{"../../bibliotecas/primitivas-dicionario":29,"../../bibliotecas/primitivas-numero":30,"../../bibliotecas/primitivas-texto":31,"../../bibliotecas/primitivas-vetor":32,"../../construtos":62,"../../construtos/tuplas":80,"../../declaracoes":109,"../../inferenciador":135,"../../informacao-elemento-sintatico":136,"../../lexador/simbolo":205,"../../tipos-de-dados/delegua":207,"../../tipos-de-simbolos/tenda":219,"../avaliador-sintatico-base":9,"./../erro-avaliador-sintatico":20,"./../informacao-escopo":22,"./../pilha-escopos":26,"browser-process-hrtime":403}],17:[function(require,module,exports){
8029
8032
  "use strict";
8030
8033
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8031
8034
  if (k2 === undefined) k2 = k;
@@ -8860,7 +8863,6 @@ const descritor_tipo_classe_1 = require("../interpretador/estruturas/descritor-t
8860
8863
  const estruturas_1 = require("../interpretador/estruturas");
8861
8864
  const construtos_1 = require("../construtos");
8862
8865
  const quebras_1 = require("../quebras");
8863
- const inferenciador_1 = require("../inferenciador");
8864
8866
  const configTuplas = {
8865
8867
  'Dupla': { Classe: construtos_1.Dupla, props: ['primeiro', 'segundo'] },
8866
8868
  'Trio': { Classe: construtos_1.Trio, props: ['primeiro', 'segundo', 'terceiro'] },
@@ -9783,7 +9785,7 @@ async function todosEmCondicao(interpretador, vetor, funcaoCondicional) {
9783
9785
  * @returns A tupla resolvida.
9784
9786
  */
9785
9787
  async function tupla(interpretador, vetor) {
9786
- const valorVetor = !Array.isArray(vetor) && vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
9788
+ const valorVetor = interpretador.resolverValor(vetor);
9787
9789
  // TODO: As lógicas de validação abaixo deixam de fazer sentido com a validação de argumentos feita
9788
9790
  // na avaliação sintática. Estudar remoção.
9789
9791
  if (!Array.isArray(valorVetor)) {
@@ -9792,21 +9794,8 @@ async function tupla(interpretador, vetor) {
9792
9794
  linha: interpretador.linhaDeclaracaoAtual,
9793
9795
  }, 'Argumento de função nativa `tupla` não parece ser um vetor.'));
9794
9796
  }
9795
- const tamanho = valorVetor.length;
9796
- if (tamanho < 2) {
9797
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
9798
- hashArquivo: interpretador.hashArquivoDeclaracaoAtual,
9799
- linha: interpretador.linhaDeclaracaoAtual,
9800
- }, 'Para ser transformado em uma tupla, vetor precisa ter no mínimo 2 elementos.'));
9801
- }
9802
- const criarLiteral = (valor) => new construtos_1.Literal(interpretador.hashArquivoDeclaracaoAtual, interpretador.linhaDeclaracaoAtual, valor, (0, inferenciador_1.inferirTipoVariavel)(valor));
9803
- if (mapaConstrutoresTupla.hasOwnProperty(tamanho)) {
9804
- const Construtor = mapaConstrutoresTupla[tamanho];
9805
- const args = valorVetor.map(criarLiteral);
9806
- return Promise.resolve(new Construtor(...args));
9807
- }
9808
- const elementos = valorVetor.map(criarLiteral);
9809
- return Promise.resolve(new construtos_1.TuplaN(interpretador.hashArquivoDeclaracaoAtual, interpretador.linhaDeclaracaoAtual, elementos));
9797
+ const elementos = valorVetor.map(item => new construtos_1.Literal(interpretador.hashArquivoDeclaracaoAtual, interpretador.linhaDeclaracaoAtual, interpretador.resolverValor(item)));
9798
+ return new construtos_1.TuplaN(interpretador.hashArquivoDeclaracaoAtual, interpretador.linhaDeclaracaoAtual, elementos);
9810
9799
  }
9811
9800
  async function vetor(interpretador, tupla) {
9812
9801
  const objetoTupla = interpretador.resolverValor(tupla);
@@ -9836,7 +9825,7 @@ async function vetor(interpretador, tupla) {
9836
9825
  return Promise.resolve(resultadoFinal);
9837
9826
  }
9838
9827
 
9839
- },{"../construtos":62,"../excecoes":129,"../inferenciador":135,"../interpretador/estruturas":171,"../interpretador/estruturas/descritor-tipo-classe":169,"../interpretador/estruturas/funcao-padrao":170,"../interpretador/estruturas/objeto-delegua-classe":174,"../quebras":206}],28:[function(require,module,exports){
9828
+ },{"../construtos":62,"../excecoes":129,"../interpretador/estruturas":171,"../interpretador/estruturas/descritor-tipo-classe":169,"../interpretador/estruturas/funcao-padrao":170,"../interpretador/estruturas/objeto-delegua-classe":174,"../quebras":206}],28:[function(require,module,exports){
9840
9829
  "use strict";
9841
9830
  Object.defineProperty(exports, "__esModule", { value: true });
9842
9831
  const excecoes_1 = require("../../../excecoes");
@@ -15549,6 +15538,7 @@ function carregarBibliotecasGlobais(pilhaEscoposExecucao) {
15549
15538
  pilhaEscoposExecucao.definirVariavel('todos', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
15550
15539
  pilhaEscoposExecucao.definirVariavel('todosEmCondicao', new funcao_padrao_1.FuncaoPadrao(2, bibliotecaGlobal.todosEmCondicao));
15551
15540
  pilhaEscoposExecucao.definirVariavel('tupla', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.tupla));
15541
+ pilhaEscoposExecucao.definirVariavel('vetor', new funcao_padrao_1.FuncaoPadrao(1, bibliotecaGlobal.vetor));
15552
15542
  }
15553
15543
  function pontoEntradaAjuda(funcao, topico) {
15554
15544
  if (!funcao) {
@@ -16638,11 +16628,9 @@ class InterpretadorBase {
16638
16628
  // Outros tipos de objetos (Date, classes customizadas, etc.)
16639
16629
  return objeto;
16640
16630
  }
16641
- visitarExpressaoArgumentoReferenciaFuncao(expressao) {
16642
- throw new Error('Método não implementado.');
16643
- }
16644
- visitarExpressaoReferenciaFuncao(expressao) {
16645
- throw new Error('Método não implementado.');
16631
+ async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
16632
+ const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
16633
+ return deleguaFuncao;
16646
16634
  }
16647
16635
  visitarExpressaoAcessoMetodo(expressao) {
16648
16636
  throw new Error('Método não implementado.');
@@ -16659,18 +16647,7 @@ class InterpretadorBase {
16659
16647
  return Promise.resolve();
16660
16648
  }
16661
16649
  async visitarDeclaracaoTendoComo(declaracao) {
16662
- const retornoInicializacao = await this.avaliar(declaracao.inicializacaoVariavel);
16663
- const retornoInicializacaoResolvido = this.resolverValor(retornoInicializacao);
16664
- this.pilhaEscoposExecucao.definirConstante(declaracao.simboloVariavel.lexema, retornoInicializacaoResolvido);
16665
- await this.executar(declaracao.corpo);
16666
- if (retornoInicializacao instanceof estruturas_1.ObjetoDeleguaClasse) {
16667
- const metodoFinalizar = retornoInicializacaoResolvido.classe.metodos['finalizar'];
16668
- if (metodoFinalizar) {
16669
- const chamavel = metodoFinalizar.funcaoPorMetodoDeClasse(retornoInicializacaoResolvido);
16670
- chamavel.chamar(this, []);
16671
- }
16672
- }
16673
- return null;
16650
+ throw new Error('Método não implementado.');
16674
16651
  }
16675
16652
  async visitarDeclaracaoInicioAlgoritmo(declaracao) {
16676
16653
  throw new Error('Método não implementado.');
@@ -16731,6 +16708,10 @@ class InterpretadorBase {
16731
16708
  async visitarExpressaoFimPara(declaracao) {
16732
16709
  throw new Error('Método não implementado.');
16733
16710
  }
16711
+ async visitarExpressaoReferenciaFuncao(expressao) {
16712
+ const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
16713
+ return deleguaFuncao;
16714
+ }
16734
16715
  /**
16735
16716
  * Chama o método `aceitar` de um construto ou declaração, passando o
16736
16717
  * próprio interpretador como parâmetro.
@@ -17795,6 +17776,7 @@ class InterpretadorBase {
17795
17776
  visitarDeclaracaoDefinicaoFuncao(declaracao) {
17796
17777
  const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
17797
17778
  this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
17779
+ this.pilhaEscoposExecucao.registrarReferenciaFuncao(declaracao.id, funcao);
17798
17780
  return Promise.resolve({
17799
17781
  declaracao: funcao,
17800
17782
  });
@@ -18319,7 +18301,7 @@ class InterpretadorBase {
18319
18301
  exports.InterpretadorBase = InterpretadorBase;
18320
18302
 
18321
18303
  }).call(this)}).call(this,require('_process'))
18322
- },{"../avaliador-sintatico":21,"../bibliotecas/primitivas-dicionario":29,"../bibliotecas/primitivas-vetor":32,"../construtos":62,"../excecoes":129,"../inferenciador":135,"../lexador":197,"../quebras":206,"../tipos-de-dados/delegua":207,"../tipos-de-dados/primitivos":209,"../tipos-de-simbolos/delegua":212,"./espaco-memoria":164,"./estruturas":171,"./estruturas/metodo-primitiva":172,"./pilha-escopos-execucao":181,"_process":456,"browser-process-hrtime":402}],179:[function(require,module,exports){
18304
+ },{"../avaliador-sintatico":21,"../bibliotecas/primitivas-dicionario":29,"../bibliotecas/primitivas-vetor":32,"../construtos":62,"../excecoes":129,"../inferenciador":135,"../lexador":197,"../quebras":206,"../tipos-de-dados/delegua":207,"../tipos-de-dados/primitivos":209,"../tipos-de-simbolos/delegua":212,"./espaco-memoria":164,"./estruturas":171,"./estruturas/metodo-primitiva":172,"./pilha-escopos-execucao":181,"_process":457,"browser-process-hrtime":403}],179:[function(require,module,exports){
18323
18305
  "use strict";
18324
18306
  var __importDefault = (this && this.__importDefault) || function (mod) {
18325
18307
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -18728,6 +18710,20 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
18728
18710
  async visitarDeclaracaoParaCada(declaracao) {
18729
18711
  return this.logicaComumExecucaoParaCada(declaracao, false);
18730
18712
  }
18713
+ async visitarDeclaracaoTendoComo(declaracao) {
18714
+ const retornoInicializacao = await this.avaliar(declaracao.inicializacaoVariavel);
18715
+ const retornoInicializacaoResolvido = this.resolverValor(retornoInicializacao);
18716
+ this.pilhaEscoposExecucao.definirConstante(declaracao.simboloVariavel.lexema, retornoInicializacaoResolvido);
18717
+ await this.executar(declaracao.corpo);
18718
+ if (retornoInicializacao instanceof estruturas_1.ObjetoDeleguaClasse) {
18719
+ const metodoFinalizar = retornoInicializacaoResolvido.classe.metodos['finalizar'];
18720
+ if (metodoFinalizar) {
18721
+ const chamavel = metodoFinalizar.funcaoPorMetodoDeClasse(retornoInicializacaoResolvido);
18722
+ chamavel.chamar(this, []);
18723
+ }
18724
+ }
18725
+ return null;
18726
+ }
18731
18727
  async visitarExpressaoAcessoIndiceVariavel(expressao) {
18732
18728
  const promises = await Promise.all([
18733
18729
  this.avaliar(expressao.entidadeChamada),
@@ -19038,10 +19034,6 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
19038
19034
  async visitarExpressaoAjuda(expressao) {
19039
19035
  return Promise.resolve((0, comum_1.pontoEntradaAjuda)(expressao.funcao, expressao.valor));
19040
19036
  }
19041
- async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
19042
- const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
19043
- return deleguaFuncao;
19044
- }
19045
19037
  async visitarExpressaoAtribuicaoPorIndice(expressao) {
19046
19038
  const promises = await Promise.all([
19047
19039
  this.avaliar(expressao.objeto),
@@ -19208,10 +19200,6 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
19208
19200
  visitarExpressaoParaCada(expressao) {
19209
19201
  return this.logicaComumExecucaoParaCada(expressao, true);
19210
19202
  }
19211
- async visitarExpressaoReferenciaFuncao(expressao) {
19212
- const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
19213
- return deleguaFuncao;
19214
- }
19215
19203
  async visitarExpressaoRetornar(declaracao) {
19216
19204
  let valor = null;
19217
19205
  if (declaracao.valor !== null && declaracao.valor !== undefined) {
@@ -20935,7 +20923,7 @@ class LexadorPitugues {
20935
20923
  }
20936
20924
  exports.LexadorPitugues = LexadorPitugues;
20937
20925
 
20938
- },{"../../tipos-de-simbolos/pitugues":216,"../simbolo":205,"./palavras-reservadas/pitugues":193,"browser-process-hrtime":402}],187:[function(require,module,exports){
20926
+ },{"../../tipos-de-simbolos/pitugues":216,"../simbolo":205,"./palavras-reservadas/pitugues":193,"browser-process-hrtime":403}],187:[function(require,module,exports){
20939
20927
  "use strict";
20940
20928
  var __importDefault = (this && this.__importDefault) || function (mod) {
20941
20929
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -21545,7 +21533,7 @@ class LexadorPrisma {
21545
21533
  }
21546
21534
  exports.LexadorPrisma = LexadorPrisma;
21547
21535
 
21548
- },{"../../tipos-de-simbolos/prisma":218,"../simbolo":205,"./palavras-reservadas/prisma":195,"browser-process-hrtime":402}],189:[function(require,module,exports){
21536
+ },{"../../tipos-de-simbolos/prisma":218,"../simbolo":205,"./palavras-reservadas/prisma":195,"browser-process-hrtime":403}],189:[function(require,module,exports){
21549
21537
  "use strict";
21550
21538
  var __importDefault = (this && this.__importDefault) || function (mod) {
21551
21539
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -21936,7 +21924,7 @@ class LexadorTenda {
21936
21924
  }
21937
21925
  exports.LexadorTenda = LexadorTenda;
21938
21926
 
21939
- },{"../../tipos-de-simbolos/tenda":219,"../simbolo":205,"./palavras-reservadas/tenda":196,"browser-process-hrtime":402}],190:[function(require,module,exports){
21927
+ },{"../../tipos-de-simbolos/tenda":219,"../simbolo":205,"./palavras-reservadas/tenda":196,"browser-process-hrtime":403}],190:[function(require,module,exports){
21940
21928
  "use strict";
21941
21929
  var __importDefault = (this && this.__importDefault) || function (mod) {
21942
21930
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -22896,7 +22884,7 @@ class Lexador {
22896
22884
  }
22897
22885
  exports.Lexador = Lexador;
22898
22886
 
22899
- },{"../tipos-de-simbolos/delegua":212,"./palavras-reservadas":204,"./simbolo":205,"browser-process-hrtime":402}],201:[function(require,module,exports){
22887
+ },{"../tipos-de-simbolos/delegua":212,"./palavras-reservadas":204,"./simbolo":205,"browser-process-hrtime":403}],201:[function(require,module,exports){
22900
22888
  "use strict";
22901
22889
  var __importDefault = (this && this.__importDefault) || function (mod) {
22902
22890
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -24379,6 +24367,7 @@ __exportStar(require("./tradutor-assembly-arm"), exports);
24379
24367
  __exportStar(require("./tradutor-assembly-x64"), exports);
24380
24368
  __exportStar(require("./tradutor-assemblyscript"), exports);
24381
24369
  __exportStar(require("./tradutor-calango"), exports);
24370
+ __exportStar(require("./tradutor-elixir"), exports);
24382
24371
  __exportStar(require("./tradutor-javascript"), exports);
24383
24372
  __exportStar(require("./tradutor-mermaidjs"), exports);
24384
24373
  __exportStar(require("./tradutor-portugol-ipt"), exports);
@@ -24388,7 +24377,7 @@ __exportStar(require("./tradutor-reverso-python"), exports);
24388
24377
  __exportStar(require("./tradutor-reverso-tenda"), exports);
24389
24378
  __exportStar(require("./tradutor-ruby"), exports);
24390
24379
 
24391
- },{"./tradutor-assembly-arm":229,"./tradutor-assembly-x64":230,"./tradutor-assemblyscript":231,"./tradutor-calango":232,"./tradutor-javascript":233,"./tradutor-mermaidjs":234,"./tradutor-portugol-ipt":235,"./tradutor-python":236,"./tradutor-reverso-javascript":237,"./tradutor-reverso-python":238,"./tradutor-reverso-tenda":239,"./tradutor-ruby":240}],221:[function(require,module,exports){
24380
+ },{"./tradutor-assembly-arm":229,"./tradutor-assembly-x64":230,"./tradutor-assemblyscript":231,"./tradutor-calango":232,"./tradutor-elixir":233,"./tradutor-javascript":234,"./tradutor-mermaidjs":235,"./tradutor-portugol-ipt":236,"./tradutor-python":237,"./tradutor-reverso-javascript":238,"./tradutor-reverso-python":239,"./tradutor-reverso-tenda":240,"./tradutor-ruby":241}],221:[function(require,module,exports){
24392
24381
  "use strict";
24393
24382
  Object.defineProperty(exports, "__esModule", { value: true });
24394
24383
  exports.ArestaFluxograma = void 0;
@@ -25758,7 +25747,7 @@ __decorate([
25758
25747
  Decorators_1.Override
25759
25748
  ], Python3Lexer.prototype, "nextToken", null);
25760
25749
 
25761
- },{"./python3-parser":228,"antlr4ts/CommonToken":250,"antlr4ts/Decorators":254,"antlr4ts/Lexer":262,"antlr4ts/Token":279,"antlr4ts/VocabularyImpl":285,"antlr4ts/atn/ATNDeserializer":291,"antlr4ts/atn/LexerATNSimulator":312,"antlr4ts/misc/Utils":373}],228:[function(require,module,exports){
25750
+ },{"./python3-parser":228,"antlr4ts/CommonToken":251,"antlr4ts/Decorators":255,"antlr4ts/Lexer":263,"antlr4ts/Token":280,"antlr4ts/VocabularyImpl":286,"antlr4ts/atn/ATNDeserializer":292,"antlr4ts/atn/LexerATNSimulator":313,"antlr4ts/misc/Utils":374}],228:[function(require,module,exports){
25762
25751
  "use strict";
25763
25752
  // Generated from fontes\tradutores\python\Python3.g4 by ANTLR 4.9.0-SNAPSHOT
25764
25753
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
@@ -37005,7 +36994,7 @@ class Yield_argContext extends ParserRuleContext_1.ParserRuleContext {
37005
36994
  }
37006
36995
  exports.Yield_argContext = Yield_argContext;
37007
36996
 
37008
- },{"antlr4ts/FailedPredicateException":258,"antlr4ts/NoViableAltException":266,"antlr4ts/Parser":267,"antlr4ts/ParserRuleContext":270,"antlr4ts/RecognitionException":273,"antlr4ts/Token":279,"antlr4ts/VocabularyImpl":285,"antlr4ts/atn/ATN":287,"antlr4ts/atn/ATNDeserializer":291,"antlr4ts/atn/ParserATNSimulator":328,"antlr4ts/misc/Utils":373}],229:[function(require,module,exports){
36997
+ },{"antlr4ts/FailedPredicateException":259,"antlr4ts/NoViableAltException":267,"antlr4ts/Parser":268,"antlr4ts/ParserRuleContext":271,"antlr4ts/RecognitionException":274,"antlr4ts/Token":280,"antlr4ts/VocabularyImpl":286,"antlr4ts/atn/ATN":288,"antlr4ts/atn/ATNDeserializer":292,"antlr4ts/atn/ParserATNSimulator":329,"antlr4ts/misc/Utils":374}],229:[function(require,module,exports){
37009
36998
  "use strict";
37010
36999
  Object.defineProperty(exports, "__esModule", { value: true });
37011
37000
  exports.TradutorAssemblyARM = void 0;
@@ -39085,6 +39074,933 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39085
39074
  return (mod && mod.__esModule) ? mod : { "default": mod };
39086
39075
  };
39087
39076
  Object.defineProperty(exports, "__esModule", { value: true });
39077
+ exports.TradutorElixir = void 0;
39078
+ const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
39079
+ /**
39080
+ * Tradutor que converte código Delégua para Elixir.
39081
+ *
39082
+ * Elixir é uma linguagem funcional, então algumas conversões são necessárias:
39083
+ * - Classes → Módulos com structs
39084
+ * - Métodos → Funções que recebem structs como primeiro parâmetro
39085
+ * - Loops imperativos → Funções recursivas ou Enum.each
39086
+ * - Variables → Bindings imutáveis
39087
+ */
39088
+ class TradutorElixir {
39089
+ constructor() {
39090
+ this.indentacaoAtual = 0;
39091
+ this.moduloAtual = null;
39092
+ this.modulosConhecidos = new Set();
39093
+ this.funcoesConhecidas = new Set();
39094
+ this.atributosModulo = new Map();
39095
+ this.dentroDeMetodo = false;
39096
+ this.nomeParametroStruct = null;
39097
+ this.contadorVariavelTemporaria = 0;
39098
+ }
39099
+ /**
39100
+ * Adiciona a indentação atual (Elixir usa 2 espaços por convenção)
39101
+ */
39102
+ adicionarIndentacao() {
39103
+ return ' '.repeat(this.indentacaoAtual);
39104
+ }
39105
+ /**
39106
+ * Aumenta o nível de indentação em 2 espaços
39107
+ */
39108
+ aumentarIndentacao() {
39109
+ this.indentacaoAtual += 2;
39110
+ }
39111
+ /**
39112
+ * Diminui o nível de indentação em 2 espaços
39113
+ */
39114
+ diminuirIndentacao() {
39115
+ this.indentacaoAtual -= 2;
39116
+ if (this.indentacaoAtual < 0) {
39117
+ this.indentacaoAtual = 0;
39118
+ }
39119
+ }
39120
+ /**
39121
+ * Converte identificadores de camelCase para snake_case (convenção Elixir)
39122
+ */
39123
+ converterIdentificador(nome) {
39124
+ return nome
39125
+ .replace(/([A-Z])/g, '_$1')
39126
+ .toLowerCase()
39127
+ .replace(/^_/, '');
39128
+ }
39129
+ /**
39130
+ * Converte nomes de classes/módulos, preservando PascalCase
39131
+ */
39132
+ converterNomeModulo(nome) {
39133
+ return nome.charAt(0).toUpperCase() + nome.slice(1);
39134
+ }
39135
+ /**
39136
+ * Gera nome único para variável temporária
39137
+ */
39138
+ gerarVariavelTemporaria() {
39139
+ return `_temp_${this.contadorVariavelTemporaria++}`;
39140
+ }
39141
+ /**
39142
+ * Mapeia operadores Delégua para Elixir
39143
+ */
39144
+ traduzirOperador(simbolo) {
39145
+ const tipoSimbolo = simbolo.tipo;
39146
+ switch (tipoSimbolo) {
39147
+ // Aritméticos
39148
+ case delegua_1.default.ADICAO:
39149
+ return '+';
39150
+ case delegua_1.default.SUBTRACAO:
39151
+ return '-';
39152
+ case delegua_1.default.MULTIPLICACAO:
39153
+ return '*';
39154
+ case delegua_1.default.DIVISAO:
39155
+ return '/';
39156
+ case delegua_1.default.MODULO:
39157
+ return 'rem';
39158
+ case delegua_1.default.EXPONENCIACAO:
39159
+ return '**';
39160
+ // Comparação
39161
+ case delegua_1.default.MAIOR:
39162
+ return '>';
39163
+ case delegua_1.default.MAIOR_IGUAL:
39164
+ return '>=';
39165
+ case delegua_1.default.MENOR:
39166
+ return '<';
39167
+ case delegua_1.default.MENOR_IGUAL:
39168
+ return '<=';
39169
+ case delegua_1.default.IGUAL_IGUAL:
39170
+ return '==';
39171
+ case delegua_1.default.DIFERENTE:
39172
+ return '!=';
39173
+ // Lógicos
39174
+ case delegua_1.default.E:
39175
+ return 'and';
39176
+ case delegua_1.default.OU:
39177
+ return 'or';
39178
+ case delegua_1.default.NEGACAO:
39179
+ return 'not';
39180
+ // Bitwise
39181
+ case delegua_1.default.BIT_AND:
39182
+ return '&&&';
39183
+ case delegua_1.default.BIT_OR:
39184
+ return '|||';
39185
+ case delegua_1.default.BIT_XOR:
39186
+ return '^^^';
39187
+ case delegua_1.default.BIT_NOT:
39188
+ return '~~~';
39189
+ default:
39190
+ return simbolo.lexema;
39191
+ }
39192
+ }
39193
+ /**
39194
+ * Ponto de entrada para tradução
39195
+ */
39196
+ async traduzir(declaracoes) {
39197
+ let resultado = '';
39198
+ for (const declaracao of declaracoes) {
39199
+ const traducao = await declaracao.aceitar(this);
39200
+ if (traducao) {
39201
+ resultado += traducao + '\n';
39202
+ }
39203
+ }
39204
+ return resultado;
39205
+ }
39206
+ // ========== DECLARAÇÕES ==========
39207
+ visitarDeclaracaoCabecalhoPrograma(declaracao) {
39208
+ // Elixir não tem conceito de cabeçalho de programa
39209
+ return Promise.resolve('');
39210
+ }
39211
+ async visitarDeclaracaoClasse(declaracao) {
39212
+ const nomeModulo = this.converterNomeModulo(declaracao.simbolo.lexema);
39213
+ this.modulosConhecidos.add(nomeModulo);
39214
+ let resultado = this.adicionarIndentacao();
39215
+ resultado += `defmodule ${nomeModulo} do\n`;
39216
+ this.aumentarIndentacao();
39217
+ const moduloAnterior = this.moduloAtual;
39218
+ this.moduloAtual = nomeModulo;
39219
+ // Extrair campos do struct do construtor
39220
+ const camposStruct = await this.extrairCamposStruct(declaracao);
39221
+ if (camposStruct.length > 0) {
39222
+ resultado += this.adicionarIndentacao();
39223
+ resultado += `defstruct [${camposStruct.join(', ')}]\n\n`;
39224
+ }
39225
+ // Traduzir métodos
39226
+ for (const metodo of declaracao.metodos) {
39227
+ const traducaoMetodo = await this.traduzirMetodoClasse(metodo, nomeModulo);
39228
+ resultado += traducaoMetodo + '\n\n';
39229
+ }
39230
+ this.diminuirIndentacao();
39231
+ resultado += this.adicionarIndentacao() + 'end';
39232
+ this.moduloAtual = moduloAnterior;
39233
+ return Promise.resolve(resultado);
39234
+ }
39235
+ /**
39236
+ * Extrai nomes de campos do struct a partir do construtor da classe
39237
+ */
39238
+ async extrairCamposStruct(declaracao) {
39239
+ const campos = new Set();
39240
+ // Procurar pelo construtor
39241
+ const construtor = declaracao.metodos.find(m => m.simbolo.lexema === 'construtor' || m.simbolo.lexema === 'inicializar');
39242
+ if (!construtor) {
39243
+ return [];
39244
+ }
39245
+ // Analisar corpo do construtor para encontrar atribuições a "isto.campo"
39246
+ for (const declaracaoCorpo of construtor.funcao.corpo) {
39247
+ this.extrairCamposDeDeclaracao(declaracaoCorpo, campos);
39248
+ }
39249
+ // Converter para atoms do Elixir
39250
+ return Array.from(campos).map(c => `:${this.converterIdentificador(c)}`);
39251
+ }
39252
+ /**
39253
+ * Extrai campos de uma declaração recursivamente
39254
+ */
39255
+ extrairCamposDeDeclaracao(declaracao, campos) {
39256
+ // Se é uma expressão de atribuição com isto.campo
39257
+ if (declaracao.constructor.name === 'Expressao' && declaracao.expressao) {
39258
+ const expressao = declaracao.expressao;
39259
+ // DefinirValor: usado para isto.campo = valor
39260
+ if (expressao.constructor.name === 'DefinirValor') {
39261
+ if (expressao.objeto && expressao.objeto.constructor.name === 'Isto') {
39262
+ campos.add(expressao.nome.lexema);
39263
+ }
39264
+ }
39265
+ // Atribuir: pode ser usado para isto.campo = valor
39266
+ if (expressao.constructor.name === 'Atribuir') {
39267
+ // Verificar se o alvo é um acesso a propriedade de isto
39268
+ if (expressao.alvo && expressao.alvo.constructor.name === 'AcessoPropriedade') {
39269
+ const acesso = expressao.alvo;
39270
+ if (acesso.objeto && acesso.objeto.constructor.name === 'Isto') {
39271
+ campos.add(acesso.nomePropriedade);
39272
+ }
39273
+ }
39274
+ }
39275
+ }
39276
+ // Se é um bloco, processar declarações internas
39277
+ if (declaracao.constructor.name === 'Bloco') {
39278
+ for (const decl of declaracao.declaracoes) {
39279
+ this.extrairCamposDeDeclaracao(decl, campos);
39280
+ }
39281
+ }
39282
+ }
39283
+ /**
39284
+ * Traduz um método de classe para função de módulo
39285
+ */
39286
+ async traduzirMetodoClasse(metodo, nomeModulo) {
39287
+ const nomeMetodo = this.converterIdentificador(metodo.simbolo.lexema);
39288
+ let resultado = this.adicionarIndentacao();
39289
+ // Construtor vira função new/N
39290
+ if (metodo.simbolo.lexema === 'construtor' || metodo.simbolo.lexema === 'inicializar') {
39291
+ resultado += `def new(`;
39292
+ const parametros = metodo.funcao.parametros.map(p => this.converterIdentificador(p.nome.lexema));
39293
+ resultado += parametros.join(', ');
39294
+ resultado += ') do\n';
39295
+ this.aumentarIndentacao();
39296
+ resultado += this.adicionarIndentacao();
39297
+ resultado += `%${nomeModulo}{`;
39298
+ // Extrair inicializações do construtor
39299
+ const inicializacoes = await this.extrairInicializacoesStruct(metodo.funcao.corpo, nomeModulo);
39300
+ resultado += inicializacoes;
39301
+ resultado += '}\n';
39302
+ this.diminuirIndentacao();
39303
+ resultado += this.adicionarIndentacao() + 'end';
39304
+ }
39305
+ else {
39306
+ // Métodos normais recebem o struct como primeiro parâmetro
39307
+ resultado += `def ${nomeMetodo}(`;
39308
+ const nomeParametroStruct = this.converterIdentificador(nomeModulo.toLowerCase());
39309
+ this.nomeParametroStruct = nomeParametroStruct;
39310
+ const parametros = [nomeParametroStruct].concat(metodo.funcao.parametros.map(p => this.converterIdentificador(p.nome.lexema)));
39311
+ resultado += parametros.join(', ');
39312
+ resultado += ') do\n';
39313
+ this.aumentarIndentacao();
39314
+ this.dentroDeMetodo = true;
39315
+ for (const declaracaoCorpo of metodo.funcao.corpo) {
39316
+ const traducao = await declaracaoCorpo.aceitar(this);
39317
+ if (traducao) {
39318
+ resultado += traducao + '\n';
39319
+ }
39320
+ }
39321
+ this.dentroDeMetodo = false;
39322
+ this.nomeParametroStruct = null;
39323
+ this.diminuirIndentacao();
39324
+ resultado += this.adicionarIndentacao() + 'end';
39325
+ }
39326
+ return resultado;
39327
+ }
39328
+ /**
39329
+ * Extrai inicializações de struct do corpo do construtor
39330
+ */
39331
+ async extrairInicializacoesStruct(corpo, nomeModulo) {
39332
+ const inicializacoes = [];
39333
+ for (const declaracao of corpo) {
39334
+ if (declaracao.constructor.name === 'Expressao' && declaracao.expressao) {
39335
+ const expressao = declaracao.expressao;
39336
+ // DefinirValor: isto.campo = valor
39337
+ if (expressao.constructor.name === 'DefinirValor') {
39338
+ if (expressao.objeto && expressao.objeto.constructor.name === 'Isto') {
39339
+ const campo = this.converterIdentificador(expressao.nome.lexema);
39340
+ const valor = await expressao.valor.aceitar(this);
39341
+ inicializacoes.push(`${campo}: ${valor}`);
39342
+ }
39343
+ }
39344
+ // Atribuir: pode ser isto.campo = valor (se alvo é AcessoPropriedade)
39345
+ if (expressao.constructor.name === 'Atribuir') {
39346
+ if (expressao.alvo && expressao.alvo.constructor.name === 'AcessoPropriedade') {
39347
+ const acesso = expressao.alvo;
39348
+ if (acesso.objeto && acesso.objeto.constructor.name === 'Isto') {
39349
+ const campo = this.converterIdentificador(acesso.nomePropriedade);
39350
+ const valor = await expressao.valor.aceitar(this);
39351
+ inicializacoes.push(`${campo}: ${valor}`);
39352
+ }
39353
+ }
39354
+ }
39355
+ }
39356
+ }
39357
+ return inicializacoes.length > 0 ? inicializacoes.join(', ') : '';
39358
+ }
39359
+ async visitarDeclaracaoComentario(declaracao) {
39360
+ const conteudo = Array.isArray(declaracao.conteudo)
39361
+ ? declaracao.conteudo.join('\n# ')
39362
+ : declaracao.conteudo;
39363
+ return Promise.resolve(`${this.adicionarIndentacao()}# ${conteudo}`);
39364
+ }
39365
+ async visitarDeclaracaoConst(declaracao) {
39366
+ // Em Elixir, constantes em módulos são atributos de módulo (@constante)
39367
+ // Fora de módulos, são apenas bindings normais (imutáveis por padrão)
39368
+ let resultado = this.adicionarIndentacao();
39369
+ if (this.moduloAtual) {
39370
+ // Dentro de módulo, usar atributo de módulo
39371
+ const nomeAtributo = this.converterIdentificador(declaracao.simbolo.lexema);
39372
+ resultado += `@${nomeAtributo} `;
39373
+ }
39374
+ else {
39375
+ // Fora de módulo, binding normal (mantem nome original em maiúsculas)
39376
+ resultado += declaracao.simbolo.lexema;
39377
+ resultado += ' = ';
39378
+ }
39379
+ if (declaracao.inicializador) {
39380
+ resultado += await declaracao.inicializador.aceitar(this);
39381
+ }
39382
+ else {
39383
+ resultado += 'nil';
39384
+ }
39385
+ return Promise.resolve(resultado);
39386
+ }
39387
+ visitarDeclaracaoConstMultiplo(declaracao) {
39388
+ throw new Error('Método não implementado: visitarDeclaracaoConstMultiplo');
39389
+ }
39390
+ async visitarDeclaracaoDeExpressao(declaracao) {
39391
+ const resultado = this.adicionarIndentacao() + (await declaracao.expressao.aceitar(this));
39392
+ return Promise.resolve(resultado);
39393
+ }
39394
+ async visitarDeclaracaoDefinicaoFuncao(declaracao) {
39395
+ const nomeFuncao = this.converterIdentificador(declaracao.simbolo.lexema);
39396
+ this.funcoesConhecidas.add(nomeFuncao);
39397
+ let resultado = this.adicionarIndentacao();
39398
+ resultado += `def ${nomeFuncao}(`;
39399
+ // Parâmetros
39400
+ const parametros = declaracao.funcao.parametros.map(p => this.converterIdentificador(p.nome.lexema));
39401
+ resultado += parametros.join(', ');
39402
+ resultado += ') do\n';
39403
+ // Corpo
39404
+ this.aumentarIndentacao();
39405
+ for (const declaracaoCorpo of declaracao.funcao.corpo) {
39406
+ const traducao = await declaracaoCorpo.aceitar(this);
39407
+ if (traducao) {
39408
+ resultado += traducao + '\n';
39409
+ }
39410
+ }
39411
+ this.diminuirIndentacao();
39412
+ resultado += this.adicionarIndentacao() + 'end';
39413
+ return Promise.resolve(resultado);
39414
+ }
39415
+ async visitarDeclaracaoEnquanto(declaracao) {
39416
+ // Enquanto em Elixir vira função recursiva
39417
+ // Padrão: (fn -> loop = fn when cond -> corpo; loop.() end; loop = fn -> :ok end; loop.() end).()
39418
+ let resultado = this.adicionarIndentacao();
39419
+ resultado += '(fn ->\n';
39420
+ this.aumentarIndentacao();
39421
+ // Função recursiva com guard
39422
+ resultado += this.adicionarIndentacao();
39423
+ resultado += 'loop = fn when ';
39424
+ resultado += await declaracao.condicao.aceitar(this);
39425
+ resultado += ' ->\n';
39426
+ this.aumentarIndentacao();
39427
+ const traducaoCorpo = await declaracao.corpo.aceitar(this);
39428
+ resultado += traducaoCorpo;
39429
+ // Chamada recursiva
39430
+ resultado += this.adicionarIndentacao() + 'loop.()\n';
39431
+ this.diminuirIndentacao();
39432
+ resultado += this.adicionarIndentacao() + 'end\n';
39433
+ // Caso base
39434
+ resultado += this.adicionarIndentacao() + 'loop = fn -> :ok end\n';
39435
+ resultado += this.adicionarIndentacao() + 'loop.()\n';
39436
+ this.diminuirIndentacao();
39437
+ resultado += this.adicionarIndentacao() + 'end).()';
39438
+ return Promise.resolve(resultado);
39439
+ }
39440
+ async visitarDeclaracaoEscolha(declaracao) {
39441
+ let resultado = this.adicionarIndentacao();
39442
+ resultado += 'case ';
39443
+ resultado += await declaracao.identificadorOuLiteral.aceitar(this);
39444
+ resultado += ' do\n';
39445
+ this.aumentarIndentacao();
39446
+ // Processar cada caminho
39447
+ for (const caminho of declaracao.caminhos) {
39448
+ for (const condicao of caminho.condicoes) {
39449
+ resultado += this.adicionarIndentacao();
39450
+ resultado += await condicao.aceitar(this);
39451
+ resultado += ' ->\n';
39452
+ }
39453
+ this.aumentarIndentacao();
39454
+ for (const decl of caminho.declaracoes) {
39455
+ resultado += await decl.aceitar(this);
39456
+ resultado += '\n';
39457
+ }
39458
+ this.diminuirIndentacao();
39459
+ }
39460
+ // Caminho padrão
39461
+ if (declaracao.caminhoPadrao && declaracao.caminhoPadrao.declaracoes.length > 0) {
39462
+ resultado += this.adicionarIndentacao() + '_ ->\n';
39463
+ this.aumentarIndentacao();
39464
+ for (const decl of declaracao.caminhoPadrao.declaracoes) {
39465
+ resultado += await decl.aceitar(this);
39466
+ resultado += '\n';
39467
+ }
39468
+ this.diminuirIndentacao();
39469
+ }
39470
+ this.diminuirIndentacao();
39471
+ resultado += this.adicionarIndentacao() + 'end';
39472
+ return Promise.resolve(resultado);
39473
+ }
39474
+ async visitarDeclaracaoEscreva(declaracao) {
39475
+ let resultado = this.adicionarIndentacao();
39476
+ resultado += 'IO.puts(';
39477
+ if (declaracao.argumentos.length === 0) {
39478
+ resultado += '""';
39479
+ }
39480
+ else if (declaracao.argumentos.length === 1) {
39481
+ resultado += await declaracao.argumentos[0].aceitar(this);
39482
+ }
39483
+ else {
39484
+ // Múltiplos argumentos - concatenar
39485
+ const argumentos = [];
39486
+ for (const arg of declaracao.argumentos) {
39487
+ argumentos.push(await arg.aceitar(this));
39488
+ }
39489
+ resultado += argumentos.join(' <> ');
39490
+ }
39491
+ resultado += ')';
39492
+ return Promise.resolve(resultado);
39493
+ }
39494
+ visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
39495
+ throw new Error('Método não implementado: visitarDeclaracaoEscrevaMesmaLinha');
39496
+ }
39497
+ async visitarDeclaracaoFazer(declaracao) {
39498
+ // Fazer...enquanto é similar a enquanto, mas executa o corpo pelo menos uma vez
39499
+ let resultado = this.adicionarIndentacao();
39500
+ resultado += '(fn ->\n';
39501
+ this.aumentarIndentacao();
39502
+ resultado += this.adicionarIndentacao();
39503
+ resultado += 'loop = fn ->\n';
39504
+ this.aumentarIndentacao();
39505
+ // Corpo
39506
+ const traducaoCorpo = await declaracao.caminhoFazer.aceitar(this);
39507
+ resultado += traducaoCorpo;
39508
+ // Verificar condição e decidir se continua
39509
+ resultado += this.adicionarIndentacao() + 'if ';
39510
+ resultado += await declaracao.condicaoEnquanto.aceitar(this);
39511
+ resultado += ' do\n';
39512
+ this.aumentarIndentacao();
39513
+ resultado += this.adicionarIndentacao() + 'loop.()\n';
39514
+ this.diminuirIndentacao();
39515
+ resultado += this.adicionarIndentacao() + 'else\n';
39516
+ this.aumentarIndentacao();
39517
+ resultado += this.adicionarIndentacao() + ':ok\n';
39518
+ this.diminuirIndentacao();
39519
+ resultado += this.adicionarIndentacao() + 'end\n';
39520
+ this.diminuirIndentacao();
39521
+ resultado += this.adicionarIndentacao() + 'end\n';
39522
+ resultado += this.adicionarIndentacao() + 'loop.()\n';
39523
+ this.diminuirIndentacao();
39524
+ resultado += this.adicionarIndentacao() + 'end).()';
39525
+ return Promise.resolve(resultado);
39526
+ }
39527
+ visitarDeclaracaoInicioAlgoritmo(declaracao) {
39528
+ // Elixir não tem conceito de início de algoritmo
39529
+ return Promise.resolve('');
39530
+ }
39531
+ async visitarDeclaracaoPara(declaracao) {
39532
+ // Para loop vira função recursiva com inicializador, condição e incremento
39533
+ let resultado = this.adicionarIndentacao();
39534
+ resultado += '(fn ->\n';
39535
+ this.aumentarIndentacao();
39536
+ // Extrair variável e valor inicial
39537
+ let nomeVar = '';
39538
+ let valorInicial = '';
39539
+ if (declaracao.inicializador) {
39540
+ const init = Array.isArray(declaracao.inicializador)
39541
+ ? declaracao.inicializador[0]
39542
+ : declaracao.inicializador;
39543
+ if (init.constructor.name === 'Var') {
39544
+ nomeVar = this.converterIdentificador(init.simbolo.lexema);
39545
+ if (init.inicializador) {
39546
+ valorInicial = await init.inicializador.aceitar(this);
39547
+ }
39548
+ else {
39549
+ valorInicial = '0';
39550
+ }
39551
+ }
39552
+ }
39553
+ // Função recursiva com parâmetro e guard
39554
+ resultado += this.adicionarIndentacao();
39555
+ resultado += `loop = fn ${nomeVar} when `;
39556
+ resultado += await declaracao.condicao.aceitar(this);
39557
+ resultado += ' ->\n';
39558
+ this.aumentarIndentacao();
39559
+ const traducaoCorpo = await declaracao.corpo.aceitar(this);
39560
+ resultado += traducaoCorpo;
39561
+ // Incremento e chamada recursiva
39562
+ const incremento = await declaracao.incrementar.aceitar(this);
39563
+ resultado += this.adicionarIndentacao() + `loop.(${incremento})\n`;
39564
+ this.diminuirIndentacao();
39565
+ resultado += this.adicionarIndentacao() + 'end\n';
39566
+ // Caso base
39567
+ resultado += this.adicionarIndentacao() + `loop = fn _ -> :ok end\n`;
39568
+ resultado += this.adicionarIndentacao() + `loop.(${valorInicial})\n`;
39569
+ this.diminuirIndentacao();
39570
+ resultado += this.adicionarIndentacao() + 'end).()';
39571
+ return Promise.resolve(resultado);
39572
+ }
39573
+ async visitarDeclaracaoParaCada(declaracao) {
39574
+ let resultado = this.adicionarIndentacao();
39575
+ resultado += 'Enum.each(';
39576
+ resultado += await declaracao.vetorOuDicionario.aceitar(this);
39577
+ resultado += ', fn ';
39578
+ resultado += await declaracao.variavelIteracao.aceitar(this);
39579
+ resultado += ' ->\n';
39580
+ this.aumentarIndentacao();
39581
+ const traducaoCorpo = await declaracao.corpo.aceitar(this);
39582
+ resultado += traducaoCorpo;
39583
+ this.diminuirIndentacao();
39584
+ resultado += this.adicionarIndentacao() + 'end)';
39585
+ return Promise.resolve(resultado);
39586
+ }
39587
+ async visitarDeclaracaoSe(declaracao) {
39588
+ let resultado = this.adicionarIndentacao();
39589
+ resultado += 'if ';
39590
+ resultado += await declaracao.condicao.aceitar(this);
39591
+ resultado += ' do\n';
39592
+ this.aumentarIndentacao();
39593
+ const traducaoEntao = await declaracao.caminhoEntao.aceitar(this);
39594
+ resultado += traducaoEntao;
39595
+ this.diminuirIndentacao();
39596
+ if (declaracao.caminhoSenao) {
39597
+ resultado += this.adicionarIndentacao() + 'else\n';
39598
+ this.aumentarIndentacao();
39599
+ const traducaoSenao = await declaracao.caminhoSenao.aceitar(this);
39600
+ resultado += traducaoSenao;
39601
+ this.diminuirIndentacao();
39602
+ }
39603
+ resultado += this.adicionarIndentacao() + 'end';
39604
+ return Promise.resolve(resultado);
39605
+ }
39606
+ async visitarDeclaracaoTendoComo(declaracao) {
39607
+ throw new Error('Método não implementado: visitarDeclaracaoTendoComo');
39608
+ }
39609
+ visitarDeclaracaoTente(declaracao) {
39610
+ throw new Error('Método não implementado: visitarDeclaracaoTente');
39611
+ }
39612
+ visitarDeclaracaoTextoDocumentacao(declaracao) {
39613
+ throw new Error('Método não implementado: visitarDeclaracaoTextoDocumentacao');
39614
+ }
39615
+ async visitarDeclaracaoVar(declaracao) {
39616
+ let resultado = this.adicionarIndentacao();
39617
+ resultado += this.converterIdentificador(declaracao.simbolo.lexema);
39618
+ resultado += ' = ';
39619
+ if (declaracao.inicializador) {
39620
+ resultado += await declaracao.inicializador.aceitar(this);
39621
+ }
39622
+ else {
39623
+ resultado += 'nil';
39624
+ }
39625
+ return Promise.resolve(resultado);
39626
+ }
39627
+ visitarDeclaracaoVarMultiplo(declaracao) {
39628
+ throw new Error('Método não implementado: visitarDeclaracaoVarMultiplo');
39629
+ }
39630
+ // ========== EXPRESSÕES ==========
39631
+ async visitarExpressaoDeAtribuicao(expressao) {
39632
+ const alvo = await expressao.alvo.aceitar(this);
39633
+ const valor = await expressao.valor.aceitar(this);
39634
+ return Promise.resolve(`${alvo} = ${valor}`);
39635
+ }
39636
+ async visitarExpressaoAcessoIndiceVariavel(expressao) {
39637
+ const objeto = await expressao.entidadeChamada.aceitar(this);
39638
+ const indice = await expressao.indice.aceitar(this);
39639
+ // Em Elixir, acesso por índice usa Enum.at/2
39640
+ return Promise.resolve(`Enum.at(${objeto}, ${indice})`);
39641
+ }
39642
+ visitarExpressaoAcessoIntervaloVariavel(expressao) {
39643
+ throw new Error('Método não implementado: visitarExpressaoAcessoIntervaloVariavel');
39644
+ }
39645
+ visitarExpressaoAcessoElementoMatriz(expressao) {
39646
+ throw new Error('Método não implementado: visitarExpressaoAcessoElementoMatriz');
39647
+ }
39648
+ async visitarExpressaoAcessoMetodo(expressao) {
39649
+ const objeto = await expressao.objeto.aceitar(this);
39650
+ const metodo = this.converterIdentificador(expressao.nomeMetodo);
39651
+ // AcessoMetodo é apenas a referência ao método, não a chamada
39652
+ // A chamada é feita por visitarExpressaoDeChamada
39653
+ return Promise.resolve(`${objeto}.${metodo}`);
39654
+ }
39655
+ /**
39656
+ * Mapeia métodos built-in de Delégua para Elixir
39657
+ */
39658
+ mapearMetodoBuiltIn(metodo, objeto, argumentos) {
39659
+ switch (metodo) {
39660
+ // Array/List methods
39661
+ case 'adicionar':
39662
+ case 'empilhar':
39663
+ return argumentos.length > 0 ? `[${argumentos[0]} | ${objeto}]` : `${objeto}`;
39664
+ case 'tamanho':
39665
+ return `length(${objeto})`;
39666
+ case 'inclui':
39667
+ return argumentos.length > 0 ? `Enum.member?(${objeto}, ${argumentos[0]})` : null;
39668
+ case 'inverter':
39669
+ return `Enum.reverse(${objeto})`;
39670
+ case 'mapear':
39671
+ return argumentos.length > 0 ? `Enum.map(${objeto}, ${argumentos[0]})` : null;
39672
+ case 'filtrar':
39673
+ return argumentos.length > 0 ? `Enum.filter(${objeto}, ${argumentos[0]})` : null;
39674
+ case 'ordenar':
39675
+ return `Enum.sort(${objeto})`;
39676
+ case 'juntar':
39677
+ return argumentos.length > 0 ? `Enum.join(${objeto}, ${argumentos[0]})` : `Enum.join(${objeto})`;
39678
+ case 'fatiar':
39679
+ if (argumentos.length >= 2) {
39680
+ return `Enum.slice(${objeto}, ${argumentos[0]}, ${argumentos[1]})`;
39681
+ }
39682
+ return null;
39683
+ case 'remover':
39684
+ return argumentos.length > 0 ? `List.delete(${objeto}, ${argumentos[0]})` : null;
39685
+ case 'somar':
39686
+ return `Enum.sum(${objeto})`;
39687
+ // String methods
39688
+ case 'maiusculo':
39689
+ return `String.upcase(${objeto})`;
39690
+ case 'minusculo':
39691
+ return `String.downcase(${objeto})`;
39692
+ case 'dividir':
39693
+ return argumentos.length > 0 ? `String.split(${objeto}, ${argumentos[0]})` : null;
39694
+ case 'substituir':
39695
+ if (argumentos.length >= 2) {
39696
+ return `String.replace(${objeto}, ${argumentos[0]}, ${argumentos[1]})`;
39697
+ }
39698
+ return null;
39699
+ case 'aparar':
39700
+ return `String.trim(${objeto})`;
39701
+ default:
39702
+ return null;
39703
+ }
39704
+ }
39705
+ /**
39706
+ * Tenta extrair o nome do módulo de uma expressão de objeto
39707
+ */
39708
+ obterNomeModulo(objetoStr) {
39709
+ // Se o objeto é uma variável simples, assumir que o módulo tem o mesmo nome em PascalCase
39710
+ // Isso é uma heurística; em casos reais, precisaríamos de análise semântica
39711
+ const match = objetoStr.match(/^([a-z_][a-z0-9_]*)$/);
39712
+ if (match) {
39713
+ return this.converterNomeModulo(match[1]);
39714
+ }
39715
+ return objetoStr;
39716
+ }
39717
+ async visitarExpressaoAcessoMetodoOuPropriedade(expressao) {
39718
+ const objeto = await expressao.objeto.aceitar(this);
39719
+ const simbolo = this.converterIdentificador(expressao.simbolo.lexema);
39720
+ // AcessoMetodoOuPropriedade é apenas a referência, não a chamada
39721
+ // A chamada com argumentos é feita por visitarExpressaoDeChamada
39722
+ return Promise.resolve(`${objeto}.${simbolo}`);
39723
+ }
39724
+ async visitarExpressaoAcessoPropriedade(expressao) {
39725
+ const objeto = await expressao.objeto.aceitar(this);
39726
+ const propriedade = this.converterIdentificador(expressao.nomePropriedade);
39727
+ return Promise.resolve(`${objeto}.${propriedade}`);
39728
+ }
39729
+ async visitarExpressaoAgrupamento(expressao) {
39730
+ const conteudo = await expressao.expressao.aceitar(this);
39731
+ return Promise.resolve(`(${conteudo})`);
39732
+ }
39733
+ visitarExpressaoArgumentoReferenciaFuncao(expressao) {
39734
+ throw new Error('Método não implementado: visitarExpressaoArgumentoReferenciaFuncao');
39735
+ }
39736
+ visitarExpressaoAtribuicaoPorIndice(expressao) {
39737
+ throw new Error('Método não implementado: visitarExpressaoAtribuicaoPorIndice');
39738
+ }
39739
+ visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
39740
+ throw new Error('Método não implementado: visitarExpressaoAtribuicaoPorIndicesMatriz');
39741
+ }
39742
+ async visitarExpressaoBinaria(expressao) {
39743
+ const esquerda = await expressao.esquerda.aceitar(this);
39744
+ const direita = await expressao.direita.aceitar(this);
39745
+ const operador = this.traduzirOperador(expressao.operador);
39746
+ return Promise.resolve(`${esquerda} ${operador} ${direita}`);
39747
+ }
39748
+ async visitarExpressaoBloco(declaracao) {
39749
+ let resultado = '';
39750
+ for (const decl of declaracao.declaracoes) {
39751
+ const traducao = await decl.aceitar(this);
39752
+ if (traducao) {
39753
+ resultado += traducao + '\n';
39754
+ }
39755
+ }
39756
+ return Promise.resolve(resultado);
39757
+ }
39758
+ visitarExpressaoComentario(expressao) {
39759
+ throw new Error('Método não implementado: visitarExpressaoComentario');
39760
+ }
39761
+ visitarExpressaoContinua(declaracao) {
39762
+ throw new Error('Método não implementado: visitarExpressaoContinua');
39763
+ }
39764
+ async visitarExpressaoDeChamada(expressao) {
39765
+ // Processar argumentos
39766
+ const argumentos = [];
39767
+ for (const arg of expressao.argumentos) {
39768
+ const argTraduzido = await arg.aceitar(this);
39769
+ if (argTraduzido && argTraduzido.trim() !== '') {
39770
+ argumentos.push(argTraduzido);
39771
+ }
39772
+ }
39773
+ // Verificar se é instanciação de módulo (classe)
39774
+ if (expressao.entidadeChamada.constructor.name === 'Variavel') {
39775
+ const nomeEntidade = expressao.entidadeChamada.simbolo.lexema;
39776
+ if (this.modulosConhecidos.has(this.converterNomeModulo(nomeEntidade))) {
39777
+ // Chamada de construtor de módulo
39778
+ return Promise.resolve(`${this.converterNomeModulo(nomeEntidade)}.new(${argumentos.join(', ')})`);
39779
+ }
39780
+ }
39781
+ // Verificar se é chamada de método (AcessoMetodo ou AcessoMetodoOuPropriedade)
39782
+ if (expressao.entidadeChamada.constructor.name === 'AcessoMetodo') {
39783
+ const acessoMetodo = expressao.entidadeChamada;
39784
+ const objeto = await acessoMetodo.objeto.aceitar(this);
39785
+ const metodo = this.converterIdentificador(acessoMetodo.nomeMetodo);
39786
+ // Mapear métodos built-in
39787
+ const metodoMapeado = this.mapearMetodoBuiltIn(metodo, objeto, argumentos);
39788
+ if (metodoMapeado) {
39789
+ return Promise.resolve(metodoMapeado);
39790
+ }
39791
+ // Método de módulo/struct - passar o struct como primeiro argumento
39792
+ return Promise.resolve(`${this.obterNomeModulo(objeto)}.${metodo}(${objeto}${argumentos.length > 0 ? ', ' + argumentos.join(', ') : ''})`);
39793
+ }
39794
+ if (expressao.entidadeChamada.constructor.name === 'AcessoMetodoOuPropriedade') {
39795
+ const acesso = expressao.entidadeChamada;
39796
+ const objeto = await acesso.objeto.aceitar(this);
39797
+ const simbolo = this.converterIdentificador(acesso.simbolo.lexema);
39798
+ // Mapear métodos built-in
39799
+ const metodoMapeado = this.mapearMetodoBuiltIn(simbolo, objeto, argumentos);
39800
+ if (metodoMapeado) {
39801
+ return Promise.resolve(metodoMapeado);
39802
+ }
39803
+ // Método de módulo/struct
39804
+ return Promise.resolve(`${this.obterNomeModulo(objeto)}.${simbolo}(${objeto}${argumentos.length > 0 ? ', ' + argumentos.join(', ') : ''})`);
39805
+ }
39806
+ // Chamada normal de função
39807
+ const entidadeChamada = await expressao.entidadeChamada.aceitar(this);
39808
+ return Promise.resolve(`${entidadeChamada}(${argumentos.join(', ')})`);
39809
+ }
39810
+ visitarExpressaoDefinirValor(expressao) {
39811
+ throw new Error('Método não implementado: visitarExpressaoDefinirValor');
39812
+ }
39813
+ async visitarExpressaoFuncaoConstruto(expressao) {
39814
+ let resultado = 'fn ';
39815
+ // Parâmetros
39816
+ const parametros = expressao.parametros.map(p => this.converterIdentificador(p.nome.lexema));
39817
+ resultado += parametros.join(', ');
39818
+ resultado += ' ->';
39819
+ // Corpo - se for uma única expressão, inline; se for bloco, multi-linha
39820
+ if (expressao.corpo.length === 1) {
39821
+ resultado += ' ';
39822
+ const traducao = await expressao.corpo[0].aceitar(this);
39823
+ resultado += traducao;
39824
+ }
39825
+ else {
39826
+ resultado += '\n';
39827
+ this.aumentarIndentacao();
39828
+ for (const decl of expressao.corpo) {
39829
+ const traducao = await decl.aceitar(this);
39830
+ if (traducao) {
39831
+ resultado += traducao + '\n';
39832
+ }
39833
+ }
39834
+ this.diminuirIndentacao();
39835
+ resultado += this.adicionarIndentacao();
39836
+ }
39837
+ resultado += ' end';
39838
+ return Promise.resolve(resultado);
39839
+ }
39840
+ async visitarExpressaoDeVariavel(expressao) {
39841
+ return Promise.resolve(this.converterIdentificador(expressao.simbolo.lexema));
39842
+ }
39843
+ async visitarExpressaoDicionario(expressao) {
39844
+ if (expressao.chaves.length === 0) {
39845
+ return Promise.resolve('%{}');
39846
+ }
39847
+ const pares = [];
39848
+ for (let i = 0; i < expressao.chaves.length; i++) {
39849
+ const chave = await expressao.chaves[i].aceitar(this);
39850
+ const valor = await expressao.valores[i].aceitar(this);
39851
+ // Ignorar pares vazios (separadores)
39852
+ if (chave && chave.trim() !== '' && valor && valor.trim() !== '') {
39853
+ // Em Elixir, usa-se atoms (:chave) quando possível ou string => valor
39854
+ // Por simplicidade, vamos usar sempre a sintaxe de string
39855
+ pares.push(`${chave} => ${valor}`);
39856
+ }
39857
+ }
39858
+ return Promise.resolve(`%{${pares.join(', ')}}`);
39859
+ }
39860
+ visitarExpressaoExpressaoRegular(expressao) {
39861
+ throw new Error('Método não implementado: visitarExpressaoExpressaoRegular');
39862
+ }
39863
+ visitarExpressaoFalhar(expressao) {
39864
+ throw new Error('Método não implementado: visitarExpressaoFalhar');
39865
+ }
39866
+ visitarExpressaoFimPara(declaracao) {
39867
+ throw new Error('Método não implementado: visitarExpressaoFimPara');
39868
+ }
39869
+ visitarExpressaoFormatacaoEscrita(declaracao) {
39870
+ throw new Error('Método não implementado: visitarExpressaoFormatacaoEscrita');
39871
+ }
39872
+ async visitarExpressaoIsto(expressao) {
39873
+ // "isto" em Elixir é substituído pelo nome do parâmetro do struct
39874
+ if (this.nomeParametroStruct) {
39875
+ return Promise.resolve(this.nomeParametroStruct);
39876
+ }
39877
+ // Se não estamos em contexto de método, usar nome genérico
39878
+ return Promise.resolve('self');
39879
+ }
39880
+ async visitarExpressaoLeia(expressao) {
39881
+ let resultado = 'IO.gets(';
39882
+ if (expressao.argumentos && expressao.argumentos.length > 0) {
39883
+ resultado += await expressao.argumentos[0].aceitar(this);
39884
+ }
39885
+ else {
39886
+ resultado += '""';
39887
+ }
39888
+ resultado += ') |> String.trim()';
39889
+ return Promise.resolve(resultado);
39890
+ }
39891
+ async visitarExpressaoLiteral(expressao) {
39892
+ const valor = expressao.valor;
39893
+ // Null/nulo
39894
+ if (valor === null || valor === undefined) {
39895
+ return Promise.resolve('nil');
39896
+ }
39897
+ // Boolean
39898
+ if (typeof valor === 'boolean') {
39899
+ return Promise.resolve(valor ? 'true' : 'false');
39900
+ }
39901
+ // Number
39902
+ if (typeof valor === 'number') {
39903
+ return Promise.resolve(String(valor));
39904
+ }
39905
+ // String
39906
+ if (typeof valor === 'string') {
39907
+ // Elixir suporta interpolação com #{}
39908
+ return Promise.resolve(`"${valor}"`);
39909
+ }
39910
+ return Promise.resolve(String(valor));
39911
+ }
39912
+ async visitarExpressaoLogica(expressao) {
39913
+ const esquerda = await expressao.esquerda.aceitar(this);
39914
+ const direita = await expressao.direita.aceitar(this);
39915
+ const operador = this.traduzirOperador(expressao.operador);
39916
+ return Promise.resolve(`${esquerda} ${operador} ${direita}`);
39917
+ }
39918
+ visitarExpressaoReferenciaFuncao(expressao) {
39919
+ throw new Error('Método não implementado: visitarExpressaoReferenciaFuncao');
39920
+ }
39921
+ async visitarExpressaoRetornar(expressao) {
39922
+ // Em Elixir, o retorno é implícito (última expressão)
39923
+ // Mas podemos usar explicitamente para clareza ou retorno antecipado
39924
+ let resultado = this.adicionarIndentacao();
39925
+ if (expressao.valor) {
39926
+ // Apenas retornar o valor, pois em Elixir a última expressão é o retorno
39927
+ resultado += await expressao.valor.aceitar(this);
39928
+ }
39929
+ else {
39930
+ resultado += 'nil';
39931
+ }
39932
+ return Promise.resolve(resultado);
39933
+ }
39934
+ visitarExpressaoSeparador(expressao) {
39935
+ return Promise.resolve('');
39936
+ }
39937
+ visitarExpressaoSuper(expressao) {
39938
+ throw new Error('Método não implementado: visitarExpressaoSuper');
39939
+ }
39940
+ visitarExpressaoSustar(declaracao) {
39941
+ throw new Error('Método não implementado: visitarExpressaoSustar');
39942
+ }
39943
+ async visitarExpressaoTupla(expressao) {
39944
+ // Tupla pode ter apenas um valor (expressao.valor) ou ser TuplaN com elementos
39945
+ // Por enquanto, apenas retornar o valor se houver
39946
+ if (expressao.valor !== undefined) {
39947
+ return Promise.resolve(`{${expressao.valor}}`);
39948
+ }
39949
+ // Se não houver valor, tupla vazia
39950
+ return Promise.resolve('{}');
39951
+ }
39952
+ async visitarExpressaoTuplaN(expressao) {
39953
+ const valores = [];
39954
+ for (const elemento of expressao.elementos) {
39955
+ const valorTraduzido = await elemento.aceitar(this);
39956
+ valores.push(valorTraduzido);
39957
+ }
39958
+ return Promise.resolve(`{${valores.join(', ')}}`);
39959
+ }
39960
+ visitarExpressaoTipoDe(expressao) {
39961
+ throw new Error('Método não implementado: visitarExpressaoTipoDe');
39962
+ }
39963
+ async visitarExpressaoUnaria(expressao) {
39964
+ const operando = await expressao.operando.aceitar(this);
39965
+ const operador = this.traduzirOperador(expressao.operador);
39966
+ // Elixir não tem ++ ou --, então operações de incremento/decremento precisam ser convertidas
39967
+ if (expressao.operador.tipo === delegua_1.default.INCREMENTAR) {
39968
+ return Promise.resolve(`${operando} + 1`);
39969
+ }
39970
+ if (expressao.operador.tipo === delegua_1.default.DECREMENTAR) {
39971
+ return Promise.resolve(`${operando} - 1`);
39972
+ }
39973
+ // Operações unárias normais (-, !, ~)
39974
+ if (expressao.incidenciaOperador === 'ANTES') {
39975
+ return Promise.resolve(`${operador} ${operando}`);
39976
+ }
39977
+ else {
39978
+ return Promise.resolve(`${operando} ${operador}`);
39979
+ }
39980
+ }
39981
+ async visitarExpressaoVetor(expressao) {
39982
+ if (expressao.valores.length === 0) {
39983
+ return Promise.resolve('[]');
39984
+ }
39985
+ const valores = [];
39986
+ for (const valor of expressao.valores) {
39987
+ const valorTraduzido = await valor.aceitar(this);
39988
+ // Ignorar separadores vazios
39989
+ if (valorTraduzido && valorTraduzido.trim() !== '') {
39990
+ valores.push(valorTraduzido);
39991
+ }
39992
+ }
39993
+ return Promise.resolve(`[${valores.join(', ')}]`);
39994
+ }
39995
+ }
39996
+ exports.TradutorElixir = TradutorElixir;
39997
+
39998
+ },{"../tipos-de-simbolos/delegua":212}],234:[function(require,module,exports){
39999
+ "use strict";
40000
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40001
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40002
+ };
40003
+ Object.defineProperty(exports, "__esModule", { value: true });
39088
40004
  exports.TradutorJavaScript = void 0;
39089
40005
  const construtos_1 = require("../construtos");
39090
40006
  const declaracoes_1 = require("../declaracoes");
@@ -39839,15 +40755,16 @@ class TradutorJavaScript {
39839
40755
  }
39840
40756
  exports.TradutorJavaScript = TradutorJavaScript;
39841
40757
 
39842
- },{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212}],234:[function(require,module,exports){
40758
+ },{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212}],235:[function(require,module,exports){
39843
40759
  "use strict";
39844
40760
  var __importDefault = (this && this.__importDefault) || function (mod) {
39845
40761
  return (mod && mod.__esModule) ? mod : { "default": mod };
39846
40762
  };
39847
40763
  Object.defineProperty(exports, "__esModule", { value: true });
39848
40764
  exports.TradutorMermaidJs = void 0;
39849
- const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
40765
+ const construtos_1 = require("../construtos");
39850
40766
  const mermaid_1 = require("./mermaid");
40767
+ const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
39851
40768
  /**
39852
40769
  * [MermaidJs](https://mermaid.js.org/) é uma especificação que nos permite
39853
40770
  * criar fluxogramas através de uma notação por texto.
@@ -39861,249 +40778,28 @@ const mermaid_1 = require("./mermaid");
39861
40778
  * @see VerticeFluxograma
39862
40779
  */
39863
40780
  class TradutorMermaidJs {
39864
- constructor() {
39865
- this.dicionarioConstrutos = {
39866
- AcessoIndiceVariavel: this.traduzirConstrutoAcessoIndiceVariavel.bind(this),
39867
- AcessoMetodo: this.traduzirConstrutoAcessoMetodo.bind(this),
39868
- AcessoMetodoOuPropriedade: this.traduzirConstrutoAcessoMetodoOuPropriedade.bind(this),
39869
- AcessoPropriedade: this.traduzirConstrutoAcessoPropriedade.bind(this),
39870
- Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
39871
- Atribuir: this.traduzirConstrutoAtribuir.bind(this),
39872
- Binario: this.traduzirConstrutoBinario.bind(this),
39873
- Chamada: this.traduzirConstrutoChamada.bind(this),
39874
- ComentarioComoConstruto: () => '',
39875
- DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
39876
- Dicionario: this.traduzirConstrutoDicionario.bind(this),
39877
- // FuncaoConstruto: this.traduzirFuncaoConstruto.bind(this),
39878
- FuncaoConstruto: () => { throw new Error("Fluxogramas de funções ainda não é suportado."); },
39879
- Isto: () => 'this',
39880
- Leia: this.traduzirConstrutoLeia.bind(this),
39881
- Literal: this.traduzirConstrutoLiteral.bind(this),
39882
- Separador: this.traduzirConstrutoSeparador.bind(this),
39883
- Unario: this.traduzirConstrutoUnario.bind(this),
39884
- Variavel: this.traduzirConstrutoVariavel.bind(this),
39885
- Vetor: this.traduzirConstrutoVetor.bind(this),
39886
- };
39887
- this.dicionarioDeclaracoes = {
39888
- Bloco: this.traduzirDeclaracaoBloco.bind(this),
39889
- Classe: this.traduzirDeclaracaoClasse.bind(this),
39890
- Comentario: () => '',
39891
- Const: this.traduzirDeclaracaoConst.bind(this),
39892
- Enquanto: this.traduzirDeclaracaoEnquanto.bind(this),
39893
- Escolha: this.traduzirDeclaracaoEscolha.bind(this),
39894
- Expressao: this.traduzirDeclaracaoExpressao.bind(this),
39895
- Escreva: this.traduzirDeclaracaoEscreva.bind(this),
39896
- Fazer: this.traduzirDeclaracaoFazerEnquanto.bind(this),
39897
- FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
39898
- Para: this.traduzirDeclaracaoPara.bind(this),
39899
- ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
39900
- Retorna: this.traduzirDeclaracaoRetorna.bind(this),
39901
- Se: this.traduzirDeclaracaoSe.bind(this),
39902
- Var: this.traduzirDeclaracaoVar.bind(this),
39903
- };
39904
- }
39905
- traduzirConstrutoAcessoIndiceVariavel(acessoIndiceVariavel) {
39906
- const textoIndice = this.dicionarioConstrutos[acessoIndiceVariavel.indice.constructor.name](acessoIndiceVariavel.indice);
39907
- return `no índice ${textoIndice}`;
39908
- }
39909
- traduzirConstrutoAcessoMetodo(acessoMetodo) {
39910
- return `método ${acessoMetodo.nomeMetodo}`;
39911
- }
39912
- traduzirConstrutoAcessoMetodoOuPropriedade(acessoMetodoOuPropriedade) {
39913
- return `método ou propriedade ${acessoMetodoOuPropriedade.simbolo.lexema}`;
39914
- }
39915
- traduzirConstrutoAcessoPropriedade(acessoPropriedade) {
39916
- return `propriedade ${acessoPropriedade.nomePropriedade}`;
39917
- }
39918
- traduzirConstrutoAgrupamento(agrupamento) {
39919
- return this.dicionarioConstrutos[agrupamento.expressao.constructor.name](agrupamento.expressao);
39920
- }
39921
- traduzirConstrutoAtribuir(atribuir) {
39922
- const textoAlvo = this.dicionarioConstrutos[atribuir.alvo.constructor.name](atribuir.alvo);
39923
- const textoValor = this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
39924
- return `${textoAlvo} recebe: ${textoValor}`;
39925
- }
39926
- traduzirConstrutoBinario(binario) {
39927
- const operandoEsquerdo = this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
39928
- const operandoDireito = this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
39929
- switch (binario.operador.tipo) {
39930
- case delegua_1.default.ADICAO:
39931
- return `somar ${operandoEsquerdo} e ${operandoDireito}`;
39932
- case delegua_1.default.MENOR:
39933
- return `${operandoEsquerdo} for menor que ${operandoDireito}`;
39934
- }
39935
- return '';
39936
- }
39937
- traduzirConstrutoChamada(chamada) {
39938
- const textoEntidadeChamada = this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada);
39939
- let texto = `chamada a ${textoEntidadeChamada}`;
39940
- if (chamada.argumentos.length > 0) {
39941
- texto += `, com argumentos: `;
39942
- for (const argumento of chamada.argumentos) {
39943
- const textoArgumento = this.dicionarioConstrutos[argumento.constructor.name](argumento);
39944
- texto += `${textoArgumento}, `;
39945
- }
39946
- texto = texto.slice(0, -2);
39947
- }
39948
- else {
39949
- texto += `, sem argumentos`;
39950
- }
39951
- return texto;
39952
- }
39953
- /**
39954
- * Traduz uma declaração de Expressao que contém uma chamada de função,
39955
- * criando os vértices necessários para conectar ao subgrafo da função.
39956
- */
39957
- traduzirChamadaFuncao(declaracaoExpressao, chamada) {
39958
- // Verifica se é uma chamada a uma função conhecida
39959
- if (chamada.entidadeChamada.constructor.name === 'Variavel') {
39960
- const variavel = chamada.entidadeChamada;
39961
- const nomeFuncao = variavel.simbolo.lexema;
39962
- if (this.declaracoesFuncoes[nomeFuncao]) {
39963
- const subgrafo = this.declaracoesFuncoes[nomeFuncao];
39964
- let vertices = [];
39965
- // Conecta do fluxo atual para a entrada da função
39966
- const textoPreChamada = `Linha${declaracaoExpressao.linha}(${this.traduzirConstrutoChamada(chamada)})`;
39967
- const arestaPreChamada = new mermaid_1.ArestaFluxograma(declaracaoExpressao, textoPreChamada);
39968
- vertices = vertices.concat(this.logicaComumConexaoArestas(arestaPreChamada));
39969
- // Conecta a pré-chamada ao início da função
39970
- vertices.push(new mermaid_1.VerticeFluxograma(arestaPreChamada, subgrafo.arestaInicial));
39971
- // A saída da função volta para o fluxo principal
39972
- this.anteriores = [subgrafo.arestaFinal];
39973
- return vertices;
39974
- }
39975
- }
39976
- // Se não for uma função conhecida, trata como expressão normal
39977
- return [];
39978
- }
39979
- traduzirConstrutoDefinirValor(definirValor) {
39980
- const textoObjeto = this.dicionarioConstrutos[definirValor.objeto.constructor.name](definirValor.objeto);
39981
- const textoValor = this.dicionarioConstrutos[definirValor.valor.constructor.name](definirValor.valor);
39982
- return `${definirValor.nome.lexema} em ${textoObjeto} recebe ${textoValor}`;
39983
- }
39984
- traduzirConstrutoDicionario(dicionario) {
39985
- let texto = `dicionário`;
39986
- if (dicionario.chaves.length > 0) {
39987
- texto += `, com `;
39988
- for (const [chave, indice] of Object.entries(dicionario.chaves)) {
39989
- texto += `chave ${chave} definida com o valor ${dicionario.valores[0]}`;
39990
- }
39991
- }
39992
- else {
39993
- texto += ' vazio';
39994
- }
39995
- return texto;
39996
- }
39997
- traduzirFuncaoConstruto(funcaoConstruto) {
39998
- let vertices = [];
39999
- let arestas = [];
40000
- if (funcaoConstruto.corpo && funcaoConstruto.corpo.length > 0) {
40001
- for (const declaracaoCorpo of funcaoConstruto.corpo) {
40002
- // Usa o mesmo caminho de outras declarações,
40003
- // então todas as arestas passam por logicaComumConexaoArestas.
40004
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoCorpo.constructor.name](declaracaoCorpo);
40005
- vertices = vertices.concat(verticesCorpo);
40006
- arestas = arestas.concat(this.anteriores);
40007
- this.anteriores = [];
40008
- }
40009
- }
40010
- let primeiraAresta = undefined;
40011
- if (this.anteriores.length > 0) {
40012
- primeiraAresta = this.anteriores[0];
40013
- const verticesRestantes = this.logicaComumConexaoArestas(primeiraAresta);
40014
- console.log(verticesRestantes);
40015
- }
40016
- return vertices;
40017
- }
40018
- traduzirConstrutoLeia(leia) {
40019
- let texto = 'leia da entrada';
40020
- if (leia.argumentos && leia.argumentos.length > 0) {
40021
- const textoArgumento = this.dicionarioConstrutos[leia.argumentos[0].constructor.name](leia.argumentos[0]);
40022
- texto += `, imprimindo antes: \\'${textoArgumento}\\'`;
40023
- }
40024
- return texto;
40025
- }
40026
- traduzirConstrutoLiteral(literal) {
40027
- switch (literal.tipo) {
40028
- case 'lógico':
40029
- return literal.valor ? 'verdadeiro' : 'falso';
40030
- case 'texto':
40031
- return `\\'${literal.valor}\\'`;
40032
- default:
40033
- return String(literal.valor);
40034
- }
40035
- }
40036
- traduzirConstrutoSeparador(separador) {
40037
- return `${separador.conteudo} `;
40038
- }
40039
- traduzirConstrutoUnario(unario) {
40040
- const textoOperando = this.dicionarioConstrutos[unario.operando.constructor.name](unario.operando);
40041
- let textoOperador = '';
40042
- switch (unario.operador.tipo) {
40043
- case delegua_1.default.INCREMENTAR:
40044
- textoOperador = `incrementar ${textoOperando} em 1`;
40045
- break;
40046
- case delegua_1.default.DECREMENTAR:
40047
- textoOperador = `decrementar ${textoOperando} de 1`;
40048
- break;
40049
- }
40050
- switch (unario.incidenciaOperador) {
40051
- case 'ANTES':
40052
- return `${textoOperador}, devolver valor de ${textoOperando}`;
40053
- case 'DEPOIS':
40054
- return `devolver valor de ${textoOperando}, ${textoOperador}`;
40055
- }
40056
- }
40057
- traduzirConstrutoVariavel(variavel) {
40058
- return variavel.simbolo.lexema;
40059
- }
40060
- traduzirConstrutoVetor(vetor) {
40061
- let texto = `vetor: `;
40062
- for (const elemento of vetor.valores) {
40063
- texto += this.dicionarioConstrutos[elemento.constructor.name](elemento);
40064
- }
40065
- return texto;
40066
- }
40067
- logicaComumConexaoArestas(aresta) {
40068
- const vertices = [];
40069
- while (this.anteriores.length > 0) {
40070
- const anterior = this.anteriores.shift();
40071
- let textoVertice = undefined;
40072
- if (this.ultimaDicaVertice) {
40073
- textoVertice = String(this.ultimaDicaVertice);
40074
- this.ultimaDicaVertice = undefined;
40075
- }
40076
- vertices.push(new mermaid_1.VerticeFluxograma(anterior, aresta, textoVertice));
40077
- }
40078
- return vertices;
40079
- }
40080
- traduzirDeclaracaoBloco(declaracaoBloco) {
40081
- let vertices = [];
40082
- for (const declaracao of declaracaoBloco.declaracoes) {
40083
- const verticesDeclaracao = this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao);
40084
- vertices = vertices.concat(verticesDeclaracao);
40085
- }
40086
- return vertices;
40781
+ visitarDeclaracaoCabecalhoPrograma(declaracao) {
40782
+ throw new Error('Método não implementado.');
40087
40783
  }
40088
- traduzirDeclaracaoClasse(declaracaoClasse) {
40784
+ async visitarDeclaracaoClasse(declaracao) {
40089
40785
  var _a, _b;
40090
- const nomeClasse = declaracaoClasse.simbolo.lexema;
40091
- const superClasse = declaracaoClasse.superClasse
40092
- ? (((_a = declaracaoClasse.superClasse.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) || ((_b = declaracaoClasse.superClasse.nome) === null || _b === void 0 ? void 0 : _b.lexema))
40786
+ const nomeClasse = declaracao.simbolo.lexema;
40787
+ const superClasse = declaracao.superClasse
40788
+ ? (((_a = declaracao.superClasse.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) || ((_b = declaracao.superClasse.nome) === null || _b === void 0 ? void 0 : _b.lexema))
40093
40789
  : undefined;
40094
- const linha = declaracaoClasse.linha;
40790
+ const linha = declaracao.linha;
40095
40791
  // Cria arestas de entrada e saída para a classe
40096
40792
  const textoInicio = `Classe${nomeClasse}Inicio[Início: Classe ${nomeClasse}]`;
40097
- const arestaInicial = new mermaid_1.ArestaFluxograma(declaracaoClasse, textoInicio);
40793
+ const arestaInicial = new mermaid_1.ArestaFluxograma(declaracao, textoInicio);
40098
40794
  const textoFim = `Classe${nomeClasse}Fim[Fim: Classe ${nomeClasse}]`;
40099
- const arestaFinal = new mermaid_1.ArestaFluxograma(declaracaoClasse, textoFim);
40795
+ const arestaFinal = new mermaid_1.ArestaFluxograma(declaracao, textoFim);
40100
40796
  // Cria o subgrafo da classe
40101
40797
  const subgrafo = new mermaid_1.SubgrafoClasse(nomeClasse, linha, arestaInicial, arestaFinal, superClasse);
40102
40798
  // Salva o estado anterior
40103
40799
  const anterioresAntes = [...this.anteriores];
40104
40800
  // Processa métodos
40105
- if (declaracaoClasse.metodos && declaracaoClasse.metodos.length > 0) {
40106
- for (const metodoDeclaracao of declaracaoClasse.metodos) {
40801
+ if (declaracao.metodos && declaracao.metodos.length > 0) {
40802
+ for (const metodoDeclaracao of declaracao.metodos) {
40107
40803
  const nomeMetodo = metodoDeclaracao.simbolo.lexema;
40108
40804
  const linhaMetodo = metodoDeclaracao.linha;
40109
40805
  const ehConstrutor = nomeMetodo === 'construtor' || nomeMetodo === 'iniciar';
@@ -40118,7 +40814,7 @@ class TradutorMermaidJs {
40118
40814
  this.anteriores = [arestaInicialMetodo];
40119
40815
  if (metodoDeclaracao.funcao.corpo && metodoDeclaracao.funcao.corpo.length > 0) {
40120
40816
  for (const declaracaoCorpo of metodoDeclaracao.funcao.corpo) {
40121
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoCorpo.constructor.name](declaracaoCorpo);
40817
+ const verticesCorpo = await declaracaoCorpo.aceitar(this);
40122
40818
  subgrafoMetodo.vertices = subgrafoMetodo.vertices.concat(verticesCorpo);
40123
40819
  }
40124
40820
  }
@@ -40141,73 +40837,101 @@ class TradutorMermaidJs {
40141
40837
  this.anteriores = anterioresAntes;
40142
40838
  // Armazena o subgrafo da classe
40143
40839
  this.declaracoesClasses[nomeClasse] = subgrafo;
40144
- return [];
40840
+ return Promise.resolve([]);
40145
40841
  }
40146
- traduzirDeclaracaoConst(declaracaoConst) {
40147
- let texto = `Linha${declaracaoConst.linha}(variável: ${declaracaoConst.simbolo.lexema}`;
40148
- texto += this.logicaComumTraducaoVarEConst(declaracaoConst, texto);
40149
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoConst, texto);
40842
+ async visitarDeclaracaoComentario(declaracao) {
40843
+ return Promise.resolve('');
40844
+ }
40845
+ async visitarDeclaracaoConst(declaracao) {
40846
+ let texto = `Linha${declaracao.linha}(variável: ${declaracao.simbolo.lexema}`;
40847
+ texto += await this.logicaComumTraducaoVarEConst(declaracao, texto);
40848
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40150
40849
  const vertices = this.logicaComumConexaoArestas(aresta);
40151
40850
  this.anteriores.push(aresta);
40152
- return vertices;
40851
+ return Promise.resolve(vertices);
40153
40852
  }
40154
- traduzirDeclaracaoEnquanto(declaracaoEnquanto) {
40155
- let texto = `Linha${declaracaoEnquanto.linha}(enquanto `;
40156
- const condicao = this.dicionarioConstrutos[declaracaoEnquanto.condicao.constructor.name](declaracaoEnquanto.condicao);
40853
+ visitarDeclaracaoConstMultiplo(declaracao) {
40854
+ throw new Error('Método não implementado.');
40855
+ }
40856
+ async visitarDeclaracaoDeExpressao(declaracao) {
40857
+ // Verifica se é uma chamada de função
40858
+ if (declaracao.expressao.constructor === construtos_1.Chamada) {
40859
+ const chamada = declaracao.expressao;
40860
+ const verticesChamada = await this.traduzirChamadaFuncao(declaracao, chamada);
40861
+ if (verticesChamada.length > 0) {
40862
+ return Promise.resolve(verticesChamada);
40863
+ }
40864
+ }
40865
+ // Se não for uma chamada de função ou não for uma função conhecida,
40866
+ // trata como expressão normal
40867
+ let texto = `Linha${declaracao.linha}(`;
40868
+ const textoConstruto = await declaracao.expressao.aceitar(this);
40869
+ texto += textoConstruto + ')';
40870
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40871
+ const vertices = this.logicaComumConexaoArestas(aresta);
40872
+ this.anteriores.push(aresta);
40873
+ return Promise.resolve(vertices);
40874
+ }
40875
+ async visitarDeclaracaoDefinicaoFuncao(declaracao) {
40876
+ const nomeFuncao = declaracao.simbolo.lexema;
40877
+ const linha = declaracao.linha;
40878
+ // Cria arestas de entrada e saída para a função
40879
+ const textoInicio = `Func${nomeFuncao}Inicio[Início: ${nomeFuncao}()]`;
40880
+ const arestaInicial = new mermaid_1.ArestaFluxograma(declaracao, textoInicio);
40881
+ const textoFim = `Func${nomeFuncao}Fim[Fim: ${nomeFuncao}()]`;
40882
+ const arestaFinal = new mermaid_1.ArestaFluxograma(declaracao, textoFim);
40883
+ // Cria o subgrafo da função
40884
+ const subgrafo = new mermaid_1.SubgrafoFuncao(nomeFuncao, linha, arestaInicial, arestaFinal);
40885
+ // Salva o estado atual de anteriores
40886
+ const anterioresAntes = [...this.anteriores];
40887
+ this.anteriores = [arestaInicial];
40888
+ // Processa o corpo da função
40889
+ if (declaracao.funcao.corpo && declaracao.funcao.corpo.length > 0) {
40890
+ for (const declaracaoCorpo of declaracao.funcao.corpo) {
40891
+ const verticesCorpo = await declaracaoCorpo.aceitar(this);
40892
+ subgrafo.vertices = subgrafo.vertices.concat(verticesCorpo);
40893
+ }
40894
+ }
40895
+ // Conecta o fim do corpo à aresta final
40896
+ if (this.anteriores.length > 0) {
40897
+ for (const anterior of this.anteriores) {
40898
+ subgrafo.vertices.push(new mermaid_1.VerticeFluxograma(anterior, arestaFinal));
40899
+ }
40900
+ }
40901
+ // Restaura o estado anterior
40902
+ this.anteriores = anterioresAntes;
40903
+ // Armazena o subgrafo
40904
+ this.declaracoesFuncoes[nomeFuncao] = subgrafo;
40905
+ // Não adiciona ao fluxo principal
40906
+ return Promise.resolve([]);
40907
+ }
40908
+ async visitarDeclaracaoEnquanto(declaracao) {
40909
+ let texto = `Linha${declaracao.linha}(enquanto `;
40910
+ const condicao = await declaracao.condicao.aceitar(this);
40157
40911
  texto += condicao + ')';
40158
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoEnquanto, texto);
40912
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40159
40913
  let vertices = this.logicaComumConexaoArestas(aresta);
40160
40914
  this.anteriores.push(aresta);
40161
40915
  // Corpo, normalmente um `Bloco`.
40162
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoEnquanto.corpo.constructor.name](declaracaoEnquanto.corpo);
40916
+ const verticesCorpo = await declaracao.corpo.aceitar(this);
40163
40917
  vertices = vertices.concat(verticesCorpo);
40164
40918
  const ultimaArestaCorpo = verticesCorpo[verticesCorpo.length - 1].destino;
40165
40919
  const verticeLaco = new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, aresta);
40166
40920
  vertices.push(verticeLaco);
40167
- return vertices;
40921
+ return Promise.resolve(vertices);
40168
40922
  }
40169
- logicaComumCaminhoEscolha(declaracaoEscolha, caminhoEscolha, linha, textoIdentificadorOuLiteral, caminhoPadrao) {
40170
- let textoCaso = '';
40171
- if (!caminhoPadrao) {
40172
- textoCaso = `caso ${textoIdentificadorOuLiteral} seja igual a `;
40173
- for (const condicao of caminhoEscolha.condicoes) {
40174
- const textoCondicao = this.dicionarioConstrutos[condicao.constructor.name](condicao);
40175
- textoCaso += `${textoCondicao} ou `;
40176
- }
40177
- textoCaso = textoCaso.slice(0, -4);
40178
- textoCaso += ':';
40179
- }
40180
- else {
40181
- textoCaso = `caso ${textoIdentificadorOuLiteral} tenha qualquer outro valor:`;
40182
- }
40183
- let textoCaminho = `Linha${linha}(${textoCaso})`;
40184
- const arestaCondicaoCaminho = new mermaid_1.ArestaFluxograma(declaracaoEscolha, textoCaminho);
40185
- this.anteriores.push(arestaCondicaoCaminho);
40186
- let verticesResolvidos = [];
40187
- for (const declaracaoCaminho of caminhoEscolha.declaracoes) {
40188
- const verticesDeclaracoes = this.dicionarioDeclaracoes[declaracaoCaminho.constructor.name](declaracaoCaminho);
40189
- verticesResolvidos = verticesResolvidos.concat(verticesDeclaracoes);
40190
- this.anteriores.pop();
40191
- this.anteriores.push(verticesDeclaracoes[verticesDeclaracoes.length - 1].destino);
40192
- }
40193
- this.anteriores.pop();
40194
- return {
40195
- caminho: arestaCondicaoCaminho,
40196
- declaracoesCaminho: verticesResolvidos,
40197
- };
40198
- }
40199
- traduzirDeclaracaoEscolha(declaracaoEscolha) {
40200
- let texto = `Linha${declaracaoEscolha.linha}(escolha um caminho pelo valor de `;
40201
- const textoIdentificadorOuLiteral = this.dicionarioConstrutos[declaracaoEscolha.identificadorOuLiteral.constructor.name](declaracaoEscolha.identificadorOuLiteral);
40923
+ async visitarDeclaracaoEscolha(declaracao) {
40924
+ let texto = `Linha${declaracao.linha}(escolha um caminho pelo valor de `;
40925
+ const textoIdentificadorOuLiteral = await declaracao.identificadorOuLiteral.aceitar(this);
40202
40926
  texto += textoIdentificadorOuLiteral + ')';
40203
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoEscolha, texto);
40927
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40204
40928
  let vertices = this.logicaComumConexaoArestas(aresta);
40205
40929
  const arestasCaminho = [];
40206
- for (const caminho of declaracaoEscolha.caminhos) {
40207
- arestasCaminho.push(this.logicaComumCaminhoEscolha(declaracaoEscolha, caminho, caminho.condicoes[0].linha, textoIdentificadorOuLiteral, false));
40930
+ for (const caminho of declaracao.caminhos) {
40931
+ arestasCaminho.push(await this.logicaComumCaminhoEscolha(declaracao, caminho, caminho.condicoes[0].linha, textoIdentificadorOuLiteral, false));
40208
40932
  }
40209
- if (declaracaoEscolha.caminhoPadrao) {
40210
- arestasCaminho.push(this.logicaComumCaminhoEscolha(declaracaoEscolha, declaracaoEscolha.caminhoPadrao, declaracaoEscolha.caminhoPadrao.declaracoes[0].linha - 1, textoIdentificadorOuLiteral, true));
40933
+ if (declaracao.caminhoPadrao) {
40934
+ arestasCaminho.push(await this.logicaComumCaminhoEscolha(declaracao, declaracao.caminhoPadrao, declaracao.caminhoPadrao.declaracoes[0].linha - 1, textoIdentificadorOuLiteral, true));
40211
40935
  }
40212
40936
  for (const conjunto of Object.values(arestasCaminho)) {
40213
40937
  const verticeEscolhaECaminho = new mermaid_1.VerticeFluxograma(aresta, conjunto.caminho);
@@ -40215,122 +40939,91 @@ class TradutorMermaidJs {
40215
40939
  vertices = vertices.concat(conjunto.declaracoesCaminho);
40216
40940
  this.anteriores.push(conjunto.declaracoesCaminho[conjunto.declaracoesCaminho.length - 1].destino);
40217
40941
  }
40218
- return vertices;
40942
+ return Promise.resolve(vertices);
40219
40943
  }
40220
- traduzirDeclaracaoEscreva(declaracaoEscreva) {
40221
- let texto = `Linha${declaracaoEscreva.linha}(escreva: `;
40222
- for (const argumento of declaracaoEscreva.argumentos) {
40223
- const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
40944
+ async visitarDeclaracaoEscreva(declaracao) {
40945
+ let texto = `Linha${declaracao.linha}(escreva: `;
40946
+ for (const argumento of declaracao.argumentos) {
40947
+ const valor = await argumento.aceitar(this);
40224
40948
  texto += valor + ', ';
40225
40949
  }
40226
40950
  texto = texto.slice(0, -2);
40227
40951
  texto += ')';
40228
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoEscreva, texto);
40952
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40229
40953
  const vertices = this.logicaComumConexaoArestas(aresta);
40230
40954
  this.anteriores.push(aresta);
40231
- return vertices;
40955
+ return Promise.resolve(vertices);
40232
40956
  }
40233
- traduzirDeclaracaoExpressao(declaracaoExpressao) {
40234
- // Verifica se é uma chamada de função
40235
- if (declaracaoExpressao.expressao.constructor.name === 'Chamada') {
40236
- const chamada = declaracaoExpressao.expressao;
40237
- const verticesChamada = this.traduzirChamadaFuncao(declaracaoExpressao, chamada);
40238
- if (verticesChamada.length > 0) {
40239
- return verticesChamada;
40240
- }
40241
- }
40242
- // Se não for uma chamada de função ou não for uma função conhecida,
40243
- // trata como expressão normal
40244
- let texto = `Linha${declaracaoExpressao.linha}(`;
40245
- const textoConstruto = this.dicionarioConstrutos[declaracaoExpressao.expressao.constructor.name](declaracaoExpressao.expressao);
40246
- texto += textoConstruto + ')';
40247
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoExpressao, texto);
40248
- const vertices = this.logicaComumConexaoArestas(aresta);
40249
- this.anteriores.push(aresta);
40250
- return vertices;
40957
+ visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
40958
+ throw new Error('Método não implementado.');
40251
40959
  }
40252
- traduzirDeclaracaoFazerEnquanto(declaracaoFazerEnquanto) {
40253
- const texto = `Linha${declaracaoFazerEnquanto.linha}(fazer)`;
40254
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoFazerEnquanto, texto);
40960
+ async visitarDeclaracaoFazer(declaracao) {
40961
+ const texto = `Linha${declaracao.linha}(fazer)`;
40962
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40255
40963
  let vertices = this.logicaComumConexaoArestas(aresta);
40256
40964
  this.anteriores.push(aresta);
40257
40965
  // Corpo, normalmente um `Bloco`.
40258
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoFazerEnquanto.caminhoFazer.constructor.name](declaracaoFazerEnquanto.caminhoFazer);
40966
+ const verticesCorpo = await declaracao.caminhoFazer.aceitar(this);
40259
40967
  vertices = vertices.concat(verticesCorpo);
40260
40968
  const ultimaArestaCorpo = verticesCorpo[verticesCorpo.length - 1].destino;
40261
- const condicao = this.dicionarioConstrutos[declaracaoFazerEnquanto.condicaoEnquanto.constructor.name](declaracaoFazerEnquanto.condicaoEnquanto);
40262
- let textoEnquanto = `Linha${declaracaoFazerEnquanto.condicaoEnquanto.linha}(enquanto ${condicao})`;
40263
- const arestaEnquanto = new mermaid_1.ArestaFluxograma(declaracaoFazerEnquanto, textoEnquanto);
40969
+ const condicao = await declaracao.condicaoEnquanto.aceitar(this);
40970
+ let textoEnquanto = `Linha${declaracao.condicaoEnquanto.linha}(enquanto ${condicao})`;
40971
+ const arestaEnquanto = new mermaid_1.ArestaFluxograma(declaracao, textoEnquanto);
40264
40972
  const verticeEnquanto = new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, arestaEnquanto);
40265
40973
  vertices.push(verticeEnquanto);
40266
40974
  const verticeCondicaoComFazer = new mermaid_1.VerticeFluxograma(arestaEnquanto, aresta);
40267
40975
  vertices.push(verticeCondicaoComFazer);
40268
40976
  this.anteriores.pop();
40269
40977
  this.anteriores.push(arestaEnquanto);
40270
- return vertices;
40978
+ return Promise.resolve(vertices);
40271
40979
  }
40272
- traduzirDeclaracaoFuncao(declaracaoFuncao) {
40273
- const nomeFuncao = declaracaoFuncao.simbolo.lexema;
40274
- const linha = declaracaoFuncao.linha;
40275
- // Cria arestas de entrada e saída para a função
40276
- const textoInicio = `Func${nomeFuncao}Inicio[Início: ${nomeFuncao}()]`;
40277
- const arestaInicial = new mermaid_1.ArestaFluxograma(declaracaoFuncao, textoInicio);
40278
- const textoFim = `Func${nomeFuncao}Fim[Fim: ${nomeFuncao}()]`;
40279
- const arestaFinal = new mermaid_1.ArestaFluxograma(declaracaoFuncao, textoFim);
40280
- // Cria o subgrafo da função
40281
- const subgrafo = new mermaid_1.SubgrafoFuncao(nomeFuncao, linha, arestaInicial, arestaFinal);
40282
- // Salva o estado atual de anteriores
40283
- const anterioresAntes = [...this.anteriores];
40284
- this.anteriores = [arestaInicial];
40285
- // Processa o corpo da função
40286
- if (declaracaoFuncao.funcao.corpo && declaracaoFuncao.funcao.corpo.length > 0) {
40287
- for (const declaracaoCorpo of declaracaoFuncao.funcao.corpo) {
40288
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoCorpo.constructor.name](declaracaoCorpo);
40289
- subgrafo.vertices = subgrafo.vertices.concat(verticesCorpo);
40290
- }
40291
- }
40292
- // Conecta o fim do corpo à aresta final
40293
- if (this.anteriores.length > 0) {
40294
- for (const anterior of this.anteriores) {
40295
- subgrafo.vertices.push(new mermaid_1.VerticeFluxograma(anterior, arestaFinal));
40296
- }
40297
- }
40298
- // Restaura o estado anterior
40299
- this.anteriores = anterioresAntes;
40300
- // Armazena o subgrafo
40301
- this.declaracoesFuncoes[nomeFuncao] = subgrafo;
40302
- // Não adiciona ao fluxo principal
40303
- return [];
40980
+ visitarDeclaracaoInicioAlgoritmo(declaracao) {
40981
+ throw new Error('Método não implementado.');
40304
40982
  }
40305
- traduzirDeclaracaoPara(declaracaoPara) {
40306
- let texto = `Linha${declaracaoPara.linha}(para `;
40307
- if (declaracaoPara.inicializador) {
40308
- for (const declaracaoInicializadora of declaracaoPara.inicializador) {
40983
+ async visitarDeclaracaoParaCada(declaracao) {
40984
+ const textoVariavelIteracao = await declaracao.variavelIteracao.aceitar(this);
40985
+ let texto = `Linha${declaracao.linha}(para cada ${textoVariavelIteracao} em `;
40986
+ const textoVariavelIterada = await declaracao.vetorOuDicionario.aceitar(this);
40987
+ texto += textoVariavelIterada + ')';
40988
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40989
+ let vertices = this.logicaComumConexaoArestas(aresta);
40990
+ this.anteriores.push(aresta);
40991
+ // Corpo, normalmente um `Bloco`.
40992
+ const verticesCorpo = await declaracao.corpo.aceitar(this);
40993
+ vertices = vertices.concat(verticesCorpo);
40994
+ const ultimaArestaCorpo = verticesCorpo[verticesCorpo.length - 1].destino;
40995
+ vertices.push(new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, aresta));
40996
+ return Promise.resolve(vertices);
40997
+ }
40998
+ async visitarDeclaracaoPara(declaracao) {
40999
+ let texto = `Linha${declaracao.linha}(para `;
41000
+ if (declaracao.inicializador) {
41001
+ for (const declaracaoInicializadora of declaracao.inicializador) {
40309
41002
  // Normalmente é `Var`.
40310
41003
  const declaracaoVar = declaracaoInicializadora;
40311
- const valorInicializacao = this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
41004
+ const valorInicializacao = await declaracaoVar.inicializador.aceitar(this);
40312
41005
  texto += `uma variável ${declaracaoVar.simbolo.lexema} inicializada com ${valorInicializacao}, `;
40313
41006
  }
40314
41007
  texto = texto.slice(0, -2);
40315
41008
  }
40316
41009
  texto += ')';
40317
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoPara, texto);
41010
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40318
41011
  let vertices = this.logicaComumConexaoArestas(aresta);
40319
41012
  this.anteriores.push(aresta);
40320
41013
  // Condição
40321
- const textoCondicao = this.dicionarioConstrutos[declaracaoPara.condicao.constructor.name](declaracaoPara.condicao);
40322
- const textoArestaCondicao = `Linha${declaracaoPara.linha}Condicao{se ${textoCondicao}}`;
40323
- const arestaCondicao = new mermaid_1.ArestaFluxograma(declaracaoPara, textoArestaCondicao);
41014
+ const textoCondicao = await declaracao.condicao.aceitar(this);
41015
+ const textoArestaCondicao = `Linha${declaracao.linha}Condicao{se ${textoCondicao}}`;
41016
+ const arestaCondicao = new mermaid_1.ArestaFluxograma(declaracao, textoArestaCondicao);
40324
41017
  vertices = vertices.concat(this.logicaComumConexaoArestas(arestaCondicao));
40325
41018
  this.anteriores.push(arestaCondicao);
40326
41019
  this.ultimaDicaVertice = 'Sim';
40327
41020
  // Corpo, normalmente um `Bloco`.
40328
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoPara.corpo.constructor.name](declaracaoPara.corpo);
41021
+ const verticesCorpo = await declaracao.corpo.aceitar(this);
40329
41022
  vertices = vertices.concat(verticesCorpo);
40330
41023
  // Incremento
40331
41024
  const ultimaArestaCorpo = verticesCorpo[verticesCorpo.length - 1].destino;
40332
- const textoIncremento = this.dicionarioConstrutos[declaracaoPara.incrementar.constructor.name](declaracaoPara.incrementar);
40333
- const arestaIncremento = new mermaid_1.ArestaFluxograma(declaracaoPara, `Linha${declaracaoPara.linha}Incremento(${textoIncremento})`);
41025
+ const textoIncremento = await declaracao.incrementar.aceitar(this);
41026
+ const arestaIncremento = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Incremento(${textoIncremento})`);
40334
41027
  const verticeIncremento = new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, arestaIncremento);
40335
41028
  vertices.push(verticeIncremento);
40336
41029
  const verticeLaco = new mermaid_1.VerticeFluxograma(arestaIncremento, arestaCondicao);
@@ -40339,80 +41032,495 @@ class TradutorMermaidJs {
40339
41032
  this.anteriores.pop();
40340
41033
  this.anteriores.push(arestaCondicao);
40341
41034
  this.ultimaDicaVertice = 'Não';
40342
- return vertices;
40343
- }
40344
- traduzirDeclaracaoParaCada(declaracaoParaCada) {
40345
- const textoVariavelIteracao = this.dicionarioConstrutos[declaracaoParaCada.variavelIteracao.constructor.name](declaracaoParaCada.variavelIteracao);
40346
- let texto = `Linha${declaracaoParaCada.linha}(para cada ${textoVariavelIteracao} em `;
40347
- const textoVariavelIterada = this.dicionarioConstrutos[declaracaoParaCada.vetorOuDicionario.constructor.name](declaracaoParaCada.vetorOuDicionario);
40348
- texto += textoVariavelIterada + ')';
40349
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoParaCada, texto);
40350
- let vertices = this.logicaComumConexaoArestas(aresta);
40351
- this.anteriores.push(aresta);
40352
- // Corpo, normalmente um `Bloco`.
40353
- const verticesCorpo = this.dicionarioDeclaracoes[declaracaoParaCada.corpo.constructor.name](declaracaoParaCada.corpo);
40354
- vertices = vertices.concat(verticesCorpo);
40355
- const ultimaArestaCorpo = verticesCorpo[verticesCorpo.length - 1].destino;
40356
- vertices.push(new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, aresta));
40357
- return vertices;
41035
+ return Promise.resolve(vertices);
40358
41036
  }
40359
- traduzirDeclaracaoSe(declaracaoSe) {
40360
- let texto = `Linha${declaracaoSe.linha}{se `;
40361
- const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
41037
+ async visitarDeclaracaoSe(declaracao) {
41038
+ let texto = `Linha${declaracao.linha}{se `;
41039
+ const condicao = await declaracao.condicao.aceitar(this);
40362
41040
  texto += condicao;
40363
41041
  texto += `}`;
40364
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoSe, texto);
41042
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40365
41043
  let vertices = this.logicaComumConexaoArestas(aresta);
40366
41044
  this.anteriores.push(aresta);
40367
41045
  this.ultimaDicaVertice = 'Sim';
40368
41046
  // Caminho então, normalmente um `Bloco`.
40369
- const verticesEntao = this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
41047
+ const verticesEntao = await declaracao.caminhoEntao.aceitar(this);
40370
41048
  vertices = vertices.concat(verticesEntao);
40371
- const ultimaArestaEntao = verticesEntao[verticesEntao.length - 1].destino;
40372
- if (declaracaoSe.caminhoSenao) {
41049
+ const ultimaArestaEntao = verticesEntao.length > 0
41050
+ ? verticesEntao[verticesEntao.length - 1].destino
41051
+ : aresta;
41052
+ if (declaracao.caminhoSenao) {
40373
41053
  this.anteriores = [];
40374
- const arestaSenao = new mermaid_1.ArestaFluxograma(declaracaoSe, `Linha${declaracaoSe.caminhoSenao.linha}(senão)`);
41054
+ const arestaSenao = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.caminhoSenao.linha}(senão)`);
40375
41055
  vertices.push(new mermaid_1.VerticeFluxograma(aresta, arestaSenao, 'Não'));
40376
41056
  this.anteriores.push(arestaSenao);
40377
- const verticesSenao = this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
41057
+ const verticesSenao = await declaracao.caminhoSenao.aceitar(this);
40378
41058
  vertices = vertices.concat(verticesSenao);
40379
41059
  }
40380
41060
  this.anteriores.push(ultimaArestaEntao);
40381
- return vertices;
41061
+ return Promise.resolve(vertices);
40382
41062
  }
40383
- logicaComumTraducaoVarEConst(declaracaoVarOuConst, textoInicial) {
40384
- if (declaracaoVarOuConst.inicializador) {
40385
- textoInicial += `, iniciada com: ${this.dicionarioConstrutos[declaracaoVarOuConst.inicializador.constructor.name](declaracaoVarOuConst.inicializador)}`;
41063
+ async visitarDeclaracaoTendoComo(declaracao) {
41064
+ const textoVariavelIteracao = await declaracao.inicializacaoVariavel.aceitar(this);
41065
+ let texto = `Linha${declaracao.linha}(tendo ${textoVariavelIteracao} como `;
41066
+ texto += declaracao.simboloVariavel.lexema + ')';
41067
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
41068
+ let vertices = this.logicaComumConexaoArestas(aresta);
41069
+ this.anteriores.push(aresta);
41070
+ // Corpo, normalmente um `Bloco`.
41071
+ const verticesCorpo = await declaracao.corpo.aceitar(this);
41072
+ vertices = vertices.concat(verticesCorpo);
41073
+ const ultimaArestaCorpo = verticesCorpo[verticesCorpo.length - 1].destino;
41074
+ vertices.push(new mermaid_1.VerticeFluxograma(ultimaArestaCorpo, aresta));
41075
+ return Promise.resolve(vertices);
41076
+ }
41077
+ async visitarDeclaracaoTente(declaracao) {
41078
+ const texto = `Linha${declaracao.linha}(tente)`;
41079
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
41080
+ let vertices = this.logicaComumConexaoArestas(aresta);
41081
+ this.anteriores.push(aresta);
41082
+ // Caminho tente (try)
41083
+ const verticesTente = [];
41084
+ for (const declaracaoTente of declaracao.caminhoTente) {
41085
+ const verticesDeclaracao = await declaracaoTente.aceitar(this);
41086
+ verticesTente.push(...verticesDeclaracao);
41087
+ }
41088
+ vertices = vertices.concat(verticesTente);
41089
+ const ultimaArestaTente = verticesTente.length > 0
41090
+ ? verticesTente[verticesTente.length - 1].destino
41091
+ : aresta;
41092
+ const anterioresAposTente = [];
41093
+ // Caminho pegue (catch) - se existir
41094
+ if (declaracao.caminhoPegue) {
41095
+ this.anteriores = [aresta];
41096
+ const arestaPegue = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Pegue(pegue)`);
41097
+ vertices.push(new mermaid_1.VerticeFluxograma(aresta, arestaPegue, 'Erro'));
41098
+ this.anteriores.push(arestaPegue);
41099
+ const verticesPegue = [];
41100
+ if (Array.isArray(declaracao.caminhoPegue)) {
41101
+ for (const declaracaoPegue of declaracao.caminhoPegue) {
41102
+ const verticesDeclaracao = await declaracaoPegue.aceitar(this);
41103
+ verticesPegue.push(...verticesDeclaracao);
41104
+ }
41105
+ }
41106
+ vertices = vertices.concat(verticesPegue);
41107
+ const ultimaArestaPegue = verticesPegue.length > 0
41108
+ ? verticesPegue[verticesPegue.length - 1].destino
41109
+ : arestaPegue;
41110
+ anterioresAposTente.push(ultimaArestaPegue);
41111
+ }
41112
+ // Caminho senão (else) - se existir
41113
+ if (declaracao.caminhoSenao && declaracao.caminhoSenao.length > 0) {
41114
+ this.anteriores = [ultimaArestaTente];
41115
+ const arestaSenao = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Senao(senão - sem erro)`);
41116
+ vertices.push(new mermaid_1.VerticeFluxograma(ultimaArestaTente, arestaSenao, 'Sucesso'));
41117
+ this.anteriores.push(arestaSenao);
41118
+ const verticesSenao = [];
41119
+ for (const declaracaoSenao of declaracao.caminhoSenao) {
41120
+ const verticesDeclaracao = await declaracaoSenao.aceitar(this);
41121
+ verticesSenao.push(...verticesDeclaracao);
41122
+ }
41123
+ vertices = vertices.concat(verticesSenao);
41124
+ const ultimaArestaSenao = verticesSenao.length > 0
41125
+ ? verticesSenao[verticesSenao.length - 1].destino
41126
+ : arestaSenao;
41127
+ anterioresAposTente.push(ultimaArestaSenao);
40386
41128
  }
40387
- textoInicial += ')';
40388
- return textoInicial;
41129
+ else {
41130
+ // Se não há senão, o caminho de sucesso também continua
41131
+ anterioresAposTente.push(ultimaArestaTente);
41132
+ }
41133
+ // Caminho finalmente (finally) - se existir
41134
+ if (declaracao.caminhoFinalmente && declaracao.caminhoFinalmente.length > 0) {
41135
+ this.anteriores = anterioresAposTente;
41136
+ const arestaFinalmente = new mermaid_1.ArestaFluxograma(declaracao, `Linha${declaracao.linha}Finalmente(finalmente)`);
41137
+ vertices = vertices.concat(this.logicaComumConexaoArestas(arestaFinalmente));
41138
+ this.anteriores.push(arestaFinalmente);
41139
+ const verticesFinalmente = [];
41140
+ for (const declaracaoFinalmente of declaracao.caminhoFinalmente) {
41141
+ const verticesDeclaracao = await declaracaoFinalmente.aceitar(this);
41142
+ verticesFinalmente.push(...verticesDeclaracao);
41143
+ }
41144
+ vertices = vertices.concat(verticesFinalmente);
41145
+ }
41146
+ else {
41147
+ // Se não há finalmente, os anteriores são os caminhos após tente
41148
+ this.anteriores = anterioresAposTente;
41149
+ }
41150
+ return Promise.resolve(vertices);
40389
41151
  }
40390
- traduzirDeclaracaoVar(declaracaoVar) {
40391
- let texto = `Linha${declaracaoVar.linha}(variável: ${declaracaoVar.simbolo.lexema}`;
40392
- texto += this.logicaComumTraducaoVarEConst(declaracaoVar, texto);
40393
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoVar, texto);
41152
+ visitarDeclaracaoTextoDocumentacao(declaracao) {
41153
+ throw new Error('Método não implementado.');
41154
+ }
41155
+ async visitarDeclaracaoVar(declaracao) {
41156
+ let texto = `Linha${declaracao.linha}(variável: ${declaracao.simbolo.lexema}`;
41157
+ texto += await this.logicaComumTraducaoVarEConst(declaracao, texto);
41158
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
40394
41159
  const vertices = this.logicaComumConexaoArestas(aresta);
40395
41160
  this.anteriores.push(aresta);
40396
- return vertices;
41161
+ return Promise.resolve(vertices);
40397
41162
  }
40398
- traduzirDeclaracaoRetorna(declaracaoRetorna) {
40399
- let texto = `Linha${declaracaoRetorna.linha}(retorna`;
40400
- if (declaracaoRetorna.valor) {
40401
- texto += `: ${this.dicionarioConstrutos[declaracaoRetorna.valor.constructor.name](declaracaoRetorna.valor)}`;
41163
+ visitarDeclaracaoVarMultiplo(declaracao) {
41164
+ throw new Error('Método não implementado.');
41165
+ }
41166
+ async visitarExpressaoDeAtribuicao(expressao) {
41167
+ const textoAlvo = await expressao.alvo.aceitar(this);
41168
+ const textoValor = await expressao.valor.aceitar(this);
41169
+ return Promise.resolve(`${textoAlvo} recebe: ${textoValor}`);
41170
+ }
41171
+ async visitarExpressaoAcessoIndiceVariavel(expressao) {
41172
+ const textoIndice = await expressao.indice.aceitar(this);
41173
+ return Promise.resolve(`no índice ${textoIndice}`);
41174
+ }
41175
+ visitarExpressaoAcessoIntervaloVariavel(expressao) {
41176
+ throw new Error('Método não implementado.');
41177
+ }
41178
+ visitarExpressaoAcessoElementoMatriz(expressao) {
41179
+ throw new Error('Método não implementado.');
41180
+ }
41181
+ async visitarExpressaoAcessoMetodo(expressao) {
41182
+ return Promise.resolve(`método ${expressao.nomeMetodo}`);
41183
+ }
41184
+ async visitarExpressaoAcessoMetodoOuPropriedade(expressao) {
41185
+ return Promise.resolve(`método ou propriedade ${expressao.simbolo.lexema}`);
41186
+ }
41187
+ async visitarExpressaoAcessoPropriedade(expressao) {
41188
+ return Promise.resolve(`propriedade ${expressao.nomePropriedade}`);
41189
+ }
41190
+ async visitarExpressaoAgrupamento(expressao) {
41191
+ return await expressao.expressao.aceitar(this);
41192
+ }
41193
+ async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
41194
+ const nomeFuncao = expressao.simboloFuncao.lexema;
41195
+ return Promise.resolve(`referência à função ${nomeFuncao}`);
41196
+ }
41197
+ async visitarExpressaoAtribuicaoPorIndice(expressao) {
41198
+ const textoObjeto = await expressao.objeto.aceitar(this);
41199
+ const textoIndice = await expressao.indice.aceitar(this);
41200
+ const textoValor = await expressao.valor.aceitar(this);
41201
+ return Promise.resolve(`${textoObjeto} no índice ${textoIndice} recebe: ${textoValor}`);
41202
+ }
41203
+ visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
41204
+ throw new Error('Método não implementado.');
41205
+ }
41206
+ async visitarExpressaoBinaria(expressao) {
41207
+ const operandoEsquerdo = await expressao.esquerda.aceitar(this);
41208
+ const operandoDireito = await expressao.direita.aceitar(this);
41209
+ switch (expressao.operador.tipo) {
41210
+ case delegua_1.default.ADICAO:
41211
+ return Promise.resolve(`somar ${operandoEsquerdo} e ${operandoDireito}`);
41212
+ case delegua_1.default.SUBTRACAO:
41213
+ return Promise.resolve(`subtrair ${operandoDireito} de ${operandoEsquerdo}`);
41214
+ case delegua_1.default.MULTIPLICACAO:
41215
+ return Promise.resolve(`multiplicar ${operandoEsquerdo} por ${operandoDireito}`);
41216
+ case delegua_1.default.DIVISAO:
41217
+ return Promise.resolve(`dividir ${operandoEsquerdo} por ${operandoDireito}`);
41218
+ case delegua_1.default.MODULO:
41219
+ return Promise.resolve(`resto de ${operandoEsquerdo} dividido por ${operandoDireito}`);
41220
+ case delegua_1.default.MENOR:
41221
+ return Promise.resolve(`${operandoEsquerdo} for menor que ${operandoDireito}`);
41222
+ case delegua_1.default.MENOR_IGUAL:
41223
+ return Promise.resolve(`${operandoEsquerdo} for menor ou igual a ${operandoDireito}`);
41224
+ case delegua_1.default.MAIOR:
41225
+ return Promise.resolve(`${operandoEsquerdo} for maior que ${operandoDireito}`);
41226
+ case delegua_1.default.MAIOR_IGUAL:
41227
+ return Promise.resolve(`${operandoEsquerdo} for maior ou igual a ${operandoDireito}`);
41228
+ case delegua_1.default.IGUAL_IGUAL:
41229
+ return Promise.resolve(`${operandoEsquerdo} for igual a ${operandoDireito}`);
41230
+ case delegua_1.default.DIFERENTE:
41231
+ return Promise.resolve(`${operandoEsquerdo} for diferente de ${operandoDireito}`);
41232
+ }
41233
+ return Promise.resolve('');
41234
+ }
41235
+ async visitarExpressaoBloco(bloco) {
41236
+ let vertices = [];
41237
+ for (const declaracao of bloco.declaracoes) {
41238
+ const verticesDeclaracao = await declaracao.aceitar(this);
41239
+ vertices = vertices.concat(verticesDeclaracao);
41240
+ }
41241
+ return Promise.resolve(vertices);
41242
+ }
41243
+ async visitarExpressaoComentario(expressao) {
41244
+ return Promise.resolve('');
41245
+ }
41246
+ async visitarExpressaoContinua(declaracao) {
41247
+ const texto = `Linha${declaracao.linha}(continua)`;
41248
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
41249
+ const vertices = this.logicaComumConexaoArestas(aresta);
41250
+ this.anteriores.push(aresta);
41251
+ return Promise.resolve(vertices);
41252
+ }
41253
+ async visitarExpressaoDeChamada(expressao) {
41254
+ const textoEntidadeChamada = await expressao.entidadeChamada.aceitar(this);
41255
+ let texto = `chamada a ${textoEntidadeChamada}`;
41256
+ if (expressao.argumentos.length > 0) {
41257
+ texto += `, com argumentos: `;
41258
+ for (const argumento of expressao.argumentos) {
41259
+ const textoArgumento = await argumento.aceitar(this);
41260
+ texto += `${textoArgumento}, `;
41261
+ }
41262
+ texto = texto.slice(0, -2);
41263
+ }
41264
+ else {
41265
+ texto += `, sem argumentos`;
41266
+ }
41267
+ return Promise.resolve(texto);
41268
+ }
41269
+ async visitarExpressaoDefinirValor(expressao) {
41270
+ const textoObjeto = await expressao.objeto.aceitar(this);
41271
+ const textoValor = await expressao.valor.aceitar(this);
41272
+ return Promise.resolve(`${expressao.nome.lexema} em ${textoObjeto} recebe ${textoValor}`);
41273
+ }
41274
+ async visitarExpressaoFuncaoConstruto(expressao) {
41275
+ let texto = 'função anônima';
41276
+ if (expressao.parametros && expressao.parametros.length > 0) {
41277
+ const parametros = expressao.parametros.map(p => p.nome.lexema).join(', ');
41278
+ texto += `(${parametros})`;
41279
+ }
41280
+ else {
41281
+ texto += '()';
41282
+ }
41283
+ return Promise.resolve(texto);
41284
+ }
41285
+ async visitarExpressaoDeVariavel(expressao) {
41286
+ return Promise.resolve(expressao.simbolo.lexema);
41287
+ }
41288
+ async visitarExpressaoDicionario(expressao) {
41289
+ let texto = `dicionário`;
41290
+ if (expressao.chaves.length > 0) {
41291
+ texto += `, com `;
41292
+ for (const [chave, indice] of Object.entries(expressao.chaves)) {
41293
+ texto += `chave ${chave} definida com o valor ${expressao.valores[0]}`;
41294
+ }
41295
+ }
41296
+ else {
41297
+ texto += ' vazio';
41298
+ }
41299
+ return Promise.resolve(texto);
41300
+ }
41301
+ async visitarExpressaoExpressaoRegular(expressao) {
41302
+ // Representa a expressão regular como texto para o fluxograma
41303
+ const padraoRegex = expressao.valor ? String(expressao.valor) : expressao.simbolo.lexema;
41304
+ return Promise.resolve(`expressão regular: /${padraoRegex}/`);
41305
+ }
41306
+ async visitarExpressaoFalhar(expressao) {
41307
+ let texto = `Linha${expressao.linha}(falhar`;
41308
+ if (expressao.explicacao) {
41309
+ const textoExplicacao = await expressao.explicacao.aceitar(this);
41310
+ texto += `: ${textoExplicacao}`;
40402
41311
  }
40403
41312
  texto += ')';
40404
- const aresta = new mermaid_1.ArestaFluxograma(declaracaoRetorna, texto);
41313
+ const aresta = new mermaid_1.ArestaFluxograma(expressao, texto);
40405
41314
  const vertices = this.logicaComumConexaoArestas(aresta);
40406
41315
  this.anteriores.push(aresta);
41316
+ return Promise.resolve(vertices);
41317
+ }
41318
+ visitarExpressaoFimPara(declaracao) {
41319
+ throw new Error('Método não implementado.');
41320
+ }
41321
+ async visitarExpressaoFormatacaoEscrita(declaracao) {
41322
+ const textoExpressao = await declaracao.expressao.aceitar(this);
41323
+ let formato = textoExpressao;
41324
+ // Adiciona informações de formatação se especificadas
41325
+ const partes = [textoExpressao];
41326
+ if (declaracao.espacos > 0) {
41327
+ partes.push(`${declaracao.espacos} espaços`);
41328
+ }
41329
+ if (declaracao.casasDecimais > 0) {
41330
+ partes.push(`${declaracao.casasDecimais} casas decimais`);
41331
+ }
41332
+ if (partes.length > 1) {
41333
+ formato = `${partes[0]} (${partes.slice(1).join(', ')})`;
41334
+ }
41335
+ return Promise.resolve(formato);
41336
+ }
41337
+ async visitarExpressaoIsto(expressao) {
41338
+ return Promise.resolve('this');
41339
+ }
41340
+ async visitarExpressaoLeia(expressao) {
41341
+ let texto = 'leia da entrada';
41342
+ if (expressao.argumentos && expressao.argumentos.length > 0) {
41343
+ const textoArgumento = await expressao.argumentos[0].aceitar(this);
41344
+ texto += `, imprimindo antes: \\'${textoArgumento}\\'`;
41345
+ }
41346
+ return Promise.resolve(texto);
41347
+ }
41348
+ async visitarExpressaoLiteral(expressao) {
41349
+ switch (expressao.tipo) {
41350
+ case 'lógico':
41351
+ return Promise.resolve(expressao.valor ? 'verdadeiro' : 'falso');
41352
+ case 'texto':
41353
+ return Promise.resolve(`\\'${expressao.valor}\\'`);
41354
+ default:
41355
+ return Promise.resolve(String(expressao.valor));
41356
+ }
41357
+ }
41358
+ async visitarExpressaoLogica(expressao) {
41359
+ const operandoEsquerdo = await expressao.esquerda.aceitar(this);
41360
+ const operandoDireito = await expressao.direita.aceitar(this);
41361
+ switch (expressao.operador.tipo) {
41362
+ case delegua_1.default.E:
41363
+ return Promise.resolve(`${operandoEsquerdo} e ${operandoDireito}`);
41364
+ case delegua_1.default.OU:
41365
+ return Promise.resolve(`${operandoEsquerdo} ou ${operandoDireito}`);
41366
+ }
41367
+ return Promise.resolve('');
41368
+ }
41369
+ async visitarExpressaoReferenciaFuncao(expressao) {
41370
+ const nomeFuncao = expressao.simboloFuncao.lexema;
41371
+ return Promise.resolve(`@${nomeFuncao}`);
41372
+ }
41373
+ async visitarExpressaoRetornar(expressao) {
41374
+ let texto = `Linha${expressao.linha}(retorna`;
41375
+ if (expressao.valor) {
41376
+ texto += `: ${await expressao.valor.aceitar(this)}`;
41377
+ }
41378
+ texto += ')';
41379
+ const aresta = new mermaid_1.ArestaFluxograma(expressao, texto);
41380
+ const vertices = this.logicaComumConexaoArestas(aresta);
41381
+ this.anteriores.push(aresta);
41382
+ return Promise.resolve(vertices);
41383
+ }
41384
+ async visitarExpressaoSeparador(expressao) {
41385
+ return Promise.resolve(`${expressao.conteudo} `);
41386
+ }
41387
+ async visitarExpressaoSuper(expressao) {
41388
+ return Promise.resolve('super');
41389
+ }
41390
+ async visitarExpressaoSustar(declaracao) {
41391
+ const texto = `Linha${declaracao.linha}(sustar)`;
41392
+ const aresta = new mermaid_1.ArestaFluxograma(declaracao, texto);
41393
+ const vertices = this.logicaComumConexaoArestas(aresta);
41394
+ this.anteriores.push(aresta);
41395
+ return Promise.resolve(vertices);
41396
+ }
41397
+ async visitarExpressaoTupla(expressao) {
41398
+ // Tupla base pode ter um único valor
41399
+ if (expressao.valor !== undefined) {
41400
+ return Promise.resolve(`tupla(${expressao.valor})`);
41401
+ }
41402
+ // Se não houver valor, tupla vazia
41403
+ return Promise.resolve('tupla()');
41404
+ }
41405
+ async visitarExpressaoTuplaN(expressao) {
41406
+ const valores = [];
41407
+ for (const elemento of expressao.elementos) {
41408
+ const valorTraduzido = await elemento.aceitar(this);
41409
+ valores.push(valorTraduzido);
41410
+ }
41411
+ return Promise.resolve(`tupla(${valores.join(', ')})`);
41412
+ }
41413
+ visitarExpressaoTipoDe(expressao) {
41414
+ throw new Error('Método não implementado.');
41415
+ }
41416
+ async visitarExpressaoUnaria(expressao) {
41417
+ const textoOperando = await expressao.operando.aceitar(this);
41418
+ let textoOperador = '';
41419
+ switch (expressao.operador.tipo) {
41420
+ case delegua_1.default.INCREMENTAR:
41421
+ textoOperador = `incrementar ${textoOperando} em 1`;
41422
+ break;
41423
+ case delegua_1.default.DECREMENTAR:
41424
+ textoOperador = `decrementar ${textoOperando} de 1`;
41425
+ break;
41426
+ }
41427
+ switch (expressao.incidenciaOperador) {
41428
+ case 'ANTES':
41429
+ return Promise.resolve(`${textoOperador}, devolver valor de ${textoOperando}`);
41430
+ case 'DEPOIS':
41431
+ return Promise.resolve(`devolver valor de ${textoOperando}, ${textoOperador}`);
41432
+ }
41433
+ }
41434
+ async visitarExpressaoVetor(expressao) {
41435
+ let texto = `vetor: `;
41436
+ for (const elemento of expressao.valores) {
41437
+ texto += await elemento.aceitar(this);
41438
+ }
41439
+ return Promise.resolve(texto);
41440
+ }
41441
+ /**
41442
+ * Traduz uma declaração de Expressao que contém uma chamada de função,
41443
+ * criando os vértices necessários para conectar ao subgrafo da função.
41444
+ */
41445
+ async traduzirChamadaFuncao(declaracaoExpressao, chamada) {
41446
+ // Verifica se é uma chamada a uma função conhecida
41447
+ if (chamada.entidadeChamada.constructor === construtos_1.Variavel) {
41448
+ const variavel = chamada.entidadeChamada;
41449
+ const nomeFuncao = variavel.simbolo.lexema;
41450
+ if (this.declaracoesFuncoes[nomeFuncao]) {
41451
+ const subgrafo = this.declaracoesFuncoes[nomeFuncao];
41452
+ let vertices = [];
41453
+ // Conecta do fluxo atual para a entrada da função
41454
+ const textoPreChamada = `Linha${declaracaoExpressao.linha}(${await chamada.aceitar(this)})`;
41455
+ const arestaPreChamada = new mermaid_1.ArestaFluxograma(declaracaoExpressao, textoPreChamada);
41456
+ vertices = vertices.concat(this.logicaComumConexaoArestas(arestaPreChamada));
41457
+ // Conecta a pré-chamada ao início da função
41458
+ vertices.push(new mermaid_1.VerticeFluxograma(arestaPreChamada, subgrafo.arestaInicial));
41459
+ // A saída da função volta para o fluxo principal
41460
+ this.anteriores = [subgrafo.arestaFinal];
41461
+ return Promise.resolve(vertices);
41462
+ }
41463
+ }
41464
+ // Se não for uma função conhecida, trata como expressão normal
41465
+ return Promise.resolve([]);
41466
+ }
41467
+ logicaComumConexaoArestas(aresta) {
41468
+ const vertices = [];
41469
+ while (this.anteriores.length > 0) {
41470
+ const anterior = this.anteriores.shift();
41471
+ let textoVertice = undefined;
41472
+ if (this.ultimaDicaVertice) {
41473
+ textoVertice = String(this.ultimaDicaVertice);
41474
+ this.ultimaDicaVertice = undefined;
41475
+ }
41476
+ vertices.push(new mermaid_1.VerticeFluxograma(anterior, aresta, textoVertice));
41477
+ }
40407
41478
  return vertices;
40408
41479
  }
41480
+ async logicaComumCaminhoEscolha(declaracaoEscolha, caminhoEscolha, linha, textoIdentificadorOuLiteral, caminhoPadrao) {
41481
+ let textoCaso = '';
41482
+ if (!caminhoPadrao) {
41483
+ textoCaso = `caso ${textoIdentificadorOuLiteral} seja igual a `;
41484
+ for (const condicao of caminhoEscolha.condicoes) {
41485
+ const textoCondicao = await condicao.aceitar(this);
41486
+ textoCaso += `${textoCondicao} ou `;
41487
+ }
41488
+ textoCaso = textoCaso.slice(0, -4);
41489
+ textoCaso += ':';
41490
+ }
41491
+ else {
41492
+ textoCaso = `caso ${textoIdentificadorOuLiteral} tenha qualquer outro valor:`;
41493
+ }
41494
+ let textoCaminho = `Linha${linha}(${textoCaso})`;
41495
+ const arestaCondicaoCaminho = new mermaid_1.ArestaFluxograma(declaracaoEscolha, textoCaminho);
41496
+ this.anteriores.push(arestaCondicaoCaminho);
41497
+ let verticesResolvidos = [];
41498
+ for (const declaracaoCaminho of caminhoEscolha.declaracoes) {
41499
+ const verticesDeclaracoes = await declaracaoCaminho.aceitar(this);
41500
+ verticesResolvidos = verticesResolvidos.concat(verticesDeclaracoes);
41501
+ this.anteriores.pop();
41502
+ this.anteriores.push(verticesDeclaracoes[verticesDeclaracoes.length - 1].destino);
41503
+ }
41504
+ this.anteriores.pop();
41505
+ return Promise.resolve({
41506
+ caminho: arestaCondicaoCaminho,
41507
+ declaracoesCaminho: verticesResolvidos,
41508
+ });
41509
+ }
41510
+ async logicaComumTraducaoVarEConst(declaracaoVarOuConst, textoInicial) {
41511
+ if (declaracaoVarOuConst.inicializador) {
41512
+ textoInicial += `, iniciada com: ${await declaracaoVarOuConst.inicializador.aceitar(this)}`;
41513
+ }
41514
+ textoInicial += ')';
41515
+ return Promise.resolve(textoInicial);
41516
+ }
40409
41517
  /**
40410
41518
  * Ponto de entrada para a tradução de declarações em um fluxograma
40411
41519
  * no formato MermaidJs.
40412
41520
  * @param {Declaracao[]} declaracoes As declarações a serem traduzidas.
40413
41521
  * @returns {string} Texto no formato MermaidJs representando o fluxograma.
40414
41522
  */
40415
- traduzir(declaracoes) {
41523
+ async traduzir(declaracoes) {
40416
41524
  this.anteriores = [];
40417
41525
  this.vertices = [];
40418
41526
  let resultado = 'graph TD;\n';
@@ -40420,7 +41528,7 @@ class TradutorMermaidJs {
40420
41528
  this.declaracoesFuncoes = {};
40421
41529
  this.declaracoesClasses = {};
40422
41530
  for (const declaracao of declaracoes) {
40423
- this.vertices = this.vertices.concat(this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao));
41531
+ this.vertices = this.vertices.concat(await declaracao.aceitar(this));
40424
41532
  }
40425
41533
  // Renderiza os subgrafos de funções
40426
41534
  if (Object.keys(this.declaracoesFuncoes).length > 0) {
@@ -40463,7 +41571,7 @@ class TradutorMermaidJs {
40463
41571
  }
40464
41572
  exports.TradutorMermaidJs = TradutorMermaidJs;
40465
41573
 
40466
- },{"../tipos-de-simbolos/delegua":212,"./mermaid":222}],235:[function(require,module,exports){
41574
+ },{"../construtos":62,"../tipos-de-simbolos/delegua":212,"./mermaid":222}],236:[function(require,module,exports){
40467
41575
  "use strict";
40468
41576
  Object.defineProperty(exports, "__esModule", { value: true });
40469
41577
  exports.TradutorPortugolIpt = void 0;
@@ -40525,7 +41633,7 @@ class TradutorPortugolIpt {
40525
41633
  }
40526
41634
  exports.TradutorPortugolIpt = TradutorPortugolIpt;
40527
41635
 
40528
- },{"../avaliador-sintatico/dialetos":17,"../lexador/dialetos":182}],236:[function(require,module,exports){
41636
+ },{"../avaliador-sintatico/dialetos":17,"../lexador/dialetos":182}],237:[function(require,module,exports){
40529
41637
  "use strict";
40530
41638
  var __importDefault = (this && this.__importDefault) || function (mod) {
40531
41639
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -41211,7 +42319,7 @@ class TradutorPython {
41211
42319
  }
41212
42320
  exports.TradutorPython = TradutorPython;
41213
42321
 
41214
- },{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212}],237:[function(require,module,exports){
42322
+ },{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212}],238:[function(require,module,exports){
41215
42323
  "use strict";
41216
42324
  Object.defineProperty(exports, "__esModule", { value: true });
41217
42325
  exports.TradutorReversoJavaScript = void 0;
@@ -41606,7 +42714,7 @@ class TradutorReversoJavaScript {
41606
42714
  }
41607
42715
  exports.TradutorReversoJavaScript = TradutorReversoJavaScript;
41608
42716
 
41609
- },{}],238:[function(require,module,exports){
42717
+ },{}],239:[function(require,module,exports){
41610
42718
  "use strict";
41611
42719
  Object.defineProperty(exports, "__esModule", { value: true });
41612
42720
  exports.TradutorReversoPython = void 0;
@@ -41679,7 +42787,7 @@ class TradutorReversoPython {
41679
42787
  }
41680
42788
  exports.TradutorReversoPython = TradutorReversoPython;
41681
42789
 
41682
- },{"./python/python3-lexer":227,"./python/python3-parser":228,"antlr4ts":356,"antlr4ts/tree/ParseTreeWalker":375}],239:[function(require,module,exports){
42790
+ },{"./python/python3-lexer":227,"./python/python3-parser":228,"antlr4ts":357,"antlr4ts/tree/ParseTreeWalker":376}],240:[function(require,module,exports){
41683
42791
  "use strict";
41684
42792
  var __importDefault = (this && this.__importDefault) || function (mod) {
41685
42793
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -42273,7 +43381,7 @@ class TradutorReversoTenda {
42273
43381
  }
42274
43382
  exports.TradutorReversoTenda = TradutorReversoTenda;
42275
43383
 
42276
- },{"../construtos":62,"../tipos-de-simbolos/tenda":219}],240:[function(require,module,exports){
43384
+ },{"../construtos":62,"../tipos-de-simbolos/tenda":219}],241:[function(require,module,exports){
42277
43385
  "use strict";
42278
43386
  var __importDefault = (this && this.__importDefault) || function (mod) {
42279
43387
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -42961,7 +44069,7 @@ class TradutorRuby {
42961
44069
  }
42962
44070
  exports.TradutorRuby = TradutorRuby;
42963
44071
 
42964
- },{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212}],241:[function(require,module,exports){
44072
+ },{"../construtos":62,"../declaracoes":109,"../tipos-de-simbolos/delegua":212}],242:[function(require,module,exports){
42965
44073
  "use strict";
42966
44074
  /*!
42967
44075
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -42969,7 +44077,7 @@ exports.TradutorRuby = TradutorRuby;
42969
44077
  */
42970
44078
  Object.defineProperty(exports, "__esModule", { value: true });
42971
44079
 
42972
- },{}],242:[function(require,module,exports){
44080
+ },{}],243:[function(require,module,exports){
42973
44081
  "use strict";
42974
44082
  /*!
42975
44083
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -42977,7 +44085,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
42977
44085
  */
42978
44086
  Object.defineProperty(exports, "__esModule", { value: true });
42979
44087
 
42980
- },{}],243:[function(require,module,exports){
44088
+ },{}],244:[function(require,module,exports){
42981
44089
  "use strict";
42982
44090
  /*!
42983
44091
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -43139,7 +44247,7 @@ __decorate([
43139
44247
  ], ANTLRInputStream.prototype, "toString", null);
43140
44248
  exports.ANTLRInputStream = ANTLRInputStream;
43141
44249
 
43142
- },{"./Decorators":254,"./IntStream":260,"assert":397}],244:[function(require,module,exports){
44250
+ },{"./Decorators":255,"./IntStream":261,"assert":398}],245:[function(require,module,exports){
43143
44251
  "use strict";
43144
44252
  /*!
43145
44253
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -43222,7 +44330,7 @@ __decorate([
43222
44330
  ], BailErrorStrategy.prototype, "sync", null);
43223
44331
  exports.BailErrorStrategy = BailErrorStrategy;
43224
44332
 
43225
- },{"./Decorators":254,"./DefaultErrorStrategy":255,"./InputMismatchException":259,"./misc/ParseCancellationException":371}],245:[function(require,module,exports){
44333
+ },{"./Decorators":255,"./DefaultErrorStrategy":256,"./InputMismatchException":260,"./misc/ParseCancellationException":372}],246:[function(require,module,exports){
43226
44334
  "use strict";
43227
44335
  /*!
43228
44336
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -43712,7 +44820,7 @@ BufferedTokenStream = __decorate([
43712
44820
  ], BufferedTokenStream);
43713
44821
  exports.BufferedTokenStream = BufferedTokenStream;
43714
44822
 
43715
- },{"./CommonToken":250,"./Decorators":254,"./Lexer":262,"./Token":279,"./misc/Interval":366,"assert":397}],246:[function(require,module,exports){
44823
+ },{"./CommonToken":251,"./Decorators":255,"./Lexer":263,"./Token":280,"./misc/Interval":367,"assert":398}],247:[function(require,module,exports){
43716
44824
  "use strict";
43717
44825
  /*!
43718
44826
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -43720,7 +44828,7 @@ exports.BufferedTokenStream = BufferedTokenStream;
43720
44828
  */
43721
44829
  Object.defineProperty(exports, "__esModule", { value: true });
43722
44830
 
43723
- },{}],247:[function(require,module,exports){
44831
+ },{}],248:[function(require,module,exports){
43724
44832
  "use strict";
43725
44833
  /*!
43726
44834
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -43854,7 +44962,7 @@ var CharStreams;
43854
44962
  // }
43855
44963
  })(CharStreams = exports.CharStreams || (exports.CharStreams = {}));
43856
44964
 
43857
- },{"./CodePointBuffer":248,"./CodePointCharStream":249,"./IntStream":260}],248:[function(require,module,exports){
44965
+ },{"./CodePointBuffer":249,"./CodePointCharStream":250,"./IntStream":261}],249:[function(require,module,exports){
43858
44966
  "use strict";
43859
44967
  /*!
43860
44968
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44089,7 +45197,7 @@ exports.CodePointBuffer = CodePointBuffer;
44089
45197
  CodePointBuffer.Builder = Builder;
44090
45198
  })(CodePointBuffer = exports.CodePointBuffer || (exports.CodePointBuffer = {}));
44091
45199
 
44092
- },{"./misc/Character":362,"assert":397}],249:[function(require,module,exports){
45200
+ },{"./misc/Character":363,"assert":398}],250:[function(require,module,exports){
44093
45201
  "use strict";
44094
45202
  /*!
44095
45203
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44239,7 +45347,7 @@ __decorate([
44239
45347
  ], CodePointCharStream.prototype, "getText", null);
44240
45348
  exports.CodePointCharStream = CodePointCharStream;
44241
45349
 
44242
- },{"./Decorators":254,"./IntStream":260,"./misc/Interval":366,"assert":397}],250:[function(require,module,exports){
45350
+ },{"./Decorators":255,"./IntStream":261,"./misc/Interval":367,"assert":398}],251:[function(require,module,exports){
44243
45351
  "use strict";
44244
45352
  /*!
44245
45353
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44469,7 +45577,7 @@ CommonToken = __decorate([
44469
45577
  ], CommonToken);
44470
45578
  exports.CommonToken = CommonToken;
44471
45579
 
44472
- },{"./Decorators":254,"./Token":279,"./misc/Interval":366}],251:[function(require,module,exports){
45580
+ },{"./Decorators":255,"./Token":280,"./misc/Interval":367}],252:[function(require,module,exports){
44473
45581
  "use strict";
44474
45582
  /*!
44475
45583
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44533,7 +45641,7 @@ exports.CommonTokenFactory = CommonTokenFactory;
44533
45641
  CommonTokenFactory.DEFAULT = new CommonTokenFactory();
44534
45642
  })(CommonTokenFactory = exports.CommonTokenFactory || (exports.CommonTokenFactory = {}));
44535
45643
 
44536
- },{"./CommonToken":250,"./Decorators":254,"./misc/Interval":366}],252:[function(require,module,exports){
45644
+ },{"./CommonToken":251,"./Decorators":255,"./misc/Interval":367}],253:[function(require,module,exports){
44537
45645
  "use strict";
44538
45646
  /*!
44539
45647
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44660,7 +45768,7 @@ CommonTokenStream = __decorate([
44660
45768
  ], CommonTokenStream);
44661
45769
  exports.CommonTokenStream = CommonTokenStream;
44662
45770
 
44663
- },{"./BufferedTokenStream":245,"./Decorators":254,"./Token":279}],253:[function(require,module,exports){
45771
+ },{"./BufferedTokenStream":246,"./Decorators":255,"./Token":280}],254:[function(require,module,exports){
44664
45772
  "use strict";
44665
45773
  /*!
44666
45774
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44694,7 +45802,7 @@ exports.ConsoleErrorListener = ConsoleErrorListener;
44694
45802
  */
44695
45803
  ConsoleErrorListener.INSTANCE = new ConsoleErrorListener();
44696
45804
 
44697
- },{}],254:[function(require,module,exports){
45805
+ },{}],255:[function(require,module,exports){
44698
45806
  "use strict";
44699
45807
  /*!
44700
45808
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -44721,7 +45829,7 @@ function SuppressWarnings(options) {
44721
45829
  }
44722
45830
  exports.SuppressWarnings = SuppressWarnings;
44723
45831
 
44724
- },{}],255:[function(require,module,exports){
45832
+ },{}],256:[function(require,module,exports){
44725
45833
  "use strict";
44726
45834
  /*!
44727
45835
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45535,7 +46643,7 @@ __decorate([
45535
46643
  ], DefaultErrorStrategy.prototype, "consumeUntil", null);
45536
46644
  exports.DefaultErrorStrategy = DefaultErrorStrategy;
45537
46645
 
45538
- },{"./Decorators":254,"./FailedPredicateException":258,"./InputMismatchException":259,"./NoViableAltException":266,"./Token":279,"./atn/ATNState":293,"./atn/ATNStateType":294,"./atn/PredictionContext":334,"./misc/IntervalSet":367}],256:[function(require,module,exports){
46646
+ },{"./Decorators":255,"./FailedPredicateException":259,"./InputMismatchException":260,"./NoViableAltException":267,"./Token":280,"./atn/ATNState":294,"./atn/ATNStateType":295,"./atn/PredictionContext":335,"./misc/IntervalSet":368}],257:[function(require,module,exports){
45539
46647
  "use strict";
45540
46648
  /*!
45541
46649
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45611,7 +46719,7 @@ var Dependents;
45611
46719
  Dependents[Dependents["FOLLOWING"] = 9] = "FOLLOWING";
45612
46720
  })(Dependents = exports.Dependents || (exports.Dependents = {}));
45613
46721
 
45614
- },{}],257:[function(require,module,exports){
46722
+ },{}],258:[function(require,module,exports){
45615
46723
  "use strict";
45616
46724
  /*!
45617
46725
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45759,7 +46867,7 @@ __decorate([
45759
46867
  ], DiagnosticErrorListener.prototype, "getConflictingAlts", null);
45760
46868
  exports.DiagnosticErrorListener = DiagnosticErrorListener;
45761
46869
 
45762
- },{"./Decorators":254,"./misc/BitSet":361,"./misc/Interval":366}],258:[function(require,module,exports){
46870
+ },{"./Decorators":255,"./misc/BitSet":362,"./misc/Interval":367}],259:[function(require,module,exports){
45763
46871
  "use strict";
45764
46872
  /*!
45765
46873
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45824,7 +46932,7 @@ FailedPredicateException = __decorate([
45824
46932
  ], FailedPredicateException);
45825
46933
  exports.FailedPredicateException = FailedPredicateException;
45826
46934
 
45827
- },{"./Decorators":254,"./RecognitionException":273,"./atn/PredicateTransition":333}],259:[function(require,module,exports){
46935
+ },{"./Decorators":255,"./RecognitionException":274,"./atn/PredicateTransition":334}],260:[function(require,module,exports){
45828
46936
  "use strict";
45829
46937
  /*!
45830
46938
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45864,7 +46972,7 @@ InputMismatchException = __decorate([
45864
46972
  ], InputMismatchException);
45865
46973
  exports.InputMismatchException = InputMismatchException;
45866
46974
 
45867
- },{"./Decorators":254,"./RecognitionException":273}],260:[function(require,module,exports){
46975
+ },{"./Decorators":255,"./RecognitionException":274}],261:[function(require,module,exports){
45868
46976
  "use strict";
45869
46977
  /*!
45870
46978
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45887,7 +46995,7 @@ var IntStream;
45887
46995
  IntStream.UNKNOWN_SOURCE_NAME = "<unknown>";
45888
46996
  })(IntStream = exports.IntStream || (exports.IntStream = {}));
45889
46997
 
45890
- },{}],261:[function(require,module,exports){
46998
+ },{}],262:[function(require,module,exports){
45891
46999
  "use strict";
45892
47000
  /*!
45893
47001
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -45934,7 +47042,7 @@ __decorate([
45934
47042
  ], InterpreterRuleContext.prototype, "ruleIndex", null);
45935
47043
  exports.InterpreterRuleContext = InterpreterRuleContext;
45936
47044
 
45937
- },{"./Decorators":254,"./ParserRuleContext":270}],262:[function(require,module,exports){
47045
+ },{"./Decorators":255,"./ParserRuleContext":271}],263:[function(require,module,exports){
45938
47046
  "use strict";
45939
47047
  /*!
45940
47048
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -46270,7 +47378,7 @@ __decorate([
46270
47378
  ], Lexer.prototype, "charPositionInLine", null);
46271
47379
  exports.Lexer = Lexer;
46272
47380
 
46273
- },{"./CommonTokenFactory":251,"./Decorators":254,"./IntStream":260,"./LexerNoViableAltException":264,"./Recognizer":274,"./Token":279,"./atn/LexerATNSimulator":312,"./misc/IntegerStack":365,"./misc/Interval":366}],263:[function(require,module,exports){
47381
+ },{"./CommonTokenFactory":252,"./Decorators":255,"./IntStream":261,"./LexerNoViableAltException":265,"./Recognizer":275,"./Token":280,"./atn/LexerATNSimulator":313,"./misc/IntegerStack":366,"./misc/Interval":367}],264:[function(require,module,exports){
46274
47382
  "use strict";
46275
47383
  /*!
46276
47384
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -46350,7 +47458,7 @@ LexerInterpreter = __decorate([
46350
47458
  ], LexerInterpreter);
46351
47459
  exports.LexerInterpreter = LexerInterpreter;
46352
47460
 
46353
- },{"./Decorators":254,"./Lexer":262,"./atn/LexerATNSimulator":312}],264:[function(require,module,exports){
47461
+ },{"./Decorators":255,"./Lexer":263,"./atn/LexerATNSimulator":313}],265:[function(require,module,exports){
46354
47462
  "use strict";
46355
47463
  /*!
46356
47464
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -46407,7 +47515,7 @@ LexerNoViableAltException = __decorate([
46407
47515
  ], LexerNoViableAltException);
46408
47516
  exports.LexerNoViableAltException = LexerNoViableAltException;
46409
47517
 
46410
- },{"./Decorators":254,"./RecognitionException":273,"./misc/Interval":366,"./misc/Utils":373}],265:[function(require,module,exports){
47518
+ },{"./Decorators":255,"./RecognitionException":274,"./misc/Interval":367,"./misc/Utils":374}],266:[function(require,module,exports){
46411
47519
  "use strict";
46412
47520
  /*!
46413
47521
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -46617,7 +47725,7 @@ ListTokenSource = __decorate([
46617
47725
  ], ListTokenSource);
46618
47726
  exports.ListTokenSource = ListTokenSource;
46619
47727
 
46620
- },{"./CommonTokenFactory":251,"./Decorators":254,"./Token":279}],266:[function(require,module,exports){
47728
+ },{"./CommonTokenFactory":252,"./Decorators":255,"./Token":280}],267:[function(require,module,exports){
46621
47729
  "use strict";
46622
47730
  /*!
46623
47731
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -46672,7 +47780,7 @@ __decorate([
46672
47780
  ], NoViableAltException.prototype, "_startToken", void 0);
46673
47781
  exports.NoViableAltException = NoViableAltException;
46674
47782
 
46675
- },{"./Decorators":254,"./Parser":267,"./RecognitionException":273}],267:[function(require,module,exports){
47783
+ },{"./Decorators":255,"./Parser":268,"./RecognitionException":274}],268:[function(require,module,exports){
46676
47784
  (function (process){(function (){
46677
47785
  "use strict";
46678
47786
  /*!
@@ -47518,7 +48626,7 @@ __decorate([
47518
48626
  exports.Parser = Parser;
47519
48627
 
47520
48628
  }).call(this)}).call(this,require('_process'))
47521
- },{"./Decorators":254,"./DefaultErrorStrategy":255,"./Lexer":262,"./ProxyParserErrorListener":272,"./Recognizer":274,"./Token":279,"./atn/ATNDeserializationOptions":290,"./atn/ATNDeserializer":291,"./atn/ParseInfo":327,"./atn/ParserATNSimulator":328,"./atn/ProfilingATNSimulator":337,"./misc/IntegerStack":365,"./misc/Utils":373,"./tree/ErrorNode":374,"./tree/TerminalNode":377,"./tree/pattern/ParseTreePatternMatcher":382,"_process":456}],268:[function(require,module,exports){
48629
+ },{"./Decorators":255,"./DefaultErrorStrategy":256,"./Lexer":263,"./ProxyParserErrorListener":273,"./Recognizer":275,"./Token":280,"./atn/ATNDeserializationOptions":291,"./atn/ATNDeserializer":292,"./atn/ParseInfo":328,"./atn/ParserATNSimulator":329,"./atn/ProfilingATNSimulator":338,"./misc/IntegerStack":366,"./misc/Utils":374,"./tree/ErrorNode":375,"./tree/TerminalNode":378,"./tree/pattern/ParseTreePatternMatcher":383,"_process":457}],269:[function(require,module,exports){
47522
48630
  "use strict";
47523
48631
  /*!
47524
48632
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -47526,7 +48634,7 @@ exports.Parser = Parser;
47526
48634
  */
47527
48635
  Object.defineProperty(exports, "__esModule", { value: true });
47528
48636
 
47529
- },{}],269:[function(require,module,exports){
48637
+ },{}],270:[function(require,module,exports){
47530
48638
  "use strict";
47531
48639
  /*!
47532
48640
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -47934,7 +49042,7 @@ ParserInterpreter = __decorate([
47934
49042
  ], ParserInterpreter);
47935
49043
  exports.ParserInterpreter = ParserInterpreter;
47936
49044
 
47937
- },{"./Decorators":254,"./FailedPredicateException":258,"./InputMismatchException":259,"./InterpreterRuleContext":261,"./Parser":267,"./RecognitionException":273,"./Token":279,"./atn/ATNState":293,"./atn/ATNStateType":294,"./atn/LoopEndState":324,"./atn/ParserATNSimulator":328,"./atn/StarLoopEntryState":346,"./misc/BitSet":361}],270:[function(require,module,exports){
49045
+ },{"./Decorators":255,"./FailedPredicateException":259,"./InputMismatchException":260,"./InterpreterRuleContext":262,"./Parser":268,"./RecognitionException":274,"./Token":280,"./atn/ATNState":294,"./atn/ATNStateType":295,"./atn/LoopEndState":325,"./atn/ParserATNSimulator":329,"./atn/StarLoopEntryState":347,"./misc/BitSet":362}],271:[function(require,module,exports){
47938
49046
  "use strict";
47939
49047
  /*!
47940
49048
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48235,7 +49343,7 @@ __decorate([
48235
49343
  ], ParserRuleContext.prototype, "sourceInterval", null);
48236
49344
  exports.ParserRuleContext = ParserRuleContext;
48237
49345
 
48238
- },{"./Decorators":254,"./RuleContext":275,"./misc/Interval":366,"./tree/ErrorNode":374,"./tree/TerminalNode":377}],271:[function(require,module,exports){
49346
+ },{"./Decorators":255,"./RuleContext":276,"./misc/Interval":367,"./tree/ErrorNode":375,"./tree/TerminalNode":378}],272:[function(require,module,exports){
48239
49347
  "use strict";
48240
49348
  /*!
48241
49349
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48285,7 +49393,7 @@ __decorate([
48285
49393
  ], ProxyErrorListener.prototype, "syntaxError", null);
48286
49394
  exports.ProxyErrorListener = ProxyErrorListener;
48287
49395
 
48288
- },{"./Decorators":254}],272:[function(require,module,exports){
49396
+ },{"./Decorators":255}],273:[function(require,module,exports){
48289
49397
  "use strict";
48290
49398
  /*!
48291
49399
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48344,7 +49452,7 @@ __decorate([
48344
49452
  ], ProxyParserErrorListener.prototype, "reportContextSensitivity", null);
48345
49453
  exports.ProxyParserErrorListener = ProxyParserErrorListener;
48346
49454
 
48347
- },{"./Decorators":254,"./ProxyErrorListener":271}],273:[function(require,module,exports){
49455
+ },{"./Decorators":255,"./ProxyErrorListener":272}],274:[function(require,module,exports){
48348
49456
  "use strict";
48349
49457
  /*!
48350
49458
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48449,7 +49557,7 @@ class RecognitionException extends Error {
48449
49557
  }
48450
49558
  exports.RecognitionException = RecognitionException;
48451
49559
 
48452
- },{}],274:[function(require,module,exports){
49560
+ },{}],275:[function(require,module,exports){
48453
49561
  "use strict";
48454
49562
  /*!
48455
49563
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48668,7 +49776,7 @@ __decorate([
48668
49776
  ], Recognizer.prototype, "getErrorListeners", null);
48669
49777
  exports.Recognizer = Recognizer;
48670
49778
 
48671
- },{"./ConsoleErrorListener":253,"./Decorators":254,"./ProxyErrorListener":271,"./Token":279,"./misc/Utils":373}],275:[function(require,module,exports){
49779
+ },{"./ConsoleErrorListener":254,"./Decorators":255,"./ProxyErrorListener":272,"./Token":280,"./misc/Utils":374}],276:[function(require,module,exports){
48672
49780
  "use strict";
48673
49781
  /*!
48674
49782
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48885,7 +49993,7 @@ __decorate([
48885
49993
  ], RuleContext.prototype, "toStringTree", null);
48886
49994
  exports.RuleContext = RuleContext;
48887
49995
 
48888
- },{"./Decorators":254,"./ParserRuleContext":270,"./Recognizer":274,"./atn/ATN":287,"./misc/Interval":366,"./tree/RuleNode":376,"./tree/Trees":378}],276:[function(require,module,exports){
49996
+ },{"./Decorators":255,"./ParserRuleContext":271,"./Recognizer":275,"./atn/ATN":288,"./misc/Interval":367,"./tree/RuleNode":377,"./tree/Trees":379}],277:[function(require,module,exports){
48889
49997
  "use strict";
48890
49998
  /*!
48891
49999
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48936,7 +50044,7 @@ __decorate([
48936
50044
  ], RuleContextWithAltNum.prototype, "altNumber", null);
48937
50045
  exports.RuleContextWithAltNum = RuleContextWithAltNum;
48938
50046
 
48939
- },{"./Decorators":254,"./ParserRuleContext":270,"./atn/ATN":287}],277:[function(require,module,exports){
50047
+ },{"./Decorators":255,"./ParserRuleContext":271,"./atn/ATN":288}],278:[function(require,module,exports){
48940
50048
  "use strict";
48941
50049
  /*!
48942
50050
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48959,7 +50067,7 @@ function RuleDependency(dependency) {
48959
50067
  }
48960
50068
  exports.RuleDependency = RuleDependency;
48961
50069
 
48962
- },{}],278:[function(require,module,exports){
50070
+ },{}],279:[function(require,module,exports){
48963
50071
  "use strict";
48964
50072
  /*!
48965
50073
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -48978,7 +50086,7 @@ function RuleVersion(version) {
48978
50086
  }
48979
50087
  exports.RuleVersion = RuleVersion;
48980
50088
 
48981
- },{}],279:[function(require,module,exports){
50089
+ },{}],280:[function(require,module,exports){
48982
50090
  "use strict";
48983
50091
  /*!
48984
50092
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49018,7 +50126,7 @@ var Token;
49018
50126
  Token.MIN_USER_CHANNEL_VALUE = 2;
49019
50127
  })(Token = exports.Token || (exports.Token = {}));
49020
50128
 
49021
- },{"./IntStream":260}],280:[function(require,module,exports){
50129
+ },{"./IntStream":261}],281:[function(require,module,exports){
49022
50130
  "use strict";
49023
50131
  /*!
49024
50132
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49026,7 +50134,7 @@ var Token;
49026
50134
  */
49027
50135
  Object.defineProperty(exports, "__esModule", { value: true });
49028
50136
 
49029
- },{}],281:[function(require,module,exports){
50137
+ },{}],282:[function(require,module,exports){
49030
50138
  "use strict";
49031
50139
  /*!
49032
50140
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49034,7 +50142,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
49034
50142
  */
49035
50143
  Object.defineProperty(exports, "__esModule", { value: true });
49036
50144
 
49037
- },{}],282:[function(require,module,exports){
50145
+ },{}],283:[function(require,module,exports){
49038
50146
  "use strict";
49039
50147
  /*!
49040
50148
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49042,7 +50150,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
49042
50150
  */
49043
50151
  Object.defineProperty(exports, "__esModule", { value: true });
49044
50152
 
49045
- },{}],283:[function(require,module,exports){
50153
+ },{}],284:[function(require,module,exports){
49046
50154
  "use strict";
49047
50155
  /*!
49048
50156
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49550,7 +50658,7 @@ __decorate([
49550
50658
  Decorators_1.Override
49551
50659
  ], ReplaceOp.prototype, "toString", null);
49552
50660
 
49553
- },{"./Decorators":254,"./Token":279,"./misc/Interval":366}],284:[function(require,module,exports){
50661
+ },{"./Decorators":255,"./Token":280,"./misc/Interval":367}],285:[function(require,module,exports){
49554
50662
  "use strict";
49555
50663
  /*!
49556
50664
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49558,7 +50666,7 @@ __decorate([
49558
50666
  */
49559
50667
  Object.defineProperty(exports, "__esModule", { value: true });
49560
50668
 
49561
- },{}],285:[function(require,module,exports){
50669
+ },{}],286:[function(require,module,exports){
49562
50670
  "use strict";
49563
50671
  /*!
49564
50672
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49678,7 +50786,7 @@ __decorate([
49678
50786
  ], VocabularyImpl, "EMPTY_VOCABULARY", void 0);
49679
50787
  exports.VocabularyImpl = VocabularyImpl;
49680
50788
 
49681
- },{"./Decorators":254,"./Token":279}],286:[function(require,module,exports){
50789
+ },{"./Decorators":255,"./Token":280}],287:[function(require,module,exports){
49682
50790
  "use strict";
49683
50791
  /*!
49684
50792
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49686,7 +50794,7 @@ exports.VocabularyImpl = VocabularyImpl;
49686
50794
  */
49687
50795
  Object.defineProperty(exports, "__esModule", { value: true });
49688
50796
 
49689
- },{}],287:[function(require,module,exports){
50797
+ },{}],288:[function(require,module,exports){
49690
50798
  "use strict";
49691
50799
  /*!
49692
50800
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -49908,7 +51016,7 @@ exports.ATN = ATN;
49908
51016
  })(ATN = exports.ATN || (exports.ATN = {}));
49909
51017
  exports.ATN = ATN;
49910
51018
 
49911
- },{"../Decorators":254,"../Token":279,"../dfa/DFA":352,"../misc/Array2DHashMap":357,"../misc/IntervalSet":367,"../misc/ObjectEqualityComparator":370,"./InvalidState":310,"./LL1Analyzer":311,"./PredictionContext":334,"assert":397}],288:[function(require,module,exports){
51019
+ },{"../Decorators":255,"../Token":280,"../dfa/DFA":353,"../misc/Array2DHashMap":358,"../misc/IntervalSet":368,"../misc/ObjectEqualityComparator":371,"./InvalidState":311,"./LL1Analyzer":312,"./PredictionContext":335,"assert":398}],289:[function(require,module,exports){
49912
51020
  "use strict";
49913
51021
  /*!
49914
51022
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -50433,7 +51541,7 @@ ActionSemanticContextATNConfig = __decorate([
50433
51541
  __param(1, Decorators_1.NotNull), __param(2, Decorators_1.NotNull)
50434
51542
  ], ActionSemanticContextATNConfig);
50435
51543
 
50436
- },{"../Decorators":254,"../misc/Array2DHashMap":357,"../misc/MurmurHash":369,"../misc/ObjectEqualityComparator":370,"./DecisionState":307,"./PredictionContext":334,"./SemanticContext":342,"assert":397}],289:[function(require,module,exports){
51544
+ },{"../Decorators":255,"../misc/Array2DHashMap":358,"../misc/MurmurHash":370,"../misc/ObjectEqualityComparator":371,"./DecisionState":308,"./PredictionContext":335,"./SemanticContext":343,"assert":398}],290:[function(require,module,exports){
50437
51545
  "use strict";
50438
51546
  /*!
50439
51547
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -50880,7 +51988,7 @@ __decorate([
50880
51988
  ], ATNConfigSet.prototype, "hashCode", null);
50881
51989
  exports.ATNConfigSet = ATNConfigSet;
50882
51990
 
50883
- },{"../Decorators":254,"../misc/Array2DHashMap":357,"../misc/Array2DHashSet":358,"../misc/ArrayEqualityComparator":359,"../misc/BitSet":361,"../misc/ObjectEqualityComparator":370,"../misc/Utils":373,"./ATN":287,"./ATNConfig":288,"./PredictionContext":334,"./PredictionContextCache":335,"./SemanticContext":342,"assert":397}],290:[function(require,module,exports){
51991
+ },{"../Decorators":255,"../misc/Array2DHashMap":358,"../misc/Array2DHashSet":359,"../misc/ArrayEqualityComparator":360,"../misc/BitSet":362,"../misc/ObjectEqualityComparator":371,"../misc/Utils":374,"./ATN":288,"./ATNConfig":289,"./PredictionContext":335,"./PredictionContextCache":336,"./SemanticContext":343,"assert":398}],291:[function(require,module,exports){
50884
51992
  "use strict";
50885
51993
  /*!
50886
51994
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -50959,7 +52067,7 @@ __decorate([
50959
52067
  ], ATNDeserializationOptions, "defaultOptions", null);
50960
52068
  exports.ATNDeserializationOptions = ATNDeserializationOptions;
50961
52069
 
50962
- },{"../Decorators":254}],291:[function(require,module,exports){
52070
+ },{"../Decorators":255}],292:[function(require,module,exports){
50963
52071
  "use strict";
50964
52072
  /*!
50965
52073
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52046,7 +53154,7 @@ __decorate([
52046
53154
  ], ATNDeserializer.prototype, "edgeFactory", null);
52047
53155
  exports.ATNDeserializer = ATNDeserializer;
52048
53156
 
52049
- },{"../Decorators":254,"../Token":279,"../dfa/DFA":352,"../misc/Array2DHashSet":358,"../misc/BitSet":361,"../misc/IntervalSet":367,"../misc/UUID":372,"./ATN":287,"./ATNDeserializationOptions":290,"./ATNStateType":294,"./ActionTransition":296,"./AtomTransition":298,"./BasicBlockStartState":299,"./BasicState":300,"./BlockEndState":301,"./BlockStartState":302,"./DecisionState":307,"./EpsilonTransition":308,"./InvalidState":310,"./LexerChannelAction":314,"./LexerCustomAction":315,"./LexerModeAction":317,"./LexerMoreAction":318,"./LexerPopModeAction":319,"./LexerPushModeAction":320,"./LexerSkipAction":321,"./LexerTypeAction":322,"./LoopEndState":324,"./NotSetTransition":325,"./ParserATNSimulator":328,"./PlusBlockStartState":329,"./PlusLoopbackState":330,"./PrecedencePredicateTransition":331,"./PredicateTransition":333,"./RangeTransition":338,"./RuleStartState":339,"./RuleStopState":340,"./RuleTransition":341,"./SetTransition":343,"./StarBlockStartState":345,"./StarLoopEntryState":346,"./StarLoopbackState":347,"./TokensStartState":348,"./WildcardTransition":350}],292:[function(require,module,exports){
53157
+ },{"../Decorators":255,"../Token":280,"../dfa/DFA":353,"../misc/Array2DHashSet":359,"../misc/BitSet":362,"../misc/IntervalSet":368,"../misc/UUID":373,"./ATN":288,"./ATNDeserializationOptions":291,"./ATNStateType":295,"./ActionTransition":297,"./AtomTransition":299,"./BasicBlockStartState":300,"./BasicState":301,"./BlockEndState":302,"./BlockStartState":303,"./DecisionState":308,"./EpsilonTransition":309,"./InvalidState":311,"./LexerChannelAction":315,"./LexerCustomAction":316,"./LexerModeAction":318,"./LexerMoreAction":319,"./LexerPopModeAction":320,"./LexerPushModeAction":321,"./LexerSkipAction":322,"./LexerTypeAction":323,"./LoopEndState":325,"./NotSetTransition":326,"./ParserATNSimulator":329,"./PlusBlockStartState":330,"./PlusLoopbackState":331,"./PrecedencePredicateTransition":332,"./PredicateTransition":334,"./RangeTransition":339,"./RuleStartState":340,"./RuleStopState":341,"./RuleTransition":342,"./SetTransition":344,"./StarBlockStartState":346,"./StarLoopEntryState":347,"./StarLoopbackState":348,"./TokensStartState":349,"./WildcardTransition":351}],293:[function(require,module,exports){
52050
53158
  "use strict";
52051
53159
  /*!
52052
53160
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52110,7 +53218,7 @@ exports.ATNSimulator = ATNSimulator;
52110
53218
  })(ATNSimulator = exports.ATNSimulator || (exports.ATNSimulator = {}));
52111
53219
  exports.ATNSimulator = ATNSimulator;
52112
53220
 
52113
- },{"../Decorators":254,"../dfa/DFAState":354,"./ATNConfigSet":289,"./PredictionContext":334}],293:[function(require,module,exports){
53221
+ },{"../Decorators":255,"../dfa/DFAState":355,"./ATNConfigSet":290,"./PredictionContext":335}],294:[function(require,module,exports){
52114
53222
  "use strict";
52115
53223
  /*!
52116
53224
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52297,7 +53405,7 @@ exports.ATNState = ATNState;
52297
53405
  ATNState.INVALID_STATE_NUMBER = -1;
52298
53406
  })(ATNState = exports.ATNState || (exports.ATNState = {}));
52299
53407
 
52300
- },{"../Decorators":254}],294:[function(require,module,exports){
53408
+ },{"../Decorators":255}],295:[function(require,module,exports){
52301
53409
  "use strict";
52302
53410
  /*!
52303
53411
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52323,7 +53431,7 @@ var ATNStateType;
52323
53431
  ATNStateType[ATNStateType["LOOP_END"] = 12] = "LOOP_END";
52324
53432
  })(ATNStateType = exports.ATNStateType || (exports.ATNStateType = {}));
52325
53433
 
52326
- },{}],295:[function(require,module,exports){
53434
+ },{}],296:[function(require,module,exports){
52327
53435
  "use strict";
52328
53436
  /*!
52329
53437
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52343,7 +53451,7 @@ class AbstractPredicateTransition extends Transition_1.Transition {
52343
53451
  }
52344
53452
  exports.AbstractPredicateTransition = AbstractPredicateTransition;
52345
53453
 
52346
- },{"./Transition":349}],296:[function(require,module,exports){
53454
+ },{"./Transition":350}],297:[function(require,module,exports){
52347
53455
  "use strict";
52348
53456
  /*!
52349
53457
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52399,7 +53507,7 @@ ActionTransition = __decorate([
52399
53507
  ], ActionTransition);
52400
53508
  exports.ActionTransition = ActionTransition;
52401
53509
 
52402
- },{"../Decorators":254,"./Transition":349}],297:[function(require,module,exports){
53510
+ },{"../Decorators":255,"./Transition":350}],298:[function(require,module,exports){
52403
53511
  "use strict";
52404
53512
  /*!
52405
53513
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52486,7 +53594,7 @@ AmbiguityInfo = __decorate([
52486
53594
  ], AmbiguityInfo);
52487
53595
  exports.AmbiguityInfo = AmbiguityInfo;
52488
53596
 
52489
- },{"../Decorators":254,"./DecisionEventInfo":305}],298:[function(require,module,exports){
53597
+ },{"../Decorators":255,"./DecisionEventInfo":306}],299:[function(require,module,exports){
52490
53598
  "use strict";
52491
53599
  /*!
52492
53600
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52544,7 +53652,7 @@ AtomTransition = __decorate([
52544
53652
  ], AtomTransition);
52545
53653
  exports.AtomTransition = AtomTransition;
52546
53654
 
52547
- },{"../Decorators":254,"../misc/IntervalSet":367,"./Transition":349}],299:[function(require,module,exports){
53655
+ },{"../Decorators":255,"../misc/IntervalSet":368,"./Transition":350}],300:[function(require,module,exports){
52548
53656
  "use strict";
52549
53657
  /*!
52550
53658
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52576,7 +53684,7 @@ __decorate([
52576
53684
  ], BasicBlockStartState.prototype, "stateType", null);
52577
53685
  exports.BasicBlockStartState = BasicBlockStartState;
52578
53686
 
52579
- },{"../Decorators":254,"./ATNStateType":294,"./BlockStartState":302}],300:[function(require,module,exports){
53687
+ },{"../Decorators":255,"./ATNStateType":295,"./BlockStartState":303}],301:[function(require,module,exports){
52580
53688
  "use strict";
52581
53689
  /*!
52582
53690
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52608,7 +53716,7 @@ __decorate([
52608
53716
  ], BasicState.prototype, "stateType", null);
52609
53717
  exports.BasicState = BasicState;
52610
53718
 
52611
- },{"../Decorators":254,"./ATNState":293,"./ATNStateType":294}],301:[function(require,module,exports){
53719
+ },{"../Decorators":255,"./ATNState":294,"./ATNStateType":295}],302:[function(require,module,exports){
52612
53720
  "use strict";
52613
53721
  /*!
52614
53722
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52637,7 +53745,7 @@ __decorate([
52637
53745
  ], BlockEndState.prototype, "stateType", null);
52638
53746
  exports.BlockEndState = BlockEndState;
52639
53747
 
52640
- },{"../Decorators":254,"./ATNState":293,"./ATNStateType":294}],302:[function(require,module,exports){
53748
+ },{"../Decorators":255,"./ATNState":294,"./ATNStateType":295}],303:[function(require,module,exports){
52641
53749
  "use strict";
52642
53750
  /*!
52643
53751
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52651,7 +53759,7 @@ class BlockStartState extends DecisionState_1.DecisionState {
52651
53759
  }
52652
53760
  exports.BlockStartState = BlockStartState;
52653
53761
 
52654
- },{"./DecisionState":307}],303:[function(require,module,exports){
53762
+ },{"./DecisionState":308}],304:[function(require,module,exports){
52655
53763
  "use strict";
52656
53764
  /*!
52657
53765
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52721,7 +53829,7 @@ __decorate([
52721
53829
  ], ConflictInfo.prototype, "hashCode", null);
52722
53830
  exports.ConflictInfo = ConflictInfo;
52723
53831
 
52724
- },{"../Decorators":254,"../misc/Utils":373}],304:[function(require,module,exports){
53832
+ },{"../Decorators":255,"../misc/Utils":374}],305:[function(require,module,exports){
52725
53833
  "use strict";
52726
53834
  /*!
52727
53835
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52781,7 +53889,7 @@ ContextSensitivityInfo = __decorate([
52781
53889
  ], ContextSensitivityInfo);
52782
53890
  exports.ContextSensitivityInfo = ContextSensitivityInfo;
52783
53891
 
52784
- },{"../Decorators":254,"./DecisionEventInfo":305}],305:[function(require,module,exports){
53892
+ },{"../Decorators":255,"./DecisionEventInfo":306}],306:[function(require,module,exports){
52785
53893
  "use strict";
52786
53894
  /*!
52787
53895
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -52833,7 +53941,7 @@ DecisionEventInfo = __decorate([
52833
53941
  ], DecisionEventInfo);
52834
53942
  exports.DecisionEventInfo = DecisionEventInfo;
52835
53943
 
52836
- },{"../Decorators":254}],306:[function(require,module,exports){
53944
+ },{"../Decorators":255}],307:[function(require,module,exports){
52837
53945
  "use strict";
52838
53946
  /*!
52839
53947
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -53046,7 +54154,7 @@ __decorate([
53046
54154
  ], DecisionInfo.prototype, "toString", null);
53047
54155
  exports.DecisionInfo = DecisionInfo;
53048
54156
 
53049
- },{"../Decorators":254}],307:[function(require,module,exports){
54157
+ },{"../Decorators":255}],308:[function(require,module,exports){
53050
54158
  "use strict";
53051
54159
  /*!
53052
54160
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -53066,7 +54174,7 @@ class DecisionState extends ATNState_1.ATNState {
53066
54174
  }
53067
54175
  exports.DecisionState = DecisionState;
53068
54176
 
53069
- },{"./ATNState":293}],308:[function(require,module,exports){
54177
+ },{"./ATNState":294}],309:[function(require,module,exports){
53070
54178
  "use strict";
53071
54179
  /*!
53072
54180
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -53132,7 +54240,7 @@ EpsilonTransition = __decorate([
53132
54240
  ], EpsilonTransition);
53133
54241
  exports.EpsilonTransition = EpsilonTransition;
53134
54242
 
53135
- },{"../Decorators":254,"./Transition":349}],309:[function(require,module,exports){
54243
+ },{"../Decorators":255,"./Transition":350}],310:[function(require,module,exports){
53136
54244
  "use strict";
53137
54245
  /*!
53138
54246
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -53185,7 +54293,7 @@ ErrorInfo = __decorate([
53185
54293
  ], ErrorInfo);
53186
54294
  exports.ErrorInfo = ErrorInfo;
53187
54295
 
53188
- },{"../Decorators":254,"./DecisionEventInfo":305}],310:[function(require,module,exports){
54296
+ },{"../Decorators":255,"./DecisionEventInfo":306}],311:[function(require,module,exports){
53189
54297
  "use strict";
53190
54298
  /*!
53191
54299
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -53216,7 +54324,7 @@ __decorate([
53216
54324
  ], InvalidState.prototype, "stateType", null);
53217
54325
  exports.InvalidState = InvalidState;
53218
54326
 
53219
- },{"../Decorators":254,"./ATNStateType":294,"./BasicState":300}],311:[function(require,module,exports){
54327
+ },{"../Decorators":255,"./ATNStateType":295,"./BasicState":301}],312:[function(require,module,exports){
53220
54328
  "use strict";
53221
54329
  /*!
53222
54330
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -53438,7 +54546,7 @@ LL1Analyzer = __decorate([
53438
54546
  ], LL1Analyzer);
53439
54547
  exports.LL1Analyzer = LL1Analyzer;
53440
54548
 
53441
- },{"../Decorators":254,"../Token":279,"../misc/Array2DHashSet":358,"../misc/BitSet":361,"../misc/IntervalSet":367,"../misc/ObjectEqualityComparator":370,"./ATNConfig":288,"./AbstractPredicateTransition":295,"./NotSetTransition":325,"./PredictionContext":334,"./RuleStopState":340,"./RuleTransition":341,"./WildcardTransition":350}],312:[function(require,module,exports){
54549
+ },{"../Decorators":255,"../Token":280,"../misc/Array2DHashSet":359,"../misc/BitSet":362,"../misc/IntervalSet":368,"../misc/ObjectEqualityComparator":371,"./ATNConfig":289,"./AbstractPredicateTransition":296,"./NotSetTransition":326,"./PredictionContext":335,"./RuleStopState":341,"./RuleTransition":342,"./WildcardTransition":351}],313:[function(require,module,exports){
53442
54550
  "use strict";
53443
54551
  /*!
53444
54552
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54155,7 +55263,7 @@ exports.LexerATNSimulator = LexerATNSimulator;
54155
55263
  })(LexerATNSimulator = exports.LexerATNSimulator || (exports.LexerATNSimulator = {}));
54156
55264
  exports.LexerATNSimulator = LexerATNSimulator;
54157
55265
 
54158
- },{"../Decorators":254,"../IntStream":260,"../Lexer":262,"../LexerNoViableAltException":264,"../Token":279,"../dfa/AcceptStateInfo":351,"../dfa/DFAState":354,"../misc/Interval":366,"./ATN":287,"./ATNConfig":288,"./ATNConfigSet":289,"./ATNSimulator":292,"./LexerActionExecutor":313,"./OrderedATNConfigSet":326,"./PredictionContext":334,"./RuleStopState":340,"assert":397}],313:[function(require,module,exports){
55266
+ },{"../Decorators":255,"../IntStream":261,"../Lexer":263,"../LexerNoViableAltException":265,"../Token":280,"../dfa/AcceptStateInfo":352,"../dfa/DFAState":355,"../misc/Interval":367,"./ATN":288,"./ATNConfig":289,"./ATNConfigSet":290,"./ATNSimulator":293,"./LexerActionExecutor":314,"./OrderedATNConfigSet":327,"./PredictionContext":335,"./RuleStopState":341,"assert":398}],314:[function(require,module,exports){
54159
55267
  "use strict";
54160
55268
  /*!
54161
55269
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54356,7 +55464,7 @@ LexerActionExecutor = __decorate([
54356
55464
  ], LexerActionExecutor);
54357
55465
  exports.LexerActionExecutor = LexerActionExecutor;
54358
55466
 
54359
- },{"../Decorators":254,"../misc/ArrayEqualityComparator":359,"../misc/MurmurHash":369,"./LexerIndexedCustomAction":316}],314:[function(require,module,exports){
55467
+ },{"../Decorators":255,"../misc/ArrayEqualityComparator":360,"../misc/MurmurHash":370,"./LexerIndexedCustomAction":317}],315:[function(require,module,exports){
54360
55468
  "use strict";
54361
55469
  /*!
54362
55470
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54461,7 +55569,7 @@ __decorate([
54461
55569
  ], LexerChannelAction.prototype, "toString", null);
54462
55570
  exports.LexerChannelAction = LexerChannelAction;
54463
55571
 
54464
- },{"../Decorators":254,"../misc/MurmurHash":369}],315:[function(require,module,exports){
55572
+ },{"../Decorators":255,"../misc/MurmurHash":370}],316:[function(require,module,exports){
54465
55573
  "use strict";
54466
55574
  /*!
54467
55575
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54590,7 +55698,7 @@ __decorate([
54590
55698
  ], LexerCustomAction.prototype, "equals", null);
54591
55699
  exports.LexerCustomAction = LexerCustomAction;
54592
55700
 
54593
- },{"../Decorators":254,"../misc/MurmurHash":369}],316:[function(require,module,exports){
55701
+ },{"../Decorators":255,"../misc/MurmurHash":370}],317:[function(require,module,exports){
54594
55702
  "use strict";
54595
55703
  /*!
54596
55704
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54725,7 +55833,7 @@ LexerIndexedCustomAction = __decorate([
54725
55833
  ], LexerIndexedCustomAction);
54726
55834
  exports.LexerIndexedCustomAction = LexerIndexedCustomAction;
54727
55835
 
54728
- },{"../Decorators":254,"../misc/MurmurHash":369}],317:[function(require,module,exports){
55836
+ },{"../Decorators":255,"../misc/MurmurHash":370}],318:[function(require,module,exports){
54729
55837
  "use strict";
54730
55838
  /*!
54731
55839
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54830,7 +55938,7 @@ __decorate([
54830
55938
  ], LexerModeAction.prototype, "toString", null);
54831
55939
  exports.LexerModeAction = LexerModeAction;
54832
55940
 
54833
- },{"../Decorators":254,"../misc/MurmurHash":369}],318:[function(require,module,exports){
55941
+ },{"../Decorators":255,"../misc/MurmurHash":370}],319:[function(require,module,exports){
54834
55942
  "use strict";
54835
55943
  /*!
54836
55944
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -54926,7 +56034,7 @@ exports.LexerMoreAction = LexerMoreAction;
54926
56034
  LexerMoreAction.INSTANCE = new LexerMoreAction();
54927
56035
  })(LexerMoreAction = exports.LexerMoreAction || (exports.LexerMoreAction = {}));
54928
56036
 
54929
- },{"../Decorators":254,"../misc/MurmurHash":369}],319:[function(require,module,exports){
56037
+ },{"../Decorators":255,"../misc/MurmurHash":370}],320:[function(require,module,exports){
54930
56038
  "use strict";
54931
56039
  /*!
54932
56040
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55022,7 +56130,7 @@ exports.LexerPopModeAction = LexerPopModeAction;
55022
56130
  LexerPopModeAction.INSTANCE = new LexerPopModeAction();
55023
56131
  })(LexerPopModeAction = exports.LexerPopModeAction || (exports.LexerPopModeAction = {}));
55024
56132
 
55025
- },{"../Decorators":254,"../misc/MurmurHash":369}],320:[function(require,module,exports){
56133
+ },{"../Decorators":255,"../misc/MurmurHash":370}],321:[function(require,module,exports){
55026
56134
  "use strict";
55027
56135
  /*!
55028
56136
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55127,7 +56235,7 @@ __decorate([
55127
56235
  ], LexerPushModeAction.prototype, "toString", null);
55128
56236
  exports.LexerPushModeAction = LexerPushModeAction;
55129
56237
 
55130
- },{"../Decorators":254,"../misc/MurmurHash":369}],321:[function(require,module,exports){
56238
+ },{"../Decorators":255,"../misc/MurmurHash":370}],322:[function(require,module,exports){
55131
56239
  "use strict";
55132
56240
  /*!
55133
56241
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55223,7 +56331,7 @@ exports.LexerSkipAction = LexerSkipAction;
55223
56331
  LexerSkipAction.INSTANCE = new LexerSkipAction();
55224
56332
  })(LexerSkipAction = exports.LexerSkipAction || (exports.LexerSkipAction = {}));
55225
56333
 
55226
- },{"../Decorators":254,"../misc/MurmurHash":369}],322:[function(require,module,exports){
56334
+ },{"../Decorators":255,"../misc/MurmurHash":370}],323:[function(require,module,exports){
55227
56335
  "use strict";
55228
56336
  /*!
55229
56337
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55327,7 +56435,7 @@ __decorate([
55327
56435
  ], LexerTypeAction.prototype, "toString", null);
55328
56436
  exports.LexerTypeAction = LexerTypeAction;
55329
56437
 
55330
- },{"../Decorators":254,"../misc/MurmurHash":369}],323:[function(require,module,exports){
56438
+ },{"../Decorators":255,"../misc/MurmurHash":370}],324:[function(require,module,exports){
55331
56439
  "use strict";
55332
56440
  /*!
55333
56441
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55379,7 +56487,7 @@ LookaheadEventInfo = __decorate([
55379
56487
  ], LookaheadEventInfo);
55380
56488
  exports.LookaheadEventInfo = LookaheadEventInfo;
55381
56489
 
55382
- },{"../Decorators":254,"./DecisionEventInfo":305}],324:[function(require,module,exports){
56490
+ },{"../Decorators":255,"./DecisionEventInfo":306}],325:[function(require,module,exports){
55383
56491
  "use strict";
55384
56492
  /*!
55385
56493
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55408,7 +56516,7 @@ __decorate([
55408
56516
  ], LoopEndState.prototype, "stateType", null);
55409
56517
  exports.LoopEndState = LoopEndState;
55410
56518
 
55411
- },{"../Decorators":254,"./ATNState":293,"./ATNStateType":294}],325:[function(require,module,exports){
56519
+ },{"../Decorators":255,"./ATNState":294,"./ATNStateType":295}],326:[function(require,module,exports){
55412
56520
  "use strict";
55413
56521
  /*!
55414
56522
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55457,7 +56565,7 @@ NotSetTransition = __decorate([
55457
56565
  ], NotSetTransition);
55458
56566
  exports.NotSetTransition = NotSetTransition;
55459
56567
 
55460
- },{"../Decorators":254,"./SetTransition":343}],326:[function(require,module,exports){
56568
+ },{"../Decorators":255,"./SetTransition":344}],327:[function(require,module,exports){
55461
56569
  "use strict";
55462
56570
  /*!
55463
56571
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55512,7 +56620,7 @@ __decorate([
55512
56620
  ], OrderedATNConfigSet.prototype, "canMerge", null);
55513
56621
  exports.OrderedATNConfigSet = OrderedATNConfigSet;
55514
56622
 
55515
- },{"../Decorators":254,"./ATNConfigSet":289}],327:[function(require,module,exports){
56623
+ },{"../Decorators":255,"./ATNConfigSet":290}],328:[function(require,module,exports){
55516
56624
  "use strict";
55517
56625
  /*!
55518
56626
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -55674,7 +56782,7 @@ ParseInfo = __decorate([
55674
56782
  ], ParseInfo);
55675
56783
  exports.ParseInfo = ParseInfo;
55676
56784
 
55677
- },{"../Decorators":254}],328:[function(require,module,exports){
56785
+ },{"../Decorators":255}],329:[function(require,module,exports){
55678
56786
  "use strict";
55679
56787
  /*!
55680
56788
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -57947,7 +59055,7 @@ ParserATNSimulator = __decorate([
57947
59055
  ], ParserATNSimulator);
57948
59056
  exports.ParserATNSimulator = ParserATNSimulator;
57949
59057
 
57950
- },{"../Decorators":254,"../IntStream":260,"../NoViableAltException":266,"../ParserRuleContext":270,"../Token":279,"../VocabularyImpl":285,"../dfa/AcceptStateInfo":351,"../dfa/DFAState":354,"../misc/Array2DHashSet":358,"../misc/Arrays":360,"../misc/BitSet":361,"../misc/IntegerList":364,"../misc/Interval":366,"../misc/ObjectEqualityComparator":370,"./ATN":287,"./ATNConfig":288,"./ATNConfigSet":289,"./ATNSimulator":292,"./ATNStateType":294,"./ActionTransition":296,"./AtomTransition":298,"./ConflictInfo":303,"./DecisionState":307,"./NotSetTransition":325,"./PredictionContext":334,"./PredictionContextCache":335,"./PredictionMode":336,"./RuleStopState":340,"./RuleTransition":341,"./SemanticContext":342,"./SetTransition":343,"./SimulatorState":344,"assert":397}],329:[function(require,module,exports){
59058
+ },{"../Decorators":255,"../IntStream":261,"../NoViableAltException":267,"../ParserRuleContext":271,"../Token":280,"../VocabularyImpl":286,"../dfa/AcceptStateInfo":352,"../dfa/DFAState":355,"../misc/Array2DHashSet":359,"../misc/Arrays":361,"../misc/BitSet":362,"../misc/IntegerList":365,"../misc/Interval":367,"../misc/ObjectEqualityComparator":371,"./ATN":288,"./ATNConfig":289,"./ATNConfigSet":290,"./ATNSimulator":293,"./ATNStateType":295,"./ActionTransition":297,"./AtomTransition":299,"./ConflictInfo":304,"./DecisionState":308,"./NotSetTransition":326,"./PredictionContext":335,"./PredictionContextCache":336,"./PredictionMode":337,"./RuleStopState":341,"./RuleTransition":342,"./SemanticContext":343,"./SetTransition":344,"./SimulatorState":345,"assert":398}],330:[function(require,module,exports){
57951
59059
  "use strict";
57952
59060
  /*!
57953
59061
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -57980,7 +59088,7 @@ __decorate([
57980
59088
  ], PlusBlockStartState.prototype, "stateType", null);
57981
59089
  exports.PlusBlockStartState = PlusBlockStartState;
57982
59090
 
57983
- },{"../Decorators":254,"./ATNStateType":294,"./BlockStartState":302}],330:[function(require,module,exports){
59091
+ },{"../Decorators":255,"./ATNStateType":295,"./BlockStartState":303}],331:[function(require,module,exports){
57984
59092
  "use strict";
57985
59093
  /*!
57986
59094
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -58011,7 +59119,7 @@ __decorate([
58011
59119
  ], PlusLoopbackState.prototype, "stateType", null);
58012
59120
  exports.PlusLoopbackState = PlusLoopbackState;
58013
59121
 
58014
- },{"../Decorators":254,"./ATNStateType":294,"./DecisionState":307}],331:[function(require,module,exports){
59122
+ },{"../Decorators":255,"./ATNStateType":295,"./DecisionState":308}],332:[function(require,module,exports){
58015
59123
  "use strict";
58016
59124
  /*!
58017
59125
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -58074,7 +59182,7 @@ PrecedencePredicateTransition = __decorate([
58074
59182
  ], PrecedencePredicateTransition);
58075
59183
  exports.PrecedencePredicateTransition = PrecedencePredicateTransition;
58076
59184
 
58077
- },{"../Decorators":254,"./AbstractPredicateTransition":295,"./SemanticContext":342}],332:[function(require,module,exports){
59185
+ },{"../Decorators":255,"./AbstractPredicateTransition":296,"./SemanticContext":343}],333:[function(require,module,exports){
58078
59186
  "use strict";
58079
59187
  /*!
58080
59188
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -58137,7 +59245,7 @@ PredicateEvalInfo = __decorate([
58137
59245
  ], PredicateEvalInfo);
58138
59246
  exports.PredicateEvalInfo = PredicateEvalInfo;
58139
59247
 
58140
- },{"../Decorators":254,"./DecisionEventInfo":305}],333:[function(require,module,exports){
59248
+ },{"../Decorators":255,"./DecisionEventInfo":306}],334:[function(require,module,exports){
58141
59249
  "use strict";
58142
59250
  /*!
58143
59251
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -58203,7 +59311,7 @@ PredicateTransition = __decorate([
58203
59311
  ], PredicateTransition);
58204
59312
  exports.PredicateTransition = PredicateTransition;
58205
59313
 
58206
- },{"../Decorators":254,"./AbstractPredicateTransition":295,"./SemanticContext":342}],334:[function(require,module,exports){
59314
+ },{"../Decorators":255,"./AbstractPredicateTransition":296,"./SemanticContext":343}],335:[function(require,module,exports){
58207
59315
  "use strict";
58208
59316
  /*!
58209
59317
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -58894,7 +60002,7 @@ exports.SingletonPredictionContext = SingletonPredictionContext;
58894
60002
  PredictionContext.IdentityEqualityComparator = IdentityEqualityComparator;
58895
60003
  })(PredictionContext = exports.PredictionContext || (exports.PredictionContext = {}));
58896
60004
 
58897
- },{"../Decorators":254,"../misc/Array2DHashMap":357,"../misc/Array2DHashSet":358,"../misc/Arrays":360,"../misc/MurmurHash":369,"./PredictionContextCache":335,"assert":397}],335:[function(require,module,exports){
60005
+ },{"../Decorators":255,"../misc/Array2DHashMap":358,"../misc/Array2DHashSet":359,"../misc/Arrays":361,"../misc/MurmurHash":370,"./PredictionContextCache":336,"assert":398}],336:[function(require,module,exports){
58898
60006
  "use strict";
58899
60007
  /*!
58900
60008
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -59035,7 +60143,7 @@ PredictionContextCache.UNCACHED = new PredictionContextCache(false);
59035
60143
  PredictionContextCache.IdentityCommutativePredictionContextOperands = IdentityCommutativePredictionContextOperands;
59036
60144
  })(PredictionContextCache = exports.PredictionContextCache || (exports.PredictionContextCache = {}));
59037
60145
 
59038
- },{"../Decorators":254,"../misc/Array2DHashMap":357,"../misc/ObjectEqualityComparator":370,"./PredictionContext":334,"assert":397}],336:[function(require,module,exports){
60146
+ },{"../Decorators":255,"../misc/Array2DHashMap":358,"../misc/ObjectEqualityComparator":371,"./PredictionContext":335,"assert":398}],337:[function(require,module,exports){
59039
60147
  "use strict";
59040
60148
  /*!
59041
60149
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -59196,7 +60304,7 @@ var PredictionMode;
59196
60304
  PredictionMode.allConfigsInRuleStopStates = allConfigsInRuleStopStates;
59197
60305
  })(PredictionMode = exports.PredictionMode || (exports.PredictionMode = {}));
59198
60306
 
59199
- },{"../Decorators":254,"../misc/Array2DHashMap":357,"../misc/MurmurHash":369,"./RuleStopState":340}],337:[function(require,module,exports){
60307
+ },{"../Decorators":255,"../misc/Array2DHashMap":358,"../misc/MurmurHash":370,"./RuleStopState":341}],338:[function(require,module,exports){
59200
60308
  (function (process){(function (){
59201
60309
  "use strict";
59202
60310
  /*!
@@ -59465,7 +60573,7 @@ __decorate([
59465
60573
  exports.ProfilingATNSimulator = ProfilingATNSimulator;
59466
60574
 
59467
60575
  }).call(this)}).call(this,require('_process'))
59468
- },{"../Decorators":254,"./ATN":287,"./ATNSimulator":292,"./AmbiguityInfo":297,"./ContextSensitivityInfo":304,"./DecisionInfo":306,"./ErrorInfo":309,"./LookaheadEventInfo":323,"./ParserATNSimulator":328,"./PredicateEvalInfo":332,"./SemanticContext":342,"./SimulatorState":344,"_process":456}],338:[function(require,module,exports){
60576
+ },{"../Decorators":255,"./ATN":288,"./ATNSimulator":293,"./AmbiguityInfo":298,"./ContextSensitivityInfo":305,"./DecisionInfo":307,"./ErrorInfo":310,"./LookaheadEventInfo":324,"./ParserATNSimulator":329,"./PredicateEvalInfo":333,"./SemanticContext":343,"./SimulatorState":345,"_process":457}],339:[function(require,module,exports){
59469
60577
  "use strict";
59470
60578
  /*!
59471
60579
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -59523,7 +60631,7 @@ RangeTransition = __decorate([
59523
60631
  ], RangeTransition);
59524
60632
  exports.RangeTransition = RangeTransition;
59525
60633
 
59526
- },{"../Decorators":254,"../misc/IntervalSet":367,"./Transition":349}],339:[function(require,module,exports){
60634
+ },{"../Decorators":255,"../misc/IntervalSet":368,"./Transition":350}],340:[function(require,module,exports){
59527
60635
  "use strict";
59528
60636
  /*!
59529
60637
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -59556,7 +60664,7 @@ __decorate([
59556
60664
  ], RuleStartState.prototype, "stateType", null);
59557
60665
  exports.RuleStartState = RuleStartState;
59558
60666
 
59559
- },{"../Decorators":254,"./ATNState":293,"./ATNStateType":294}],340:[function(require,module,exports){
60667
+ },{"../Decorators":255,"./ATNState":294,"./ATNStateType":295}],341:[function(require,module,exports){
59560
60668
  "use strict";
59561
60669
  /*!
59562
60670
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -59595,7 +60703,7 @@ __decorate([
59595
60703
  ], RuleStopState.prototype, "stateType", null);
59596
60704
  exports.RuleStopState = RuleStopState;
59597
60705
 
59598
- },{"../Decorators":254,"./ATNState":293,"./ATNStateType":294}],341:[function(require,module,exports){
60706
+ },{"../Decorators":255,"./ATNState":294,"./ATNStateType":295}],342:[function(require,module,exports){
59599
60707
  "use strict";
59600
60708
  /*!
59601
60709
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -59651,7 +60759,7 @@ RuleTransition = __decorate([
59651
60759
  ], RuleTransition);
59652
60760
  exports.RuleTransition = RuleTransition;
59653
60761
 
59654
- },{"../Decorators":254,"./Transition":349}],342:[function(require,module,exports){
60762
+ },{"../Decorators":255,"./Transition":350}],343:[function(require,module,exports){
59655
60763
  "use strict";
59656
60764
  /*!
59657
60765
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60131,7 +61239,7 @@ exports.SemanticContext = SemanticContext;
60131
61239
  SemanticContext.OR = OR;
60132
61240
  })(SemanticContext = exports.SemanticContext || (exports.SemanticContext = {}));
60133
61241
 
60134
- },{"../Decorators":254,"../misc/Array2DHashSet":358,"../misc/ArrayEqualityComparator":359,"../misc/MurmurHash":369,"../misc/ObjectEqualityComparator":370,"../misc/Utils":373}],343:[function(require,module,exports){
61242
+ },{"../Decorators":255,"../misc/Array2DHashSet":359,"../misc/ArrayEqualityComparator":360,"../misc/MurmurHash":370,"../misc/ObjectEqualityComparator":371,"../misc/Utils":374}],344:[function(require,module,exports){
60135
61243
  "use strict";
60136
61244
  /*!
60137
61245
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60197,7 +61305,7 @@ SetTransition = __decorate([
60197
61305
  ], SetTransition);
60198
61306
  exports.SetTransition = SetTransition;
60199
61307
 
60200
- },{"../Decorators":254,"../Token":279,"../misc/IntervalSet":367,"./Transition":349}],344:[function(require,module,exports){
61308
+ },{"../Decorators":255,"../Token":280,"../misc/IntervalSet":368,"./Transition":350}],345:[function(require,module,exports){
60201
61309
  "use strict";
60202
61310
  /*!
60203
61311
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60233,7 +61341,7 @@ SimulatorState = __decorate([
60233
61341
  ], SimulatorState);
60234
61342
  exports.SimulatorState = SimulatorState;
60235
61343
 
60236
- },{"../Decorators":254,"../ParserRuleContext":270}],345:[function(require,module,exports){
61344
+ },{"../Decorators":255,"../ParserRuleContext":271}],346:[function(require,module,exports){
60237
61345
  "use strict";
60238
61346
  /*!
60239
61347
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60261,7 +61369,7 @@ __decorate([
60261
61369
  ], StarBlockStartState.prototype, "stateType", null);
60262
61370
  exports.StarBlockStartState = StarBlockStartState;
60263
61371
 
60264
- },{"../Decorators":254,"./ATNStateType":294,"./BlockStartState":302}],346:[function(require,module,exports){
61372
+ },{"../Decorators":255,"./ATNStateType":295,"./BlockStartState":303}],347:[function(require,module,exports){
60265
61373
  "use strict";
60266
61374
  /*!
60267
61375
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60318,7 +61426,7 @@ __decorate([
60318
61426
  ], StarLoopEntryState.prototype, "stateType", null);
60319
61427
  exports.StarLoopEntryState = StarLoopEntryState;
60320
61428
 
60321
- },{"../Decorators":254,"../misc/BitSet":361,"./ATNStateType":294,"./DecisionState":307}],347:[function(require,module,exports){
61429
+ },{"../Decorators":255,"../misc/BitSet":362,"./ATNStateType":295,"./DecisionState":308}],348:[function(require,module,exports){
60322
61430
  "use strict";
60323
61431
  /*!
60324
61432
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60349,7 +61457,7 @@ __decorate([
60349
61457
  ], StarLoopbackState.prototype, "stateType", null);
60350
61458
  exports.StarLoopbackState = StarLoopbackState;
60351
61459
 
60352
- },{"../Decorators":254,"./ATNState":293,"./ATNStateType":294}],348:[function(require,module,exports){
61460
+ },{"../Decorators":255,"./ATNState":294,"./ATNStateType":295}],349:[function(require,module,exports){
60353
61461
  "use strict";
60354
61462
  /*!
60355
61463
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60378,7 +61486,7 @@ __decorate([
60378
61486
  ], TokensStartState.prototype, "stateType", null);
60379
61487
  exports.TokensStartState = TokensStartState;
60380
61488
 
60381
- },{"../Decorators":254,"./ATNStateType":294,"./DecisionState":307}],349:[function(require,module,exports){
61489
+ },{"../Decorators":255,"./ATNStateType":295,"./DecisionState":308}],350:[function(require,module,exports){
60382
61490
  "use strict";
60383
61491
  /*!
60384
61492
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60452,7 +61560,7 @@ Transition = __decorate([
60452
61560
  ], Transition);
60453
61561
  exports.Transition = Transition;
60454
61562
 
60455
- },{"../Decorators":254}],350:[function(require,module,exports){
61563
+ },{"../Decorators":255}],351:[function(require,module,exports){
60456
61564
  "use strict";
60457
61565
  /*!
60458
61566
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60500,7 +61608,7 @@ WildcardTransition = __decorate([
60500
61608
  ], WildcardTransition);
60501
61609
  exports.WildcardTransition = WildcardTransition;
60502
61610
 
60503
- },{"../Decorators":254,"./Transition":349}],351:[function(require,module,exports){
61611
+ },{"../Decorators":255,"./Transition":350}],352:[function(require,module,exports){
60504
61612
  "use strict";
60505
61613
  /*!
60506
61614
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60542,7 +61650,7 @@ class AcceptStateInfo {
60542
61650
  }
60543
61651
  exports.AcceptStateInfo = AcceptStateInfo;
60544
61652
 
60545
- },{}],352:[function(require,module,exports){
61653
+ },{}],353:[function(require,module,exports){
60546
61654
  "use strict";
60547
61655
  /*!
60548
61656
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60717,7 +61825,7 @@ DFA = __decorate([
60717
61825
  ], DFA);
60718
61826
  exports.DFA = DFA;
60719
61827
 
60720
- },{"../Decorators":254,"../VocabularyImpl":285,"../atn/ATNConfigSet":289,"../atn/StarLoopEntryState":346,"../misc/Array2DHashSet":358,"../misc/ObjectEqualityComparator":370,"./DFASerializer":353,"./DFAState":354,"./LexerDFASerializer":355}],353:[function(require,module,exports){
61828
+ },{"../Decorators":255,"../VocabularyImpl":286,"../atn/ATNConfigSet":290,"../atn/StarLoopEntryState":347,"../misc/Array2DHashSet":359,"../misc/ObjectEqualityComparator":371,"./DFASerializer":354,"./DFAState":355,"./LexerDFASerializer":356}],354:[function(require,module,exports){
60721
61829
  "use strict";
60722
61830
  /*!
60723
61831
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -60859,7 +61967,7 @@ __decorate([
60859
61967
  ], DFASerializer.prototype, "toString", null);
60860
61968
  exports.DFASerializer = DFASerializer;
60861
61969
 
60862
- },{"../Decorators":254,"../Recognizer":274,"../VocabularyImpl":285,"../atn/ATNSimulator":292,"../atn/PredictionContext":334}],354:[function(require,module,exports){
61970
+ },{"../Decorators":255,"../Recognizer":275,"../VocabularyImpl":286,"../atn/ATNSimulator":293,"../atn/PredictionContext":335}],355:[function(require,module,exports){
60863
61971
  "use strict";
60864
61972
  /*!
60865
61973
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61090,7 +62198,7 @@ exports.DFAState = DFAState;
61090
62198
  DFAState.PredPrediction = PredPrediction;
61091
62199
  })(DFAState = exports.DFAState || (exports.DFAState = {}));
61092
62200
 
61093
- },{"../Decorators":254,"../atn/ATN":287,"../atn/PredictionContext":334,"../misc/BitSet":361,"../misc/MurmurHash":369,"assert":397}],355:[function(require,module,exports){
62201
+ },{"../Decorators":255,"../atn/ATN":288,"../atn/PredictionContext":335,"../misc/BitSet":362,"../misc/MurmurHash":370,"assert":398}],356:[function(require,module,exports){
61094
62202
  "use strict";
61095
62203
  /*!
61096
62204
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61127,7 +62235,7 @@ LexerDFASerializer = __decorate([
61127
62235
  ], LexerDFASerializer);
61128
62236
  exports.LexerDFASerializer = LexerDFASerializer;
61129
62237
 
61130
- },{"../Decorators":254,"../VocabularyImpl":285,"./DFASerializer":353}],356:[function(require,module,exports){
62238
+ },{"../Decorators":255,"../VocabularyImpl":286,"./DFASerializer":354}],357:[function(require,module,exports){
61131
62239
  "use strict";
61132
62240
  /*!
61133
62241
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61193,7 +62301,7 @@ __exportStar(require("./Vocabulary"), exports);
61193
62301
  __exportStar(require("./VocabularyImpl"), exports);
61194
62302
  __exportStar(require("./WritableToken"), exports);
61195
62303
 
61196
- },{"./ANTLRErrorListener":241,"./ANTLRErrorStrategy":242,"./ANTLRInputStream":243,"./BailErrorStrategy":244,"./BufferedTokenStream":245,"./CharStream":246,"./CharStreams":247,"./CodePointBuffer":248,"./CodePointCharStream":249,"./CommonToken":250,"./CommonTokenFactory":251,"./CommonTokenStream":252,"./ConsoleErrorListener":253,"./DefaultErrorStrategy":255,"./Dependents":256,"./DiagnosticErrorListener":257,"./FailedPredicateException":258,"./InputMismatchException":259,"./IntStream":260,"./InterpreterRuleContext":261,"./Lexer":262,"./LexerInterpreter":263,"./LexerNoViableAltException":264,"./ListTokenSource":265,"./NoViableAltException":266,"./Parser":267,"./ParserErrorListener":268,"./ParserInterpreter":269,"./ParserRuleContext":270,"./ProxyErrorListener":271,"./ProxyParserErrorListener":272,"./RecognitionException":273,"./Recognizer":274,"./RuleContext":275,"./RuleContextWithAltNum":276,"./RuleDependency":277,"./RuleVersion":278,"./Token":279,"./TokenFactory":280,"./TokenSource":281,"./TokenStream":282,"./TokenStreamRewriter":283,"./Vocabulary":284,"./VocabularyImpl":285,"./WritableToken":286}],357:[function(require,module,exports){
62304
+ },{"./ANTLRErrorListener":242,"./ANTLRErrorStrategy":243,"./ANTLRInputStream":244,"./BailErrorStrategy":245,"./BufferedTokenStream":246,"./CharStream":247,"./CharStreams":248,"./CodePointBuffer":249,"./CodePointCharStream":250,"./CommonToken":251,"./CommonTokenFactory":252,"./CommonTokenStream":253,"./ConsoleErrorListener":254,"./DefaultErrorStrategy":256,"./Dependents":257,"./DiagnosticErrorListener":258,"./FailedPredicateException":259,"./InputMismatchException":260,"./IntStream":261,"./InterpreterRuleContext":262,"./Lexer":263,"./LexerInterpreter":264,"./LexerNoViableAltException":265,"./ListTokenSource":266,"./NoViableAltException":267,"./Parser":268,"./ParserErrorListener":269,"./ParserInterpreter":270,"./ParserRuleContext":271,"./ProxyErrorListener":272,"./ProxyParserErrorListener":273,"./RecognitionException":274,"./Recognizer":275,"./RuleContext":276,"./RuleContextWithAltNum":277,"./RuleDependency":278,"./RuleVersion":279,"./Token":280,"./TokenFactory":281,"./TokenSource":282,"./TokenStream":283,"./TokenStreamRewriter":284,"./Vocabulary":285,"./VocabularyImpl":286,"./WritableToken":287}],358:[function(require,module,exports){
61197
62305
  "use strict";
61198
62306
  /*!
61199
62307
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61276,7 +62384,7 @@ class Array2DHashMap {
61276
62384
  }
61277
62385
  exports.Array2DHashMap = Array2DHashMap;
61278
62386
 
61279
- },{"./Array2DHashSet":358}],358:[function(require,module,exports){
62387
+ },{"./Array2DHashSet":359}],359:[function(require,module,exports){
61280
62388
  "use strict";
61281
62389
  /*!
61282
62390
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61643,7 +62751,7 @@ __decorate([
61643
62751
  ], Array2DHashSet.prototype, "createBuckets", null);
61644
62752
  exports.Array2DHashSet = Array2DHashSet;
61645
62753
 
61646
- },{"../Decorators":254,"./DefaultEqualityComparator":363,"./MurmurHash":369,"assert":397}],359:[function(require,module,exports){
62754
+ },{"../Decorators":255,"./DefaultEqualityComparator":364,"./MurmurHash":370,"assert":398}],360:[function(require,module,exports){
61647
62755
  "use strict";
61648
62756
  /*!
61649
62757
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61715,7 +62823,7 @@ __decorate([
61715
62823
  ], ArrayEqualityComparator.prototype, "equals", null);
61716
62824
  exports.ArrayEqualityComparator = ArrayEqualityComparator;
61717
62825
 
61718
- },{"../Decorators":254,"./MurmurHash":369,"./ObjectEqualityComparator":370}],360:[function(require,module,exports){
62826
+ },{"../Decorators":255,"./MurmurHash":370,"./ObjectEqualityComparator":371}],361:[function(require,module,exports){
61719
62827
  "use strict";
61720
62828
  /*!
61721
62829
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -61785,7 +62893,7 @@ var Arrays;
61785
62893
  Arrays.toString = toString;
61786
62894
  })(Arrays = exports.Arrays || (exports.Arrays = {}));
61787
62895
 
61788
- },{}],361:[function(require,module,exports){
62896
+ },{}],362:[function(require,module,exports){
61789
62897
  "use strict";
61790
62898
  /*!
61791
62899
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -62457,7 +63565,7 @@ class BitSetIterator {
62457
63565
  [Symbol.iterator]() { return this; }
62458
63566
  }
62459
63567
 
62460
- },{"./MurmurHash":369,"util":461}],362:[function(require,module,exports){
63568
+ },{"./MurmurHash":370,"util":462}],363:[function(require,module,exports){
62461
63569
  "use strict";
62462
63570
  /*!
62463
63571
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -62478,7 +63586,7 @@ function isSupplementaryCodePoint(ch) {
62478
63586
  }
62479
63587
  exports.isSupplementaryCodePoint = isSupplementaryCodePoint;
62480
63588
 
62481
- },{}],363:[function(require,module,exports){
63589
+ },{}],364:[function(require,module,exports){
62482
63590
  "use strict";
62483
63591
  /*!
62484
63592
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -62549,7 +63657,7 @@ __decorate([
62549
63657
  ], DefaultEqualityComparator.prototype, "equals", null);
62550
63658
  exports.DefaultEqualityComparator = DefaultEqualityComparator;
62551
63659
 
62552
- },{"../Decorators":254,"./MurmurHash":369,"./ObjectEqualityComparator":370}],364:[function(require,module,exports){
63660
+ },{"../Decorators":255,"./MurmurHash":370,"./ObjectEqualityComparator":371}],365:[function(require,module,exports){
62553
63661
  "use strict";
62554
63662
  /*!
62555
63663
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -62843,7 +63951,7 @@ __decorate([
62843
63951
  ], IntegerList.prototype, "toString", null);
62844
63952
  exports.IntegerList = IntegerList;
62845
63953
 
62846
- },{"../Decorators":254,"./Arrays":360}],365:[function(require,module,exports){
63954
+ },{"../Decorators":255,"./Arrays":361}],366:[function(require,module,exports){
62847
63955
  "use strict";
62848
63956
  /*!
62849
63957
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -62873,7 +63981,7 @@ class IntegerStack extends IntegerList_1.IntegerList {
62873
63981
  }
62874
63982
  exports.IntegerStack = IntegerStack;
62875
63983
 
62876
- },{"./IntegerList":364}],366:[function(require,module,exports){
63984
+ },{"./IntegerList":365}],367:[function(require,module,exports){
62877
63985
  "use strict";
62878
63986
  /*!
62879
63987
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63016,7 +64124,7 @@ __decorate([
63016
64124
  ], Interval.prototype, "toString", null);
63017
64125
  exports.Interval = Interval;
63018
64126
 
63019
- },{"../Decorators":254}],367:[function(require,module,exports){
64127
+ },{"../Decorators":255}],368:[function(require,module,exports){
63020
64128
  "use strict";
63021
64129
  /*!
63022
64130
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63662,7 +64770,7 @@ __decorate([
63662
64770
  ], IntervalSet, "subtract", null);
63663
64771
  exports.IntervalSet = IntervalSet;
63664
64772
 
63665
- },{"../Decorators":254,"../Lexer":262,"../Token":279,"./ArrayEqualityComparator":359,"./IntegerList":364,"./Interval":366,"./MurmurHash":369}],368:[function(require,module,exports){
64773
+ },{"../Decorators":255,"../Lexer":263,"../Token":280,"./ArrayEqualityComparator":360,"./IntegerList":365,"./Interval":367,"./MurmurHash":370}],369:[function(require,module,exports){
63666
64774
  "use strict";
63667
64775
  /*!
63668
64776
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63695,7 +64803,7 @@ class MultiMap extends Map {
63695
64803
  }
63696
64804
  exports.MultiMap = MultiMap;
63697
64805
 
63698
- },{}],369:[function(require,module,exports){
64806
+ },{}],370:[function(require,module,exports){
63699
64807
  "use strict";
63700
64808
  /*!
63701
64809
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63810,7 +64918,7 @@ var MurmurHash;
63810
64918
  }
63811
64919
  })(MurmurHash = exports.MurmurHash || (exports.MurmurHash = {}));
63812
64920
 
63813
- },{}],370:[function(require,module,exports){
64921
+ },{}],371:[function(require,module,exports){
63814
64922
  "use strict";
63815
64923
  /*!
63816
64924
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63869,7 +64977,7 @@ __decorate([
63869
64977
  ], ObjectEqualityComparator.prototype, "equals", null);
63870
64978
  exports.ObjectEqualityComparator = ObjectEqualityComparator;
63871
64979
 
63872
- },{"../Decorators":254}],371:[function(require,module,exports){
64980
+ },{"../Decorators":255}],372:[function(require,module,exports){
63873
64981
  "use strict";
63874
64982
  /*!
63875
64983
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63898,7 +65006,7 @@ class ParseCancellationException extends Error {
63898
65006
  }
63899
65007
  exports.ParseCancellationException = ParseCancellationException;
63900
65008
 
63901
- },{}],372:[function(require,module,exports){
65009
+ },{}],373:[function(require,module,exports){
63902
65010
  "use strict";
63903
65011
  /*!
63904
65012
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -63952,7 +65060,7 @@ class UUID {
63952
65060
  }
63953
65061
  exports.UUID = UUID;
63954
65062
 
63955
- },{"./MurmurHash":369}],373:[function(require,module,exports){
65063
+ },{"./MurmurHash":370}],374:[function(require,module,exports){
63956
65064
  "use strict";
63957
65065
  /*!
63958
65066
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64127,7 +65235,7 @@ exports.toCharArray = toCharArray;
64127
65235
  // return s;
64128
65236
  // }
64129
65237
 
64130
- },{}],374:[function(require,module,exports){
65238
+ },{}],375:[function(require,module,exports){
64131
65239
  "use strict";
64132
65240
  /*!
64133
65241
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64163,7 +65271,7 @@ __decorate([
64163
65271
  ], ErrorNode.prototype, "accept", null);
64164
65272
  exports.ErrorNode = ErrorNode;
64165
65273
 
64166
- },{"../Decorators":254,"./TerminalNode":377}],375:[function(require,module,exports){
65274
+ },{"../Decorators":255,"./TerminalNode":378}],376:[function(require,module,exports){
64167
65275
  "use strict";
64168
65276
  /*!
64169
65277
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64268,7 +65376,7 @@ exports.ParseTreeWalker = ParseTreeWalker;
64268
65376
  ParseTreeWalker.DEFAULT = new ParseTreeWalker();
64269
65377
  })(ParseTreeWalker = exports.ParseTreeWalker || (exports.ParseTreeWalker = {}));
64270
65378
 
64271
- },{"./ErrorNode":374,"./RuleNode":376,"./TerminalNode":377}],376:[function(require,module,exports){
65379
+ },{"./ErrorNode":375,"./RuleNode":377,"./TerminalNode":378}],377:[function(require,module,exports){
64272
65380
  "use strict";
64273
65381
  /*!
64274
65382
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64280,7 +65388,7 @@ class RuleNode {
64280
65388
  }
64281
65389
  exports.RuleNode = RuleNode;
64282
65390
 
64283
- },{}],377:[function(require,module,exports){
65391
+ },{}],378:[function(require,module,exports){
64284
65392
  "use strict";
64285
65393
  /*!
64286
65394
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64372,7 +65480,7 @@ __decorate([
64372
65480
  ], TerminalNode.prototype, "toString", null);
64373
65481
  exports.TerminalNode = TerminalNode;
64374
65482
 
64375
- },{"../Decorators":254,"../Token":279,"../misc/Interval":366}],378:[function(require,module,exports){
65483
+ },{"../Decorators":255,"../Token":280,"../misc/Interval":367}],379:[function(require,module,exports){
64376
65484
  "use strict";
64377
65485
  /*!
64378
65486
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64616,7 +65724,7 @@ __decorate([
64616
65724
  ], Trees, "getRootOfSubtreeEnclosingRegion", null);
64617
65725
  exports.Trees = Trees;
64618
65726
 
64619
- },{"../CommonToken":250,"../Decorators":254,"../Parser":267,"../ParserRuleContext":270,"../Token":279,"../atn/ATN":287,"../misc/Utils":373,"./ErrorNode":374,"./RuleNode":376,"./TerminalNode":377}],379:[function(require,module,exports){
65727
+ },{"../CommonToken":251,"../Decorators":255,"../Parser":268,"../ParserRuleContext":271,"../Token":280,"../atn/ATN":288,"../misc/Utils":374,"./ErrorNode":375,"./RuleNode":377,"./TerminalNode":378}],380:[function(require,module,exports){
64620
65728
  "use strict";
64621
65729
  /*!
64622
65730
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64640,7 +65748,7 @@ class Chunk {
64640
65748
  }
64641
65749
  exports.Chunk = Chunk;
64642
65750
 
64643
- },{}],380:[function(require,module,exports){
65751
+ },{}],381:[function(require,module,exports){
64644
65752
  "use strict";
64645
65753
  /*!
64646
65754
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64820,7 +65928,7 @@ ParseTreeMatch = __decorate([
64820
65928
  ], ParseTreeMatch);
64821
65929
  exports.ParseTreeMatch = ParseTreeMatch;
64822
65930
 
64823
- },{"../../Decorators":254}],381:[function(require,module,exports){
65931
+ },{"../../Decorators":255}],382:[function(require,module,exports){
64824
65932
  "use strict";
64825
65933
  /*!
64826
65934
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -64978,7 +66086,7 @@ ParseTreePattern = __decorate([
64978
66086
  ], ParseTreePattern);
64979
66087
  exports.ParseTreePattern = ParseTreePattern;
64980
66088
 
64981
- },{"../../Decorators":254,"../xpath/XPath":387}],382:[function(require,module,exports){
66089
+ },{"../../Decorators":255,"../xpath/XPath":388}],383:[function(require,module,exports){
64982
66090
  "use strict";
64983
66091
  /*!
64984
66092
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -65456,7 +66564,7 @@ exports.ParseTreePatternMatcher = ParseTreePatternMatcher;
65456
66564
  ParseTreePatternMatcher.StartRuleDoesNotConsumeFullPattern = StartRuleDoesNotConsumeFullPattern;
65457
66565
  })(ParseTreePatternMatcher = exports.ParseTreePatternMatcher || (exports.ParseTreePatternMatcher = {}));
65458
66566
 
65459
- },{"../../BailErrorStrategy":244,"../../CharStreams":247,"../../CommonTokenStream":252,"../../Decorators":254,"../../ListTokenSource":265,"../../ParserInterpreter":269,"../../ParserRuleContext":270,"../../RecognitionException":273,"../../Token":279,"../../misc/MultiMap":368,"../../misc/ParseCancellationException":371,"../RuleNode":376,"../TerminalNode":377,"./ParseTreeMatch":380,"./ParseTreePattern":381,"./RuleTagToken":383,"./TagChunk":384,"./TextChunk":385,"./TokenTagToken":386}],383:[function(require,module,exports){
66567
+ },{"../../BailErrorStrategy":245,"../../CharStreams":248,"../../CommonTokenStream":253,"../../Decorators":255,"../../ListTokenSource":266,"../../ParserInterpreter":270,"../../ParserRuleContext":271,"../../RecognitionException":274,"../../Token":280,"../../misc/MultiMap":369,"../../misc/ParseCancellationException":372,"../RuleNode":377,"../TerminalNode":378,"./ParseTreeMatch":381,"./ParseTreePattern":382,"./RuleTagToken":384,"./TagChunk":385,"./TextChunk":386,"./TokenTagToken":387}],384:[function(require,module,exports){
65460
66568
  "use strict";
65461
66569
  /*!
65462
66570
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -65654,7 +66762,7 @@ RuleTagToken = __decorate([
65654
66762
  ], RuleTagToken);
65655
66763
  exports.RuleTagToken = RuleTagToken;
65656
66764
 
65657
- },{"../../Decorators":254,"../../Token":279}],384:[function(require,module,exports){
66765
+ },{"../../Decorators":255,"../../Token":280}],385:[function(require,module,exports){
65658
66766
  "use strict";
65659
66767
  /*!
65660
66768
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -65741,7 +66849,7 @@ __decorate([
65741
66849
  ], TagChunk.prototype, "toString", null);
65742
66850
  exports.TagChunk = TagChunk;
65743
66851
 
65744
- },{"../../Decorators":254,"./Chunk":379}],385:[function(require,module,exports){
66852
+ },{"../../Decorators":255,"./Chunk":380}],386:[function(require,module,exports){
65745
66853
  "use strict";
65746
66854
  /*!
65747
66855
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -65811,7 +66919,7 @@ TextChunk = __decorate([
65811
66919
  ], TextChunk);
65812
66920
  exports.TextChunk = TextChunk;
65813
66921
 
65814
- },{"../../Decorators":254,"./Chunk":379}],386:[function(require,module,exports){
66922
+ },{"../../Decorators":255,"./Chunk":380}],387:[function(require,module,exports){
65815
66923
  "use strict";
65816
66924
  /*!
65817
66925
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -65906,7 +67014,7 @@ TokenTagToken = __decorate([
65906
67014
  ], TokenTagToken);
65907
67015
  exports.TokenTagToken = TokenTagToken;
65908
67016
 
65909
- },{"../../CommonToken":250,"../../Decorators":254}],387:[function(require,module,exports){
67017
+ },{"../../CommonToken":251,"../../Decorators":255}],388:[function(require,module,exports){
65910
67018
  "use strict";
65911
67019
  /*!
65912
67020
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66103,7 +67211,7 @@ exports.XPath = XPath;
66103
67211
  XPath.WILDCARD = "*"; // word not operator/separator
66104
67212
  XPath.NOT = "!"; // word for invert operator
66105
67213
 
66106
- },{"../../CharStreams":247,"../../CommonTokenStream":252,"../../LexerNoViableAltException":264,"../../ParserRuleContext":270,"../../Token":279,"./XPathLexer":389,"./XPathLexerErrorListener":390,"./XPathRuleAnywhereElement":391,"./XPathRuleElement":392,"./XPathTokenAnywhereElement":393,"./XPathTokenElement":394,"./XPathWildcardAnywhereElement":395,"./XPathWildcardElement":396}],388:[function(require,module,exports){
67214
+ },{"../../CharStreams":248,"../../CommonTokenStream":253,"../../LexerNoViableAltException":265,"../../ParserRuleContext":271,"../../Token":280,"./XPathLexer":390,"./XPathLexerErrorListener":391,"./XPathRuleAnywhereElement":392,"./XPathRuleElement":393,"./XPathTokenAnywhereElement":394,"./XPathTokenElement":395,"./XPathWildcardAnywhereElement":396,"./XPathWildcardElement":397}],389:[function(require,module,exports){
66107
67215
  "use strict";
66108
67216
  /*!
66109
67217
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66138,7 +67246,7 @@ __decorate([
66138
67246
  ], XPathElement.prototype, "toString", null);
66139
67247
  exports.XPathElement = XPathElement;
66140
67248
 
66141
- },{"../../Decorators":254}],389:[function(require,module,exports){
67249
+ },{"../../Decorators":255}],390:[function(require,module,exports){
66142
67250
  "use strict";
66143
67251
  // Generated from XPathLexer.g4 by ANTLR 4.9.0-SNAPSHOT
66144
67252
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -66613,7 +67721,7 @@ XPathLexer._serializedATN = Utils.join([
66613
67721
  XPathLexer._serializedATNSegment1,
66614
67722
  ], "");
66615
67723
 
66616
- },{"../../Lexer":262,"../../VocabularyImpl":285,"../../atn/ATNDeserializer":291,"../../atn/LexerATNSimulator":312,"../../misc/Utils":373}],390:[function(require,module,exports){
67724
+ },{"../../Lexer":263,"../../VocabularyImpl":286,"../../atn/ATNDeserializer":292,"../../atn/LexerATNSimulator":313,"../../misc/Utils":374}],391:[function(require,module,exports){
66617
67725
  "use strict";
66618
67726
  /*!
66619
67727
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66638,7 +67746,7 @@ __decorate([
66638
67746
  ], XPathLexerErrorListener.prototype, "syntaxError", null);
66639
67747
  exports.XPathLexerErrorListener = XPathLexerErrorListener;
66640
67748
 
66641
- },{"../../Decorators":254}],391:[function(require,module,exports){
67749
+ },{"../../Decorators":255}],392:[function(require,module,exports){
66642
67750
  "use strict";
66643
67751
  /*!
66644
67752
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66672,7 +67780,7 @@ __decorate([
66672
67780
  ], XPathRuleAnywhereElement.prototype, "evaluate", null);
66673
67781
  exports.XPathRuleAnywhereElement = XPathRuleAnywhereElement;
66674
67782
 
66675
- },{"../../Decorators":254,"../Trees":378,"./XPathElement":388}],392:[function(require,module,exports){
67783
+ },{"../../Decorators":255,"../Trees":379,"./XPathElement":389}],393:[function(require,module,exports){
66676
67784
  "use strict";
66677
67785
  /*!
66678
67786
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66715,7 +67823,7 @@ __decorate([
66715
67823
  ], XPathRuleElement.prototype, "evaluate", null);
66716
67824
  exports.XPathRuleElement = XPathRuleElement;
66717
67825
 
66718
- },{"../../Decorators":254,"../../ParserRuleContext":270,"../Trees":378,"./XPathElement":388}],393:[function(require,module,exports){
67826
+ },{"../../Decorators":255,"../../ParserRuleContext":271,"../Trees":379,"./XPathElement":389}],394:[function(require,module,exports){
66719
67827
  "use strict";
66720
67828
  /*!
66721
67829
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66747,7 +67855,7 @@ __decorate([
66747
67855
  ], XPathTokenAnywhereElement.prototype, "evaluate", null);
66748
67856
  exports.XPathTokenAnywhereElement = XPathTokenAnywhereElement;
66749
67857
 
66750
- },{"../../Decorators":254,"../Trees":378,"./XPathElement":388}],394:[function(require,module,exports){
67858
+ },{"../../Decorators":255,"../Trees":379,"./XPathElement":389}],395:[function(require,module,exports){
66751
67859
  "use strict";
66752
67860
  /*!
66753
67861
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66790,7 +67898,7 @@ __decorate([
66790
67898
  ], XPathTokenElement.prototype, "evaluate", null);
66791
67899
  exports.XPathTokenElement = XPathTokenElement;
66792
67900
 
66793
- },{"../../Decorators":254,"../TerminalNode":377,"../Trees":378,"./XPathElement":388}],395:[function(require,module,exports){
67901
+ },{"../../Decorators":255,"../TerminalNode":378,"../Trees":379,"./XPathElement":389}],396:[function(require,module,exports){
66794
67902
  "use strict";
66795
67903
  /*!
66796
67904
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66826,7 +67934,7 @@ __decorate([
66826
67934
  ], XPathWildcardAnywhereElement.prototype, "evaluate", null);
66827
67935
  exports.XPathWildcardAnywhereElement = XPathWildcardAnywhereElement;
66828
67936
 
66829
- },{"../../Decorators":254,"../Trees":378,"./XPath":387,"./XPathElement":388}],396:[function(require,module,exports){
67937
+ },{"../../Decorators":255,"../Trees":379,"./XPath":388,"./XPathElement":389}],397:[function(require,module,exports){
66830
67938
  "use strict";
66831
67939
  /*!
66832
67940
  * Copyright 2016 The ANTLR Project. All rights reserved.
@@ -66866,7 +67974,7 @@ __decorate([
66866
67974
  ], XPathWildcardElement.prototype, "evaluate", null);
66867
67975
  exports.XPathWildcardElement = XPathWildcardElement;
66868
67976
 
66869
- },{"../../Decorators":254,"../Trees":378,"./XPath":387,"./XPathElement":388}],397:[function(require,module,exports){
67977
+ },{"../../Decorators":255,"../Trees":379,"./XPath":388,"./XPathElement":389}],398:[function(require,module,exports){
66870
67978
  (function (global){(function (){
66871
67979
  'use strict';
66872
67980
 
@@ -67376,7 +68484,7 @@ var objectKeys = Object.keys || function (obj) {
67376
68484
  };
67377
68485
 
67378
68486
  }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
67379
- },{"object.assign/polyfill":454,"util/":400}],398:[function(require,module,exports){
68487
+ },{"object.assign/polyfill":455,"util/":401}],399:[function(require,module,exports){
67380
68488
  if (typeof Object.create === 'function') {
67381
68489
  // implementation from standard node.js 'util' module
67382
68490
  module.exports = function inherits(ctor, superCtor) {
@@ -67401,14 +68509,14 @@ if (typeof Object.create === 'function') {
67401
68509
  }
67402
68510
  }
67403
68511
 
67404
- },{}],399:[function(require,module,exports){
68512
+ },{}],400:[function(require,module,exports){
67405
68513
  module.exports = function isBuffer(arg) {
67406
68514
  return arg && typeof arg === 'object'
67407
68515
  && typeof arg.copy === 'function'
67408
68516
  && typeof arg.fill === 'function'
67409
68517
  && typeof arg.readUInt8 === 'function';
67410
68518
  }
67411
- },{}],400:[function(require,module,exports){
68519
+ },{}],401:[function(require,module,exports){
67412
68520
  (function (process,global){(function (){
67413
68521
  // Copyright Joyent, Inc. and other Node contributors.
67414
68522
  //
@@ -67998,7 +69106,7 @@ function hasOwnProperty(obj, prop) {
67998
69106
  }
67999
69107
 
68000
69108
  }).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
68001
- },{"./support/isBuffer":399,"_process":456,"inherits":398}],401:[function(require,module,exports){
69109
+ },{"./support/isBuffer":400,"_process":457,"inherits":399}],402:[function(require,module,exports){
68002
69110
  (function (global){(function (){
68003
69111
  'use strict';
68004
69112
 
@@ -68019,7 +69127,7 @@ module.exports = function availableTypedArrays() {
68019
69127
  };
68020
69128
 
68021
69129
  }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
68022
- },{"possible-typed-array-names":455}],402:[function(require,module,exports){
69130
+ },{"possible-typed-array-names":456}],403:[function(require,module,exports){
68023
69131
  (function (process,global){(function (){
68024
69132
  module.exports = process.hrtime || hrtime
68025
69133
 
@@ -68050,7 +69158,7 @@ function hrtime(previousTimestamp){
68050
69158
  return [seconds,nanoseconds]
68051
69159
  }
68052
69160
  }).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
68053
- },{"_process":456}],403:[function(require,module,exports){
69161
+ },{"_process":457}],404:[function(require,module,exports){
68054
69162
  'use strict';
68055
69163
 
68056
69164
  var bind = require('function-bind');
@@ -68062,7 +69170,7 @@ var $reflectApply = require('./reflectApply');
68062
69170
  /** @type {import('./actualApply')} */
68063
69171
  module.exports = $reflectApply || bind.call($call, $apply);
68064
69172
 
68065
- },{"./functionApply":405,"./functionCall":406,"./reflectApply":408,"function-bind":424}],404:[function(require,module,exports){
69173
+ },{"./functionApply":406,"./functionCall":407,"./reflectApply":409,"function-bind":425}],405:[function(require,module,exports){
68066
69174
  'use strict';
68067
69175
 
68068
69176
  var bind = require('function-bind');
@@ -68074,19 +69182,19 @@ module.exports = function applyBind() {
68074
69182
  return actualApply(bind, $apply, arguments);
68075
69183
  };
68076
69184
 
68077
- },{"./actualApply":403,"./functionApply":405,"function-bind":424}],405:[function(require,module,exports){
69185
+ },{"./actualApply":404,"./functionApply":406,"function-bind":425}],406:[function(require,module,exports){
68078
69186
  'use strict';
68079
69187
 
68080
69188
  /** @type {import('./functionApply')} */
68081
69189
  module.exports = Function.prototype.apply;
68082
69190
 
68083
- },{}],406:[function(require,module,exports){
69191
+ },{}],407:[function(require,module,exports){
68084
69192
  'use strict';
68085
69193
 
68086
69194
  /** @type {import('./functionCall')} */
68087
69195
  module.exports = Function.prototype.call;
68088
69196
 
68089
- },{}],407:[function(require,module,exports){
69197
+ },{}],408:[function(require,module,exports){
68090
69198
  'use strict';
68091
69199
 
68092
69200
  var bind = require('function-bind');
@@ -68103,13 +69211,13 @@ module.exports = function callBindBasic(args) {
68103
69211
  return $actualApply(bind, $call, args);
68104
69212
  };
68105
69213
 
68106
- },{"./actualApply":403,"./functionCall":406,"es-errors/type":419,"function-bind":424}],408:[function(require,module,exports){
69214
+ },{"./actualApply":404,"./functionCall":407,"es-errors/type":420,"function-bind":425}],409:[function(require,module,exports){
68107
69215
  'use strict';
68108
69216
 
68109
69217
  /** @type {import('./reflectApply')} */
68110
69218
  module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;
68111
69219
 
68112
- },{}],409:[function(require,module,exports){
69220
+ },{}],410:[function(require,module,exports){
68113
69221
  'use strict';
68114
69222
 
68115
69223
  var setFunctionLength = require('set-function-length');
@@ -68135,7 +69243,7 @@ if ($defineProperty) {
68135
69243
  module.exports.apply = applyBind;
68136
69244
  }
68137
69245
 
68138
- },{"call-bind-apply-helpers":407,"call-bind-apply-helpers/applyBind":404,"es-define-property":413,"set-function-length":458}],410:[function(require,module,exports){
69246
+ },{"call-bind-apply-helpers":408,"call-bind-apply-helpers/applyBind":405,"es-define-property":414,"set-function-length":459}],411:[function(require,module,exports){
68139
69247
  'use strict';
68140
69248
 
68141
69249
  var GetIntrinsic = require('get-intrinsic');
@@ -68156,7 +69264,7 @@ module.exports = function callBoundIntrinsic(name, allowMissing) {
68156
69264
  return intrinsic;
68157
69265
  };
68158
69266
 
68159
- },{"call-bind-apply-helpers":407,"get-intrinsic":425}],411:[function(require,module,exports){
69267
+ },{"call-bind-apply-helpers":408,"get-intrinsic":426}],412:[function(require,module,exports){
68160
69268
  'use strict';
68161
69269
 
68162
69270
  var $defineProperty = require('es-define-property');
@@ -68214,7 +69322,7 @@ module.exports = function defineDataProperty(
68214
69322
  }
68215
69323
  };
68216
69324
 
68217
- },{"es-define-property":413,"es-errors/syntax":418,"es-errors/type":419,"gopd":430}],412:[function(require,module,exports){
69325
+ },{"es-define-property":414,"es-errors/syntax":419,"es-errors/type":420,"gopd":431}],413:[function(require,module,exports){
68218
69326
  'use strict';
68219
69327
 
68220
69328
  var callBind = require('call-bind-apply-helpers');
@@ -68246,7 +69354,7 @@ module.exports = desc && typeof desc.get === 'function'
68246
69354
  }
68247
69355
  : false;
68248
69356
 
68249
- },{"call-bind-apply-helpers":407,"gopd":430}],413:[function(require,module,exports){
69357
+ },{"call-bind-apply-helpers":408,"gopd":431}],414:[function(require,module,exports){
68250
69358
  'use strict';
68251
69359
 
68252
69360
  /** @type {import('.')} */
@@ -68262,55 +69370,55 @@ if ($defineProperty) {
68262
69370
 
68263
69371
  module.exports = $defineProperty;
68264
69372
 
68265
- },{}],414:[function(require,module,exports){
69373
+ },{}],415:[function(require,module,exports){
68266
69374
  'use strict';
68267
69375
 
68268
69376
  /** @type {import('./eval')} */
68269
69377
  module.exports = EvalError;
68270
69378
 
68271
- },{}],415:[function(require,module,exports){
69379
+ },{}],416:[function(require,module,exports){
68272
69380
  'use strict';
68273
69381
 
68274
69382
  /** @type {import('.')} */
68275
69383
  module.exports = Error;
68276
69384
 
68277
- },{}],416:[function(require,module,exports){
69385
+ },{}],417:[function(require,module,exports){
68278
69386
  'use strict';
68279
69387
 
68280
69388
  /** @type {import('./range')} */
68281
69389
  module.exports = RangeError;
68282
69390
 
68283
- },{}],417:[function(require,module,exports){
69391
+ },{}],418:[function(require,module,exports){
68284
69392
  'use strict';
68285
69393
 
68286
69394
  /** @type {import('./ref')} */
68287
69395
  module.exports = ReferenceError;
68288
69396
 
68289
- },{}],418:[function(require,module,exports){
69397
+ },{}],419:[function(require,module,exports){
68290
69398
  'use strict';
68291
69399
 
68292
69400
  /** @type {import('./syntax')} */
68293
69401
  module.exports = SyntaxError;
68294
69402
 
68295
- },{}],419:[function(require,module,exports){
69403
+ },{}],420:[function(require,module,exports){
68296
69404
  'use strict';
68297
69405
 
68298
69406
  /** @type {import('./type')} */
68299
69407
  module.exports = TypeError;
68300
69408
 
68301
- },{}],420:[function(require,module,exports){
69409
+ },{}],421:[function(require,module,exports){
68302
69410
  'use strict';
68303
69411
 
68304
69412
  /** @type {import('./uri')} */
68305
69413
  module.exports = URIError;
68306
69414
 
68307
- },{}],421:[function(require,module,exports){
69415
+ },{}],422:[function(require,module,exports){
68308
69416
  'use strict';
68309
69417
 
68310
69418
  /** @type {import('.')} */
68311
69419
  module.exports = Object;
68312
69420
 
68313
- },{}],422:[function(require,module,exports){
69421
+ },{}],423:[function(require,module,exports){
68314
69422
  'use strict';
68315
69423
 
68316
69424
  var isCallable = require('is-callable');
@@ -68381,7 +69489,7 @@ module.exports = function forEach(list, iterator, thisArg) {
68381
69489
  }
68382
69490
  };
68383
69491
 
68384
- },{"is-callable":438}],423:[function(require,module,exports){
69492
+ },{"is-callable":439}],424:[function(require,module,exports){
68385
69493
  'use strict';
68386
69494
 
68387
69495
  /* eslint no-invalid-this: 1 */
@@ -68467,14 +69575,14 @@ module.exports = function bind(that) {
68467
69575
  return bound;
68468
69576
  };
68469
69577
 
68470
- },{}],424:[function(require,module,exports){
69578
+ },{}],425:[function(require,module,exports){
68471
69579
  'use strict';
68472
69580
 
68473
69581
  var implementation = require('./implementation');
68474
69582
 
68475
69583
  module.exports = Function.prototype.bind || implementation;
68476
69584
 
68477
- },{"./implementation":423}],425:[function(require,module,exports){
69585
+ },{"./implementation":424}],426:[function(require,module,exports){
68478
69586
  'use strict';
68479
69587
 
68480
69588
  var undefined;
@@ -68854,7 +69962,7 @@ module.exports = function GetIntrinsic(name, allowMissing) {
68854
69962
  return value;
68855
69963
  };
68856
69964
 
68857
- },{"call-bind-apply-helpers/functionApply":405,"call-bind-apply-helpers/functionCall":406,"es-define-property":413,"es-errors":415,"es-errors/eval":414,"es-errors/range":416,"es-errors/ref":417,"es-errors/syntax":418,"es-errors/type":419,"es-errors/uri":420,"es-object-atoms":421,"function-bind":424,"get-proto":428,"get-proto/Object.getPrototypeOf":426,"get-proto/Reflect.getPrototypeOf":427,"gopd":430,"has-symbols":432,"hasown":435,"math-intrinsics/abs":442,"math-intrinsics/floor":443,"math-intrinsics/max":445,"math-intrinsics/min":446,"math-intrinsics/pow":447,"math-intrinsics/round":448,"math-intrinsics/sign":449}],426:[function(require,module,exports){
69965
+ },{"call-bind-apply-helpers/functionApply":406,"call-bind-apply-helpers/functionCall":407,"es-define-property":414,"es-errors":416,"es-errors/eval":415,"es-errors/range":417,"es-errors/ref":418,"es-errors/syntax":419,"es-errors/type":420,"es-errors/uri":421,"es-object-atoms":422,"function-bind":425,"get-proto":429,"get-proto/Object.getPrototypeOf":427,"get-proto/Reflect.getPrototypeOf":428,"gopd":431,"has-symbols":433,"hasown":436,"math-intrinsics/abs":443,"math-intrinsics/floor":444,"math-intrinsics/max":446,"math-intrinsics/min":447,"math-intrinsics/pow":448,"math-intrinsics/round":449,"math-intrinsics/sign":450}],427:[function(require,module,exports){
68858
69966
  'use strict';
68859
69967
 
68860
69968
  var $Object = require('es-object-atoms');
@@ -68862,13 +69970,13 @@ var $Object = require('es-object-atoms');
68862
69970
  /** @type {import('./Object.getPrototypeOf')} */
68863
69971
  module.exports = $Object.getPrototypeOf || null;
68864
69972
 
68865
- },{"es-object-atoms":421}],427:[function(require,module,exports){
69973
+ },{"es-object-atoms":422}],428:[function(require,module,exports){
68866
69974
  'use strict';
68867
69975
 
68868
69976
  /** @type {import('./Reflect.getPrototypeOf')} */
68869
69977
  module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;
68870
69978
 
68871
- },{}],428:[function(require,module,exports){
69979
+ },{}],429:[function(require,module,exports){
68872
69980
  'use strict';
68873
69981
 
68874
69982
  var reflectGetProto = require('./Reflect.getPrototypeOf');
@@ -68897,13 +70005,13 @@ module.exports = reflectGetProto
68897
70005
  }
68898
70006
  : null;
68899
70007
 
68900
- },{"./Object.getPrototypeOf":426,"./Reflect.getPrototypeOf":427,"dunder-proto/get":412}],429:[function(require,module,exports){
70008
+ },{"./Object.getPrototypeOf":427,"./Reflect.getPrototypeOf":428,"dunder-proto/get":413}],430:[function(require,module,exports){
68901
70009
  'use strict';
68902
70010
 
68903
70011
  /** @type {import('./gOPD')} */
68904
70012
  module.exports = Object.getOwnPropertyDescriptor;
68905
70013
 
68906
- },{}],430:[function(require,module,exports){
70014
+ },{}],431:[function(require,module,exports){
68907
70015
  'use strict';
68908
70016
 
68909
70017
  /** @type {import('.')} */
@@ -68920,7 +70028,7 @@ if ($gOPD) {
68920
70028
 
68921
70029
  module.exports = $gOPD;
68922
70030
 
68923
- },{"./gOPD":429}],431:[function(require,module,exports){
70031
+ },{"./gOPD":430}],432:[function(require,module,exports){
68924
70032
  'use strict';
68925
70033
 
68926
70034
  var $defineProperty = require('es-define-property');
@@ -68944,7 +70052,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
68944
70052
 
68945
70053
  module.exports = hasPropertyDescriptors;
68946
70054
 
68947
- },{"es-define-property":413}],432:[function(require,module,exports){
70055
+ },{"es-define-property":414}],433:[function(require,module,exports){
68948
70056
  'use strict';
68949
70057
 
68950
70058
  var origSymbol = typeof Symbol !== 'undefined' && Symbol;
@@ -68960,7 +70068,7 @@ module.exports = function hasNativeSymbols() {
68960
70068
  return hasSymbolSham();
68961
70069
  };
68962
70070
 
68963
- },{"./shams":433}],433:[function(require,module,exports){
70071
+ },{"./shams":434}],434:[function(require,module,exports){
68964
70072
  'use strict';
68965
70073
 
68966
70074
  /** @type {import('./shams')} */
@@ -69007,7 +70115,7 @@ module.exports = function hasSymbols() {
69007
70115
  return true;
69008
70116
  };
69009
70117
 
69010
- },{}],434:[function(require,module,exports){
70118
+ },{}],435:[function(require,module,exports){
69011
70119
  'use strict';
69012
70120
 
69013
70121
  var hasSymbols = require('has-symbols/shams');
@@ -69017,7 +70125,7 @@ module.exports = function hasToStringTagShams() {
69017
70125
  return hasSymbols() && !!Symbol.toStringTag;
69018
70126
  };
69019
70127
 
69020
- },{"has-symbols/shams":433}],435:[function(require,module,exports){
70128
+ },{"has-symbols/shams":434}],436:[function(require,module,exports){
69021
70129
  'use strict';
69022
70130
 
69023
70131
  var call = Function.prototype.call;
@@ -69027,7 +70135,7 @@ var bind = require('function-bind');
69027
70135
  /** @type {import('.')} */
69028
70136
  module.exports = bind.call(call, $hasOwn);
69029
70137
 
69030
- },{"function-bind":424}],436:[function(require,module,exports){
70138
+ },{"function-bind":425}],437:[function(require,module,exports){
69031
70139
  if (typeof Object.create === 'function') {
69032
70140
  // implementation from standard node.js 'util' module
69033
70141
  module.exports = function inherits(ctor, superCtor) {
@@ -69056,7 +70164,7 @@ if (typeof Object.create === 'function') {
69056
70164
  }
69057
70165
  }
69058
70166
 
69059
- },{}],437:[function(require,module,exports){
70167
+ },{}],438:[function(require,module,exports){
69060
70168
  'use strict';
69061
70169
 
69062
70170
  var hasToStringTag = require('has-tostringtag/shams')();
@@ -69102,7 +70210,7 @@ isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests
69102
70210
  /** @type {import('.')} */
69103
70211
  module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;
69104
70212
 
69105
- },{"call-bound":410,"has-tostringtag/shams":434}],438:[function(require,module,exports){
70213
+ },{"call-bound":411,"has-tostringtag/shams":435}],439:[function(require,module,exports){
69106
70214
  'use strict';
69107
70215
 
69108
70216
  var fnToStr = Function.prototype.toString;
@@ -69205,7 +70313,7 @@ module.exports = reflectApply
69205
70313
  return tryFunctionObject(value);
69206
70314
  };
69207
70315
 
69208
- },{}],439:[function(require,module,exports){
70316
+ },{}],440:[function(require,module,exports){
69209
70317
  'use strict';
69210
70318
 
69211
70319
  var callBound = require('call-bound');
@@ -69254,7 +70362,7 @@ module.exports = function isGeneratorFunction(fn) {
69254
70362
  return getProto(fn) === GeneratorFunction;
69255
70363
  };
69256
70364
 
69257
- },{"call-bound":410,"get-proto":428,"has-tostringtag/shams":434,"safe-regex-test":457}],440:[function(require,module,exports){
70365
+ },{"call-bound":411,"get-proto":429,"has-tostringtag/shams":435,"safe-regex-test":458}],441:[function(require,module,exports){
69258
70366
  'use strict';
69259
70367
 
69260
70368
  var callBound = require('call-bound');
@@ -69325,7 +70433,7 @@ if (hasToStringTag) {
69325
70433
 
69326
70434
  module.exports = fn;
69327
70435
 
69328
- },{"call-bound":410,"gopd":430,"has-tostringtag/shams":434,"hasown":435}],441:[function(require,module,exports){
70436
+ },{"call-bound":411,"gopd":431,"has-tostringtag/shams":435,"hasown":436}],442:[function(require,module,exports){
69329
70437
  'use strict';
69330
70438
 
69331
70439
  var whichTypedArray = require('which-typed-array');
@@ -69335,19 +70443,19 @@ module.exports = function isTypedArray(value) {
69335
70443
  return !!whichTypedArray(value);
69336
70444
  };
69337
70445
 
69338
- },{"which-typed-array":462}],442:[function(require,module,exports){
70446
+ },{"which-typed-array":463}],443:[function(require,module,exports){
69339
70447
  'use strict';
69340
70448
 
69341
70449
  /** @type {import('./abs')} */
69342
70450
  module.exports = Math.abs;
69343
70451
 
69344
- },{}],443:[function(require,module,exports){
70452
+ },{}],444:[function(require,module,exports){
69345
70453
  'use strict';
69346
70454
 
69347
70455
  /** @type {import('./floor')} */
69348
70456
  module.exports = Math.floor;
69349
70457
 
69350
- },{}],444:[function(require,module,exports){
70458
+ },{}],445:[function(require,module,exports){
69351
70459
  'use strict';
69352
70460
 
69353
70461
  /** @type {import('./isNaN')} */
@@ -69355,31 +70463,31 @@ module.exports = Number.isNaN || function isNaN(a) {
69355
70463
  return a !== a;
69356
70464
  };
69357
70465
 
69358
- },{}],445:[function(require,module,exports){
70466
+ },{}],446:[function(require,module,exports){
69359
70467
  'use strict';
69360
70468
 
69361
70469
  /** @type {import('./max')} */
69362
70470
  module.exports = Math.max;
69363
70471
 
69364
- },{}],446:[function(require,module,exports){
70472
+ },{}],447:[function(require,module,exports){
69365
70473
  'use strict';
69366
70474
 
69367
70475
  /** @type {import('./min')} */
69368
70476
  module.exports = Math.min;
69369
70477
 
69370
- },{}],447:[function(require,module,exports){
70478
+ },{}],448:[function(require,module,exports){
69371
70479
  'use strict';
69372
70480
 
69373
70481
  /** @type {import('./pow')} */
69374
70482
  module.exports = Math.pow;
69375
70483
 
69376
- },{}],448:[function(require,module,exports){
70484
+ },{}],449:[function(require,module,exports){
69377
70485
  'use strict';
69378
70486
 
69379
70487
  /** @type {import('./round')} */
69380
70488
  module.exports = Math.round;
69381
70489
 
69382
- },{}],449:[function(require,module,exports){
70490
+ },{}],450:[function(require,module,exports){
69383
70491
  'use strict';
69384
70492
 
69385
70493
  var $isNaN = require('./isNaN');
@@ -69392,7 +70500,7 @@ module.exports = function sign(number) {
69392
70500
  return number < 0 ? -1 : +1;
69393
70501
  };
69394
70502
 
69395
- },{"./isNaN":444}],450:[function(require,module,exports){
70503
+ },{"./isNaN":445}],451:[function(require,module,exports){
69396
70504
  'use strict';
69397
70505
 
69398
70506
  var keysShim;
@@ -69516,7 +70624,7 @@ if (!Object.keys) {
69516
70624
  }
69517
70625
  module.exports = keysShim;
69518
70626
 
69519
- },{"./isArguments":452}],451:[function(require,module,exports){
70627
+ },{"./isArguments":453}],452:[function(require,module,exports){
69520
70628
  'use strict';
69521
70629
 
69522
70630
  var slice = Array.prototype.slice;
@@ -69550,7 +70658,7 @@ keysShim.shim = function shimObjectKeys() {
69550
70658
 
69551
70659
  module.exports = keysShim;
69552
70660
 
69553
- },{"./implementation":450,"./isArguments":452}],452:[function(require,module,exports){
70661
+ },{"./implementation":451,"./isArguments":453}],453:[function(require,module,exports){
69554
70662
  'use strict';
69555
70663
 
69556
70664
  var toStr = Object.prototype.toString;
@@ -69569,7 +70677,7 @@ module.exports = function isArguments(value) {
69569
70677
  return isArgs;
69570
70678
  };
69571
70679
 
69572
- },{}],453:[function(require,module,exports){
70680
+ },{}],454:[function(require,module,exports){
69573
70681
  'use strict';
69574
70682
 
69575
70683
  // modified from https://github.com/es-shims/es6-shim
@@ -69617,7 +70725,7 @@ module.exports = function assign(target, source1) {
69617
70725
  return to; // step 4
69618
70726
  };
69619
70727
 
69620
- },{"call-bound":410,"es-object-atoms":421,"has-symbols/shams":433,"object-keys":451}],454:[function(require,module,exports){
70728
+ },{"call-bound":411,"es-object-atoms":422,"has-symbols/shams":434,"object-keys":452}],455:[function(require,module,exports){
69621
70729
  'use strict';
69622
70730
 
69623
70731
  var implementation = require('./implementation');
@@ -69674,7 +70782,7 @@ module.exports = function getPolyfill() {
69674
70782
  return Object.assign;
69675
70783
  };
69676
70784
 
69677
- },{"./implementation":453}],455:[function(require,module,exports){
70785
+ },{"./implementation":454}],456:[function(require,module,exports){
69678
70786
  'use strict';
69679
70787
 
69680
70788
  /** @type {import('.')} */
@@ -69693,7 +70801,7 @@ module.exports = [
69693
70801
  'BigUint64Array'
69694
70802
  ];
69695
70803
 
69696
- },{}],456:[function(require,module,exports){
70804
+ },{}],457:[function(require,module,exports){
69697
70805
  // shim for using process in browser
69698
70806
  var process = module.exports = {};
69699
70807
 
@@ -69879,7 +70987,7 @@ process.chdir = function (dir) {
69879
70987
  };
69880
70988
  process.umask = function() { return 0; };
69881
70989
 
69882
- },{}],457:[function(require,module,exports){
70990
+ },{}],458:[function(require,module,exports){
69883
70991
  'use strict';
69884
70992
 
69885
70993
  var callBound = require('call-bound');
@@ -69898,7 +71006,7 @@ module.exports = function regexTester(regex) {
69898
71006
  };
69899
71007
  };
69900
71008
 
69901
- },{"call-bound":410,"es-errors/type":419,"is-regex":440}],458:[function(require,module,exports){
71009
+ },{"call-bound":411,"es-errors/type":420,"is-regex":441}],459:[function(require,module,exports){
69902
71010
  'use strict';
69903
71011
 
69904
71012
  var GetIntrinsic = require('get-intrinsic');
@@ -69942,9 +71050,9 @@ module.exports = function setFunctionLength(fn, length) {
69942
71050
  return fn;
69943
71051
  };
69944
71052
 
69945
- },{"define-data-property":411,"es-errors/type":419,"get-intrinsic":425,"gopd":430,"has-property-descriptors":431}],459:[function(require,module,exports){
69946
- arguments[4][399][0].apply(exports,arguments)
69947
- },{"dup":399}],460:[function(require,module,exports){
71053
+ },{"define-data-property":412,"es-errors/type":420,"get-intrinsic":426,"gopd":431,"has-property-descriptors":432}],460:[function(require,module,exports){
71054
+ arguments[4][400][0].apply(exports,arguments)
71055
+ },{"dup":400}],461:[function(require,module,exports){
69948
71056
  // Currently in sync with Node.js lib/internal/util/types.js
69949
71057
  // https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9
69950
71058
 
@@ -70280,7 +71388,7 @@ exports.isAnyArrayBuffer = isAnyArrayBuffer;
70280
71388
  });
70281
71389
  });
70282
71390
 
70283
- },{"is-arguments":437,"is-generator-function":439,"is-typed-array":441,"which-typed-array":462}],461:[function(require,module,exports){
71391
+ },{"is-arguments":438,"is-generator-function":440,"is-typed-array":442,"which-typed-array":463}],462:[function(require,module,exports){
70284
71392
  (function (process){(function (){
70285
71393
  // Copyright Joyent, Inc. and other Node contributors.
70286
71394
  //
@@ -70999,7 +72107,7 @@ function callbackify(original) {
70999
72107
  exports.callbackify = callbackify;
71000
72108
 
71001
72109
  }).call(this)}).call(this,require('_process'))
71002
- },{"./support/isBuffer":459,"./support/types":460,"_process":456,"inherits":436}],462:[function(require,module,exports){
72110
+ },{"./support/isBuffer":460,"./support/types":461,"_process":457,"inherits":437}],463:[function(require,module,exports){
71003
72111
  (function (global){(function (){
71004
72112
  'use strict';
71005
72113
 
@@ -71120,5 +72228,5 @@ module.exports = function whichTypedArray(value) {
71120
72228
  };
71121
72229
 
71122
72230
  }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
71123
- },{"available-typed-arrays":401,"call-bind":409,"call-bound":410,"for-each":422,"get-proto":428,"gopd":430,"has-tostringtag/shams":434}]},{},[134])(134)
72231
+ },{"available-typed-arrays":402,"call-bind":410,"call-bound":411,"for-each":423,"get-proto":429,"gopd":431,"has-tostringtag/shams":435}]},{},[134])(134)
71124
72232
  });