@designliquido/delegua 0.46.1 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  2. package/analisador-semantico/analisador-semantico.js +2 -1
  3. package/analisador-semantico/analisador-semantico.js.map +1 -1
  4. package/avaliador-sintatico/avaliador-sintatico-base.js +1 -1
  5. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  6. package/avaliador-sintatico/avaliador-sintatico.js +12 -8
  7. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  8. package/avaliador-sintatico/comum.d.ts +2 -2
  9. package/avaliador-sintatico/comum.d.ts.map +1 -1
  10. package/avaliador-sintatico/comum.js.map +1 -1
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts.map +1 -1
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +27 -19
  17. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
  18. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  19. package/bibliotecas/biblioteca-global.js.map +1 -1
  20. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  21. package/bibliotecas/primitivas-dicionario.js +6 -12
  22. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  23. package/bibliotecas/primitivas-numero.js +6 -6
  24. package/bibliotecas/primitivas-numero.js.map +1 -1
  25. package/bin/package.json +1 -1
  26. package/construtos/referencia-biblioteca-global.d.ts.map +1 -1
  27. package/construtos/referencia-biblioteca-global.js.map +1 -1
  28. package/informacao-variavel-ou-constante.d.ts +1 -0
  29. package/informacao-variavel-ou-constante.d.ts.map +1 -1
  30. package/informacao-variavel-ou-constante.js.map +1 -1
  31. package/interfaces/escopo-execucao.d.ts +2 -2
  32. package/interfaces/escopo-execucao.d.ts.map +1 -1
  33. package/interfaces/interpretador-interface.d.ts +2 -2
  34. package/interfaces/interpretador-interface.d.ts.map +1 -1
  35. package/interfaces/pilha-escopos-execucao-interface.d.ts +1 -0
  36. package/interfaces/pilha-escopos-execucao-interface.d.ts.map +1 -1
  37. package/interfaces/primitiva-interface.d.ts +3 -0
  38. package/interfaces/primitiva-interface.d.ts.map +1 -1
  39. package/interpretador/depuracao/comum.d.ts +13 -13
  40. package/interpretador/depuracao/comum.d.ts.map +1 -1
  41. package/interpretador/depuracao/comum.js +24 -24
  42. package/interpretador/depuracao/comum.js.map +1 -1
  43. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +9 -9
  44. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts.map +1 -1
  45. package/interpretador/depuracao/interpretador-base-com-depuracao.js.map +1 -1
  46. package/interpretador/depuracao/interpretador-com-depuracao.d.ts +3 -3
  47. package/interpretador/depuracao/interpretador-com-depuracao.d.ts.map +1 -1
  48. package/interpretador/depuracao/interpretador-com-depuracao.js +3 -3
  49. package/interpretador/depuracao/interpretador-com-depuracao.js.map +1 -1
  50. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +2 -2
  51. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  52. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +5 -5
  53. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  54. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +2 -2
  55. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
  56. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  57. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +2 -2
  58. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  59. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +4 -4
  60. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  61. package/{espaco-variaveis.d.ts → interpretador/espaco-memoria.d.ts} +10 -7
  62. package/interpretador/espaco-memoria.d.ts.map +1 -0
  63. package/{espaco-variaveis.js → interpretador/espaco-memoria.js} +10 -7
  64. package/interpretador/espaco-memoria.js.map +1 -0
  65. package/interpretador/estruturas/delegua-funcao.d.ts +2 -2
  66. package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
  67. package/interpretador/estruturas/delegua-funcao.js +2 -2
  68. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  69. package/interpretador/estruturas/descritor-tipo-classe.d.ts +1 -1
  70. package/interpretador/estruturas/descritor-tipo-classe.d.ts.map +1 -1
  71. package/interpretador/estruturas/index.d.ts +1 -0
  72. package/interpretador/estruturas/index.d.ts.map +1 -1
  73. package/interpretador/estruturas/index.js +1 -0
  74. package/interpretador/estruturas/index.js.map +1 -1
  75. package/interpretador/estruturas/referencia-montao.d.ts +15 -0
  76. package/interpretador/estruturas/referencia-montao.d.ts.map +1 -0
  77. package/interpretador/estruturas/referencia-montao.js +24 -0
  78. package/interpretador/estruturas/referencia-montao.js.map +1 -0
  79. package/interpretador/interpretador-base.d.ts +6 -4
  80. package/interpretador/interpretador-base.d.ts.map +1 -1
  81. package/interpretador/interpretador-base.js +25 -15
  82. package/interpretador/interpretador-base.js.map +1 -1
  83. package/interpretador/interpretador-com-depuracao.d.ts +191 -0
  84. package/interpretador/interpretador-com-depuracao.d.ts.map +1 -0
  85. package/interpretador/interpretador-com-depuracao.js +585 -0
  86. package/interpretador/interpretador-com-depuracao.js.map +1 -0
  87. package/interpretador/interpretador.d.ts +42 -2
  88. package/interpretador/interpretador.d.ts.map +1 -1
  89. package/interpretador/interpretador.js +230 -8
  90. package/interpretador/interpretador.js.map +1 -1
  91. package/interpretador/montao.d.ts +38 -0
  92. package/interpretador/montao.d.ts.map +1 -0
  93. package/interpretador/montao.js +56 -0
  94. package/interpretador/montao.js.map +1 -0
  95. package/interpretador/pilha-escopos-execucao.d.ts +1 -0
  96. package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
  97. package/interpretador/pilha-escopos-execucao.js +31 -26
  98. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  99. package/lexador/dialetos/lexador-tenda.d.ts.map +1 -1
  100. package/lexador/dialetos/lexador-tenda.js +4 -2
  101. package/lexador/dialetos/lexador-tenda.js.map +1 -1
  102. package/lexador/dialetos/palavras-reservadas/tenda.js +1 -1
  103. package/package.json +1 -1
  104. package/tipos-de-simbolos/tenda.d.ts.map +1 -1
  105. package/tipos-de-simbolos/tenda.js.map +1 -1
  106. package/tradutores/tradutor-assembly-x64.js +13 -13
  107. package/tradutores/tradutor-portugol-ipt.d.ts +1 -1
  108. package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
  109. package/tradutores/tradutor-portugol-ipt.js +5 -5
  110. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  111. package/tradutores/tradutor-reverso-tenda.d.ts.map +1 -1
  112. package/tradutores/tradutor-reverso-tenda.js +15 -7
  113. package/tradutores/tradutor-reverso-tenda.js.map +1 -1
  114. package/umd/delegua.js +785 -446
  115. package/espaco-variaveis.d.ts.map +0 -1
  116. package/espaco-variaveis.js.map +0 -1
@@ -1,12 +1,22 @@
1
- import { AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, ReferenciaFuncao, TipoDe } from '../construtos';
1
+ import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, Atribuir, Construto, Dicionario, ReferenciaFuncao, TipoDe } from '../construtos';
2
+ import { ReferenciaMontao } from './estruturas';
3
+ import { RetornoInterpretador } from '../interfaces';
2
4
  import { InterpretadorBase } from './interpretador-base';
3
- import { FuncaoDeclaracao, Retorna } from '../declaracoes';
5
+ import { Const, ConstMultiplo, Declaracao, FuncaoDeclaracao, Retorna, Var, VarMultiplo } from '../declaracoes';
4
6
  import { RetornoQuebra } from '../quebras';
7
+ import { Montao } from './montao';
5
8
  /**
6
9
  * O interpretador de Delégua.
7
10
  */
8
11
  export declare class Interpretador extends InterpretadorBase {
12
+ montao: Montao;
13
+ constructor(diretorioBase: string, performance?: boolean, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function);
14
+ protected resolverReferenciaMontao(referenciaMontao: ReferenciaMontao): any;
15
+ protected resolverValor(objeto: any): any;
16
+ avaliacaoDeclaracaoVarOuConst(declaracao: Const | ConstMultiplo | Var | VarMultiplo): Promise<any>;
17
+ avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>;
9
18
  visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
19
+ visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>;
10
20
  visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any>;
11
21
  /**
12
22
  * Casos que ocorrem aqui:
@@ -20,8 +30,38 @@ export declare class Interpretador extends InterpretadorBase {
20
30
  visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>;
21
31
  visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any>;
22
32
  visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any>;
33
+ /**
34
+ * Execução de uma expressão de atribuição.
35
+ * @param expressao A expressão.
36
+ * @returns O valor atribuído.
37
+ */
38
+ visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>;
39
+ /**
40
+ * Dicionários em Delégua são passados por referência, portanto, são
41
+ * armazenados no montão.
42
+ */
43
+ visitarExpressaoDicionario(expressao: Dicionario): Promise<any>;
23
44
  visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any>;
24
45
  visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
25
46
  visitarExpressaoTipoDe(expressao: TipoDe): Promise<string>;
47
+ /**
48
+ * Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
49
+ * Esse método pega exceções, mas apenas as devolve.
50
+ *
51
+ * O tratamento das exceções é feito de acordo com o bloco chamador.
52
+ * Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
53
+ * Em outros blocos, pode ser desejável ter o erro em tela.
54
+ * @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
55
+ * @returns O resultado da execução do escopo, se houver.
56
+ */
57
+ executarUltimoEscopo(manterAmbiente?: boolean): Promise<any>;
58
+ /**
59
+ * Método que efetivamente inicia o processo de interpretação.
60
+ * @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático.
61
+ * @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado
62
+ * pelo modo REPL (LAIR).
63
+ * @returns Um objeto com o resultado da interpretação.
64
+ */
65
+ interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretador>;
26
66
  }
27
67
  //# sourceMappingURL=interpretador.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpretador.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EAEzB,gBAAgB,EAChB,MAAM,EAET,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;IACvC,gCAAgC,CAAC,UAAU,EAAE,gBAAgB;IAOvD,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAgGlF;;;;;;;;OAQG;IACY,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IA4FA,iCAAiC,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqE7E,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IAOA,gCAAgC,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAK3E,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwC5E"}
1
+ {"version":3,"file":"interpretador.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,QAAQ,EACR,SAAS,EACT,UAAU,EAEV,gBAAgB,EAChB,MAAM,EAGT,MAAM,eAAe,CAAC;AACvB,OAAO,EAMH,gBAAgB,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAuC,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAU,aAAa,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAUlC;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;IAChD,MAAM,EAAE,MAAM,CAAC;gBAGX,aAAa,EAAE,MAAM,EACrB,WAAW,UAAQ,EACnB,eAAe,GAAE,QAAe,EAChC,yBAAyB,GAAE,QAAe;IAM9C,SAAS,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,gBAAgB;IAUrE,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG;IAoBpB,6BAA6B,CACxC,UAAU,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG,GAAG,WAAW,GACtD,OAAO,CAAC,GAAG,CAAC;IAcA,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxE,gCAAgC,CAAC,UAAU,EAAE,gBAAgB;IAOvD,oCAAoC,CAC/C,SAAS,EAAE,oBAAoB,GAChC,OAAO,CAAC,GAAG,CAAC;IAmGA,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAiGlF;;;;;;;;OAQG;IACY,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IA6FA,iCAAiC,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqE7E,yCAAyC,CACpD,SAAS,EAAE,yBAAyB,GACrC,OAAO,CAAC,GAAG,CAAC;IAOf;;;;OAIG;IACY,4BAA4B,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAsD9E;;;OAGG;IACY,0BAA0B,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB/D,gCAAgC,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAK3E,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDzE;;;;;;;;;OASG;IACY,oBAAoB,CAAC,cAAc,UAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IA2CzE;;;;;;OAMG;IACY,WAAW,CACtB,WAAW,EAAE,UAAU,EAAE,EACzB,cAAc,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,oBAAoB,CAAC;CAInC"}
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Interpretador = void 0;
7
+ const construtos_1 = require("../construtos");
7
8
  const estruturas_1 = require("./estruturas");
8
9
  const interpretador_base_1 = require("./interpretador-base");
9
10
  const inferenciador_1 = require("../inferenciador");
10
11
  const excecoes_1 = require("../excecoes");
11
12
  const quebras_1 = require("../quebras");
13
+ const montao_1 = require("./montao");
12
14
  const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
13
15
  const primitivas_numero_1 = __importDefault(require("../bibliotecas/primitivas-numero"));
14
16
  const primitivas_texto_1 = __importDefault(require("../bibliotecas/primitivas-texto"));
@@ -19,12 +21,109 @@ const delegua_1 = __importDefault(require("../tipos-de-dados/delegua"));
19
21
  * O interpretador de Delégua.
20
22
  */
21
23
  class Interpretador extends interpretador_base_1.InterpretadorBase {
24
+ constructor(diretorioBase, performance = false, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
25
+ super(diretorioBase, performance, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
26
+ this.montao = new montao_1.Montao();
27
+ }
28
+ resolverReferenciaMontao(referenciaMontao) {
29
+ const valorMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, referenciaMontao.endereco);
30
+ return valorMontao;
31
+ }
32
+ resolverValor(objeto) {
33
+ if (objeto === null || objeto === undefined) {
34
+ return objeto;
35
+ }
36
+ if (objeto instanceof estruturas_1.ReferenciaMontao) {
37
+ return this.resolverReferenciaMontao(objeto);
38
+ }
39
+ if (objeto.hasOwnProperty('valor')) {
40
+ if (objeto.valor instanceof estruturas_1.ReferenciaMontao) {
41
+ return this.resolverReferenciaMontao(objeto.valor);
42
+ }
43
+ return objeto.valor;
44
+ }
45
+ return objeto;
46
+ }
47
+ async avaliacaoDeclaracaoVarOuConst(declaracao) {
48
+ let valorOuOutraVariavel = null;
49
+ if (declaracao.inicializador !== null) {
50
+ valorOuOutraVariavel = await this.avaliar(declaracao.inicializador);
51
+ }
52
+ let valorFinal = null;
53
+ if (valorOuOutraVariavel !== null && valorOuOutraVariavel !== undefined) {
54
+ valorFinal = this.resolverValor(valorOuOutraVariavel);
55
+ }
56
+ return valorFinal;
57
+ }
58
+ async avaliarArgumentosEscreva(argumentos) {
59
+ let formatoTexto = '';
60
+ for (const argumento of argumentos) {
61
+ const resultadoAvaliacao = await this.avaliar(argumento);
62
+ let valor = this.resolverValor(resultadoAvaliacao);
63
+ formatoTexto += `${this.paraTexto(valor)} `;
64
+ }
65
+ return formatoTexto.trimEnd();
66
+ }
22
67
  visitarDeclaracaoDefinicaoFuncao(declaracao) {
23
68
  const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
24
69
  // TODO: Depreciar essa abordagem a favor do uso por referências.
25
70
  this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
26
71
  this.pilhaEscoposExecucao.registrarReferenciaFuncao(declaracao.id, funcao);
27
72
  }
73
+ async visitarExpressaoAcessoIndiceVariavel(expressao) {
74
+ const promises = await Promise.all([
75
+ this.avaliar(expressao.entidadeChamada),
76
+ this.avaliar(expressao.indice),
77
+ ]);
78
+ const variavelObjeto = promises[0];
79
+ const indice = promises[1];
80
+ const objeto = this.resolverValor(variavelObjeto);
81
+ let valorIndice = this.resolverValor(indice);
82
+ if (Array.isArray(objeto)) {
83
+ if (!Number.isInteger(valorIndice)) {
84
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha));
85
+ }
86
+ if (valorIndice < 0 && objeto.length !== 0) {
87
+ while (valorIndice < 0) {
88
+ valorIndice += objeto.length;
89
+ }
90
+ }
91
+ if (valorIndice >= objeto.length) {
92
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice do vetor fora do intervalo.', expressao.linha));
93
+ }
94
+ return objeto[valorIndice];
95
+ }
96
+ if (objeto instanceof construtos_1.Vetor) {
97
+ return objeto.valores[valorIndice];
98
+ }
99
+ if (objeto.constructor === Object ||
100
+ objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
101
+ objeto instanceof estruturas_1.DeleguaFuncao ||
102
+ objeto instanceof estruturas_1.DescritorTipoClasse ||
103
+ objeto instanceof estruturas_1.DeleguaModulo) {
104
+ if (objeto[valorIndice] === 0)
105
+ return 0;
106
+ return objeto[valorIndice] || null;
107
+ }
108
+ if (typeof objeto === primitivos_1.default.TEXTO) {
109
+ if (!Number.isInteger(valorIndice)) {
110
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha));
111
+ }
112
+ if (valorIndice < 0 && objeto.length !== 0) {
113
+ while (valorIndice < 0) {
114
+ valorIndice += objeto.length;
115
+ }
116
+ }
117
+ if (valorIndice >= objeto.length) {
118
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice fora do tamanho.', expressao.linha));
119
+ }
120
+ return objeto.charAt(valorIndice);
121
+ }
122
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
123
+ hashArquivo: this.hashArquivoDeclaracaoAtual,
124
+ linha: this.linhaDeclaracaoAtual,
125
+ }, 'Somente listas, dicionários, classes e objetos podem ter seus valores indexados.', expressao.linha));
126
+ }
28
127
  async visitarExpressaoAcessoMetodo(expressao) {
29
128
  let variavelObjeto = await this.avaliar(expressao.objeto);
30
129
  // Este caso acontece quando há encadeamento de métodos.
@@ -34,9 +133,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
34
133
  if (variavelObjeto.constructor.name === 'RetornoQuebra') {
35
134
  variavelObjeto = variavelObjeto.valor;
36
135
  }
37
- const objeto = variavelObjeto.hasOwnProperty('valor')
38
- ? variavelObjeto.valor
39
- : variavelObjeto;
136
+ const objeto = this.resolverValor(variavelObjeto);
40
137
  if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
41
138
  return objeto.obterMetodo(expressao.nomeMetodo) || null;
42
139
  }
@@ -96,7 +193,10 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
96
193
  }
97
194
  break;
98
195
  }
99
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Método para objeto ou primitiva não encontrado: ${expressao.nomeMetodo}.`, expressao.linha));
196
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao({
197
+ hashArquivo: this.hashArquivoDeclaracaoAtual,
198
+ linha: this.linhaDeclaracaoAtual,
199
+ }, `Método para objeto ou primitiva não encontrado: ${expressao.nomeMetodo}.`, expressao.linha));
100
200
  }
101
201
  /**
102
202
  * Casos que ocorrem aqui:
@@ -116,9 +216,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
116
216
  if (variavelObjeto.constructor.name === 'RetornoQuebra') {
117
217
  variavelObjeto = variavelObjeto.valor;
118
218
  }
119
- const objeto = variavelObjeto.hasOwnProperty('valor')
120
- ? variavelObjeto.valor
121
- : variavelObjeto;
219
+ const objeto = this.resolverValor(variavelObjeto);
122
220
  if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
123
221
  return objeto.obter(expressao.simbolo);
124
222
  }
@@ -173,7 +271,8 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
173
271
  }
174
272
  // Último caso válido: objeto de uma classe JavaScript que possua a propriedade.
175
273
  // Exemplos: classes de LinConEs, como `RetornoComando, ou bibliotecas globais com objetos próprios`.
176
- if (objeto.hasOwnProperty(expressao.simbolo.lexema) || typeof objeto[expressao.simbolo.lexema] !== 'undefined') {
274
+ if (objeto.hasOwnProperty(expressao.simbolo.lexema) ||
275
+ typeof objeto[expressao.simbolo.lexema] !== 'undefined') {
177
276
  return objeto[expressao.simbolo.lexema];
178
277
  }
179
278
  return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Método ou propriedade para objeto ou primitiva não encontrado: ${expressao.simbolo.lexema}.`, expressao.linha));
@@ -230,6 +329,70 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
230
329
  const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
231
330
  return deleguaFuncao;
232
331
  }
332
+ /**
333
+ * Execução de uma expressão de atribuição.
334
+ * @param expressao A expressão.
335
+ * @returns O valor atribuído.
336
+ */
337
+ async visitarExpressaoDeAtribuicao(expressao) {
338
+ const valor = await this.avaliar(expressao.valor);
339
+ const valorResolvido = this.resolverValor(valor);
340
+ let indice = null;
341
+ if (expressao.indice) {
342
+ indice = await this.avaliar(expressao.indice);
343
+ }
344
+ switch (expressao.alvo.constructor.name) {
345
+ case 'Variavel':
346
+ const alvoVariavel = expressao.alvo;
347
+ const variavelResolvida = this.pilhaEscoposExecucao.obterValorVariavel(alvoVariavel.simbolo);
348
+ if (variavelResolvida.valor instanceof estruturas_1.ReferenciaMontao) {
349
+ const referenciaMontao = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, variavelResolvida.valor.endereco);
350
+ referenciaMontao[indice] = valorResolvido;
351
+ }
352
+ else {
353
+ this.pilhaEscoposExecucao.atribuirVariavel(alvoVariavel.simbolo, valorResolvido, indice);
354
+ }
355
+ break;
356
+ case 'AcessoMetodoOuPropriedade':
357
+ // Nunca será método aqui: apenas propriedade.
358
+ const alvoPropriedade = expressao.alvo;
359
+ const variavelObjeto = await this.avaliar(alvoPropriedade.objeto);
360
+ const objeto = this.resolverValor(variavelObjeto);
361
+ const valor = await this.avaliar(expressao.valor);
362
+ if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
363
+ const objetoDeleguaClasse = objeto;
364
+ objetoDeleguaClasse.definir(alvoPropriedade.simbolo, valor);
365
+ }
366
+ break;
367
+ default:
368
+ throw new excecoes_1.ErroEmTempoDeExecucao(null, `Atribuição com caso faltante: ${expressao.alvo.constructor.name}.`);
369
+ }
370
+ return valorResolvido;
371
+ }
372
+ /**
373
+ * Dicionários em Delégua são passados por referência, portanto, são
374
+ * armazenados no montão.
375
+ */
376
+ async visitarExpressaoDicionario(expressao) {
377
+ const dicionario = {};
378
+ for (let i = 0; i < expressao.chaves.length; i++) {
379
+ const promises = await Promise.all([
380
+ this.avaliar(expressao.chaves[i]),
381
+ this.avaliar(expressao.valores[i]),
382
+ ]);
383
+ if (typeof promises[0] === 'boolean') {
384
+ const chaveLogico = promises[0] === true ? 'verdadeiro' : 'falso';
385
+ dicionario[chaveLogico] = promises[1];
386
+ continue;
387
+ }
388
+ dicionario[promises[0]] = promises[1].hasOwnProperty('valor')
389
+ ? promises[1].valor
390
+ : promises[1];
391
+ }
392
+ const enderecoDicionarioMontao = this.montao.adicionarReferencia(dicionario);
393
+ this.pilhaEscoposExecucao.registrarReferenciaMontao(enderecoDicionarioMontao);
394
+ return new estruturas_1.ReferenciaMontao(enderecoDicionarioMontao);
395
+ }
233
396
  async visitarExpressaoReferenciaFuncao(expressao) {
234
397
  const deleguaFuncao = this.pilhaEscoposExecucao.obterReferenciaFuncao(expressao.idFuncao);
235
398
  return deleguaFuncao;
@@ -261,6 +424,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
261
424
  case 'Dicionario':
262
425
  case 'Unario':
263
426
  valorTipoDe = await this.avaliar(valorTipoDe);
427
+ if (valorTipoDe instanceof estruturas_1.ReferenciaMontao) {
428
+ valorTipoDe = this.montao.obterReferencia(this.hashArquivoDeclaracaoAtual, this.linhaDeclaracaoAtual, valorTipoDe.endereco);
429
+ }
264
430
  return valorTipoDe.tipo || (0, inferenciador_1.inferirTipoVariavel)(valorTipoDe);
265
431
  case 'AcessoMetodo':
266
432
  const acessoMetodo = valorTipoDe;
@@ -290,6 +456,62 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
290
456
  return (0, inferenciador_1.inferirTipoVariavel)(valorTipoDe);
291
457
  }
292
458
  }
459
+ /**
460
+ * Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
461
+ * Esse método pega exceções, mas apenas as devolve.
462
+ *
463
+ * O tratamento das exceções é feito de acordo com o bloco chamador.
464
+ * Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada.
465
+ * Em outros blocos, pode ser desejável ter o erro em tela.
466
+ * @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo.
467
+ * @returns O resultado da execução do escopo, se houver.
468
+ */
469
+ async executarUltimoEscopo(manterAmbiente = false) {
470
+ const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
471
+ let retornoExecucao;
472
+ try {
473
+ for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
474
+ ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
475
+ const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
476
+ this.linhaDeclaracaoAtual = declaracaoAtual.linha;
477
+ this.hashArquivoDeclaracaoAtual = declaracaoAtual.hashArquivo;
478
+ retornoExecucao = await this.executar(declaracaoAtual);
479
+ }
480
+ return retornoExecucao;
481
+ }
482
+ catch (erro) {
483
+ const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
484
+ if (!this.emDeclaracaoTente) {
485
+ this.erros.push({
486
+ erroInterno: erro,
487
+ linha: declaracaoAtual.linha,
488
+ hashArquivo: declaracaoAtual.hashArquivo,
489
+ });
490
+ }
491
+ else {
492
+ return Promise.reject(erro);
493
+ }
494
+ }
495
+ finally {
496
+ const escopoFinalizado = this.pilhaEscoposExecucao.removerUltimo();
497
+ const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
498
+ this.montao.excluirReferencias(...escopoFinalizado.espacoMemoria.enderecosMontao);
499
+ if (manterAmbiente || (retornoExecucao && retornoExecucao.preservarEscopo === true)) {
500
+ escopoAnterior.espacoMemoria.valores = Object.assign(escopoAnterior.espacoMemoria.valores, ultimoEscopo.espacoMemoria.valores);
501
+ }
502
+ }
503
+ }
504
+ /**
505
+ * Método que efetivamente inicia o processo de interpretação.
506
+ * @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático.
507
+ * @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado
508
+ * pelo modo REPL (LAIR).
509
+ * @returns Um objeto com o resultado da interpretação.
510
+ */
511
+ async interpretar(declaracoes, manterAmbiente) {
512
+ this.montao = new montao_1.Montao();
513
+ return super.interpretar(declaracoes, manterAmbiente);
514
+ }
293
515
  }
294
516
  exports.Interpretador = Interpretador;
295
517
  //# sourceMappingURL=interpretador.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpretador.js","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpretador.js","sourceRoot":"","sources":["../../fontes/interpretador/interpretador.ts"],"names":[],"mappings":";;;;;;AAAA,8CAcuB;AACvB,6CAOsB;AAEtB,6DAAyD;AACzD,oDAAuD;AACvD,0CAAoD;AAEpD,wCAAmD;AACnD,qCAAkC;AAElC,iGAAwE;AACxE,yFAAgE;AAChE,uFAA8D;AAC9D,uFAA8D;AAE9D,8EAAiE;AACjE,wEAA2D;AAE3D;;GAEG;AACH,MAAa,aAAc,SAAQ,sCAAiB;IAGhD,YACI,aAAqB,EACrB,WAAW,GAAG,KAAK,EACnB,kBAA4B,IAAI,EAChC,4BAAsC,IAAI;QAE1C,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,yBAAyB,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAC/B,CAAC;IAES,wBAAwB,CAAC,gBAAkC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAC3C,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,oBAAoB,EACzB,gBAAgB,CAAC,QAAQ,CAC5B,CAAC;QAEF,OAAO,WAAW,CAAC;IACvB,CAAC;IAES,aAAa,CAAC,MAAW;QAC/B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,MAAM,YAAY,6BAAgB,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,KAAK,YAAY,6BAAgB,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEQ,KAAK,CAAC,6BAA6B,CACxC,UAAqD;QAErD,IAAI,oBAAoB,GAAG,IAAI,CAAC;QAChC,IAAI,UAAU,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACpC,oBAAoB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACtE,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAEQ,KAAK,CAAC,wBAAwB,CAAC,UAAuB;QAC3D,IAAI,YAAY,GAAW,EAAE,CAAC;QAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACnD,YAAY,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,CAAC;QAED,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAEQ,gCAAgC,CAAC,UAA4B;QAClE,MAAM,MAAM,GAAG,IAAI,0BAAa,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/E,iEAAiE;QACjE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEQ,KAAK,CAAC,oCAAoC,CAC/C,SAA+B;QAE/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;SACjC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAsB,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB,SAAS,CAAC,iBAAiB,EAC3B,0DAA0D,EAC1D,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;YACN,CAAC;YAED,IAAI,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,WAAW,GAAG,CAAC,EAAE,CAAC;oBACrB,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;gBACjC,CAAC;YACL,CAAC;YAED,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB,SAAS,CAAC,iBAAiB,EAC3B,oCAAoC,EACpC,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;YACN,CAAC;YAED,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,MAAM,YAAY,kBAAK,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAED,IACI,MAAM,CAAC,WAAW,KAAK,MAAM;YAC7B,MAAM,YAAY,gCAAmB;YACrC,MAAM,YAAY,0BAAa;YAC/B,MAAM,YAAY,gCAAmB;YACrC,MAAM,YAAY,0BAAa,EACjC,CAAC;YACC,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,oBAAqB,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB,SAAS,CAAC,iBAAiB,EAC3B,0DAA0D,EAC1D,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;YACN,CAAC;YAED,IAAI,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,WAAW,GAAG,CAAC,EAAE,CAAC;oBACrB,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;gBACjC,CAAC;YACL,CAAC;YAED,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB,SAAS,CAAC,iBAAiB,EAC3B,yBAAyB,EACzB,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;YACN,CAAC;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB;YACI,WAAW,EAAE,IAAI,CAAC,0BAA0B;YAC5C,KAAK,EAAE,IAAI,CAAC,oBAAoB;SACf,EACrB,kFAAkF,EAClF,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;IACN,CAAC;IAEQ,KAAK,CAAC,4BAA4B,CAAC,SAAuB;QAC/D,IAAI,cAAc,GAAsB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE7E,wDAAwD;QACxD,8CAA8C;QAC9C,mEAAmE;QACnE,uBAAuB;QACvB,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtD,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAElD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACpD,OAAQ,MAA8B,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QACrF,CAAC;QAED,0DAA0D;QAC1D,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,UAAU,IAAI,+BAAoB,EAAE,CAAC;gBAC/C,MAAM,2BAA2B,GAC7B,+BAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;gBAC7D,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QAChD,CAAC;QAED,6EAA6E;QAC7E,6EAA6E;QAC7E,mDAAmD;QAEnD,4CAA4C;QAC5C,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAqB,CAAC,MAAM,EAAE,CAAC;YACvE,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,oBAAqB,CAAC,MAAM,EAAE,CAAC;YACvE,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAED,+DAA+D;QAC/D,cAAc;QACd,IAAI,MAAM,YAAY,0BAAa,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QAC5D,CAAC;QAED,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;QACrC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClD,UAAU,GAAG,IAAA,mCAAmB,EAAC,cAAqB,CAAC,CAAC;QAC5D,CAAC;QAED,yEAAyE;QACzE,yEAAyE;QACzE,cAAc;QACd,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,iBAAkB,CAAC,OAAO,CAAC;YAChC,KAAK,iBAAkB,CAAC,MAAM,CAAC;YAC/B,KAAK,iBAAkB,CAAC,MAAM;gBAC1B,MAAM,uBAAuB,GACzB,2BAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;gBACzD,IAAI,uBAAuB,EAAE,CAAC;oBAC1B,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;gBAChE,CAAC;gBACD,MAAM;YACV,KAAK,iBAAkB,CAAC,KAAK;gBACzB,MAAM,sBAAsB,GACxB,0BAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;gBACxD,IAAI,sBAAsB,EAAE,CAAC;oBACzB,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM;YACV,KAAK,iBAAkB,CAAC,KAAK,CAAC;YAC9B,KAAK,iBAAkB,CAAC,YAAY,CAAC;YACrC,KAAK,iBAAkB,CAAC,YAAY,CAAC;YACrC,KAAK,iBAAkB,CAAC,WAAW;gBAC/B,MAAM,sBAAsB,GACxB,0BAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;gBACxD,IAAI,sBAAsB,EAAE,CAAC;oBACzB,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM;QACd,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB;YACI,WAAW,EAAE,IAAI,CAAC,0BAA0B;YAC5C,KAAK,EAAE,IAAI,CAAC,oBAAoB;SACf,EACrB,mDAAmD,SAAS,CAAC,UAAU,GAAG,EAC1E,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACM,KAAK,CAAC,yCAAyC,CACpD,SAAoC;QAEpC,IAAI,cAAc,GAAsB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE7E,wDAAwD;QACxD,8CAA8C;QAC9C,mEAAmE;QACnE,uBAAuB;QACvB,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtD,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAElD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACpD,OAAQ,MAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAED,0DAA0D;QAC1D,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,+BAAoB,EAAE,CAAC;gBACnD,MAAM,2BAA2B,GAC7B,+BAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;gBACjE,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QACpD,CAAC;QAED,+DAA+D;QAC/D,cAAc;QACd,IAAI,MAAM,YAAY,0BAAa,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAChE,CAAC;QAED,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;QACrC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClD,UAAU,GAAG,IAAA,mCAAmB,EAAC,cAAqB,CAAC,CAAC;QAC5D,CAAC;QAED,yEAAyE;QACzE,yEAAyE;QACzE,cAAc;QACd,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,iBAAkB,CAAC,OAAO,CAAC;YAChC,KAAK,iBAAkB,CAAC,MAAM,CAAC;YAC/B,KAAK,iBAAkB,CAAC,MAAM;gBAC1B,MAAM,uBAAuB,GACzB,2BAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;gBAC7D,IAAI,uBAAuB,EAAE,CAAC;oBAC1B,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;gBAChE,CAAC;gBACD,MAAM;YACV,KAAK,iBAAkB,CAAC,KAAK;gBACzB,MAAM,sBAAsB,GACxB,0BAAe,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;gBAC5D,IAAI,sBAAsB,EAAE,CAAC;oBACzB,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM;YACV,KAAK,iBAAkB,CAAC,KAAK,CAAC;YAC9B,KAAK,iBAAkB,CAAC,aAAa,CAAC;YACtC,KAAK,iBAAkB,CAAC,YAAY,CAAC;YACrC,KAAK,iBAAkB,CAAC,YAAY,CAAC;YACrC,KAAK,iBAAkB,CAAC,YAAY,CAAC;YACrC,KAAK,iBAAkB,CAAC,YAAY,CAAC;YACrC,KAAK,iBAAkB,CAAC,cAAc,CAAC;YACvC,KAAK,iBAAkB,CAAC,WAAW;gBAC/B,MAAM,sBAAsB,GACxB,0BAAe,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;gBAC5D,IAAI,sBAAsB,EAAE,CAAC;oBACzB,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM;QACd,CAAC;QAED,gFAAgF;QAChF,qGAAqG;QACrG,IACI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,EACzD,CAAC;YACC,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB,IAAI,EACJ,kEAAkE,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,EAC7F,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;IACN,CAAC;IAEQ,KAAK,CAAC,iCAAiC,CAAC,SAA4B;QACzE,IAAI,cAAc,GAAsB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE7E,wDAAwD;QACxD,8CAA8C;QAC9C,mEAAmE;QACnE,uBAAuB;QACvB,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACtD,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,cAAc,CAAC;QAErB,+EAA+E;QAC/E,8CAA8C;QAC9C,IACI,MAAM,YAAY,gCAAmB;YACrC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB,EACnD,CAAC;YACC,OAAQ,MAA8B,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;QAC1F,CAAC;QAED,0DAA0D;QAC1D,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,eAAe,IAAI,+BAAoB,EAAE,CAAC;gBACpD,MAAM,2BAA2B,GAC7B,+BAAoB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC;gBAClE,OAAO,IAAI,4BAAe,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;QACrD,CAAC;QAED,6EAA6E;QAC7E,6EAA6E;QAC7E,mDAAmD;QAEnD,4CAA4C;QAC5C,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,oBAAqB,CAAC,MAAM,EAAE,CAAC;YAC5E,OAAO,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,oBAAqB,CAAC,MAAM,EAAE,CAAC;YAC5E,OAAO,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC;QAED,+DAA+D;QAC/D,cAAc;QACd,IAAI,MAAM,YAAY,0BAAa,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;QACjE,CAAC;QAED,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;QACrC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClD,UAAU,GAAG,IAAA,mCAAmB,EAAC,cAAqB,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,gCAAqB,CACrB,IAAI,EACJ,wDAAwD,SAAS,CAAC,eAAe,GAAG,EACpF,SAAS,CAAC,KAAK,CAClB,CACJ,CAAC;IACN,CAAC;IAEQ,KAAK,CAAC,yCAAyC,CACpD,SAAoC;QAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAChE,SAAS,CAAC,aAAa,CAAC,MAAM,CACjC,CAAC;QACF,OAAO,aAAa,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACM,KAAK,CAAC,4BAA4B,CAAC,SAAmB;QAC3D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,MAAM,GAAQ,IAAI,CAAC;QAEvB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QAED,QAAQ,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACtC,KAAK,UAAU;gBACX,MAAM,YAAY,GAAG,SAAS,CAAC,IAAgB,CAAC;gBAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAClE,YAAY,CAAC,OAAO,CACvB,CAAC;gBACF,IAAI,iBAAiB,CAAC,KAAK,YAAY,6BAAgB,EAAE,CAAC;oBACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAChD,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,oBAAoB,EACzB,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CACnC,CAAC;oBAEF,gBAAgB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CACtC,YAAY,CAAC,OAAO,EACpB,cAAc,EACd,MAAM,CACT,CAAC;gBACN,CAAC;gBAED,MAAM;YACV,KAAK,2BAA2B;gBAC5B,8CAA8C;gBAC9C,MAAM,eAAe,GAAG,SAAS,CAAC,IAAiC,CAAC;gBACpE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBAElD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACpD,MAAM,mBAAmB,GAAG,MAA6B,CAAC;oBAC1D,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC;gBACD,MAAM;YACV;gBACI,MAAM,IAAI,gCAAqB,CAC3B,IAAI,EACJ,iCAAiC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CACtE,CAAC;QACV,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACM,KAAK,CAAC,0BAA0B,CAAC,SAAqB;QAC3D,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACrC,CAAC,CAAC;YAEH,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClE,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACtC,SAAS;YACb,CAAC;YAED,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;gBACzD,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;gBACnB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;QAC9E,OAAO,IAAI,6BAAgB,CAAC,wBAAwB,CAAC,CAAC;IAC1D,CAAC;IAEQ,KAAK,CAAC,gCAAgC,CAAC,SAA2B;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1F,OAAO,aAAa,CAAC;IACzB,CAAC;IAEQ,KAAK,CAAC,wBAAwB,CAAC,UAAmB;QACvD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9D,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,KAAK,CAAC,CAAC;QAE/C,wEAAwE;QACxE,kEAAkE;QAClE,sEAAsE;QACtE,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACnF,IAAI,iBAAiB,KAAK,eAAe,EAAE,CAAC;gBACxC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC;YACzC,CAAC;QACL,CAAC;QAED,OAAO,aAAa,CAAC;IACzB,CAAC;IAEQ,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QACnD,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;QAElC,QAAQ,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACnC,KAAK,sBAAsB,CAAC;YAC5B,KAAK,aAAa,CAAC;YACnB,KAAK,SAAS,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,YAAY,CAAC;YAClB,KAAK,QAAQ;gBACT,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC9C,IAAI,WAAW,YAAY,6BAAgB,EAAE,CAAC;oBAC1C,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CACrC,IAAI,CAAC,0BAA0B,EAC/B,IAAI,CAAC,oBAAoB,EACzB,WAAW,CAAC,QAAQ,CACvB,CAAC;gBACN,CAAC;gBAED,OAAO,WAAW,CAAC,IAAI,IAAI,IAAA,mCAAmB,EAAC,WAAW,CAAC,CAAC;YAChE,KAAK,cAAc;gBACf,MAAM,YAAY,GAAG,WAA2B,CAAC;gBACjD,OAAO,UAAU,YAAY,CAAC,iBAAiB,GAAG,CAAC;YACvD,KAAK,mBAAmB;gBACpB,MAAM,iBAAiB,GAAG,WAAgC,CAAC;gBAC3D,OAAO,iBAAiB,CAAC,sBAAsB,CAAC;YACpD,KAAK,2BAA2B;gBAC5B,4CAA4C;gBAC5C,oEAAoE;gBACpE,MAAM,IAAI,gCAAqB,CAAC,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;YACjF,KAAK,SAAS;gBACV,OAAO,eAAe,CAAC;YAC3B,KAAK,MAAM;gBACP,OAAO,eAAe,CAAC;YAC3B,KAAK,SAAS;gBACV,MAAM,WAAW,GAAG,WAAsB,CAAC;gBAC3C,OAAO,WAAW,CAAC,IAAI,CAAC;YAC5B,KAAK,QAAQ;gBACT,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACnD,OAAO,WAAW,UAAU,GAAG,CAAC;YACpC,KAAK,UAAU;gBACX,OAAO,WAAW,CAAC,IAAI,CAAC;YAC5B,KAAK,OAAO;gBACR,OAAO,IAAA,mCAAmB,EAAE,WAAqB,aAArB,WAAW,uBAAX,WAAW,CAAY,OAAO,CAAC,CAAC;YAChE;gBACI,OAAO,IAAA,mCAAmB,EAAC,WAAW,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACM,KAAK,CAAC,oBAAoB,CAAC,cAAc,GAAG,KAAK;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;QAC7D,IAAI,eAAoB,CAAC;QACzB,IAAI,CAAC;YACD,OAEI,CAAC,CAAC,eAAe,YAAY,gBAAM,CAAC;gBACpC,YAAY,CAAC,eAAe,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,EAC9D,YAAY,CAAC,eAAe,EAAE,EAChC,CAAC;gBACC,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;gBAC/E,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC,KAAK,CAAC;gBAClD,IAAI,CAAC,0BAA0B,GAAG,eAAe,CAAC,WAAW,CAAC;gBAC9D,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,eAAe,CAAC;QAC3B,CAAC;QAAC,OAAO,IAAS,EAAE,CAAC;YACjB,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACZ,WAAW,EAAE,IAAI;oBACjB,KAAK,EAAE,eAAe,CAAC,KAAK;oBAC5B,WAAW,EAAE,eAAe,CAAC,WAAW;iBAC3C,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,CAAC;YACnE,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;YAE/D,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YAElF,IAAI,cAAc,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,eAAe,KAAK,IAAI,CAAC,EAAE,CAAC;gBAClF,cAAc,CAAC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAChD,cAAc,CAAC,aAAa,CAAC,OAAO,EACpC,YAAY,CAAC,aAAa,CAAC,OAAO,CACrC,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACM,KAAK,CAAC,WAAW,CACtB,WAAyB,EACzB,cAAwB;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;CACJ;AA/qBD,sCA+qBC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * O montão, conhecido em inglês, como _heap_, guarda todas as estruturas de dados
3
+ * não primitivas durante a execução.
4
+ * Inicialmente trabalha apenas com dicionários, mas a ideia mais futuramente é
5
+ * trabalhar com toda e qualquer estrutura de dados mais complexa.
6
+ *
7
+ * Diferentemente da pilha de escopos de execução, o montão trabalha entre escopos.
8
+ * Por exemplo, se quisermos ter uma funcionalidade do interpretador em que uma
9
+ * referência é preservada entre escopos, podemos apagar o escopo e transferir facilmente
10
+ * a referência do montão para outro escopo.
11
+ */
12
+ export declare class Montao {
13
+ referencias: {
14
+ [endereco: string]: any;
15
+ };
16
+ constructor();
17
+ /**
18
+ * Adiciona uma nova referência ao montão, retornando seu endereço.
19
+ * @param {any} objeto Qualquer objeto que pertença ao montão.
20
+ * @returns {string} O endereço onde a referência foi registrada.
21
+ */
22
+ adicionarReferencia(objeto: any): string;
23
+ /**
24
+ * Exclui referências do montão, normalmente por finalização de um
25
+ * escopo de execução.
26
+ * @param enderecos
27
+ */
28
+ excluirReferencias(...enderecos: string[]): void;
29
+ /**
30
+ * Obtém uma referência com base no símbolo executado e endereço da referência.
31
+ * @param {number} hashArquivo O _hash_ correspondente ao caminho do arquivo em execução.
32
+ * @param {number} linha A linha correspondente à declaração sendo executada.
33
+ * @param {string} endereco O endereço da referência.
34
+ * @returns {any} O objeto armazenado no endereço.
35
+ */
36
+ obterReferencia(hashArquivo: number, linha: number, endereco: string): any;
37
+ }
38
+ //# sourceMappingURL=montao.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"montao.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/montao.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,qBAAa,MAAM;IACf,WAAW,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;;IAMzC;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAMxC;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAMhD;;;;;;OAMG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG;CAU7E"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Montao = void 0;
4
+ const excecoes_1 = require("../excecoes");
5
+ const geracao_identificadores_1 = require("../geracao-identificadores");
6
+ /**
7
+ * O montão, conhecido em inglês, como _heap_, guarda todas as estruturas de dados
8
+ * não primitivas durante a execução.
9
+ * Inicialmente trabalha apenas com dicionários, mas a ideia mais futuramente é
10
+ * trabalhar com toda e qualquer estrutura de dados mais complexa.
11
+ *
12
+ * Diferentemente da pilha de escopos de execução, o montão trabalha entre escopos.
13
+ * Por exemplo, se quisermos ter uma funcionalidade do interpretador em que uma
14
+ * referência é preservada entre escopos, podemos apagar o escopo e transferir facilmente
15
+ * a referência do montão para outro escopo.
16
+ */
17
+ class Montao {
18
+ constructor() {
19
+ this.referencias = {};
20
+ }
21
+ /**
22
+ * Adiciona uma nova referência ao montão, retornando seu endereço.
23
+ * @param {any} objeto Qualquer objeto que pertença ao montão.
24
+ * @returns {string} O endereço onde a referência foi registrada.
25
+ */
26
+ adicionarReferencia(objeto) {
27
+ const novoEndereco = (0, geracao_identificadores_1.uuidv4)();
28
+ this.referencias[novoEndereco] = objeto;
29
+ return novoEndereco;
30
+ }
31
+ /**
32
+ * Exclui referências do montão, normalmente por finalização de um
33
+ * escopo de execução.
34
+ * @param enderecos
35
+ */
36
+ excluirReferencias(...enderecos) {
37
+ for (const endereco of enderecos) {
38
+ delete this.referencias[endereco];
39
+ }
40
+ }
41
+ /**
42
+ * Obtém uma referência com base no símbolo executado e endereço da referência.
43
+ * @param {number} hashArquivo O _hash_ correspondente ao caminho do arquivo em execução.
44
+ * @param {number} linha A linha correspondente à declaração sendo executada.
45
+ * @param {string} endereco O endereço da referência.
46
+ * @returns {any} O objeto armazenado no endereço.
47
+ */
48
+ obterReferencia(hashArquivo, linha, endereco) {
49
+ if (!(endereco in this.referencias)) {
50
+ throw new excecoes_1.ErroEmTempoDeExecucao({ hashArquivo, linha }, `Referência para montão com endereco ${endereco} não existe.`);
51
+ }
52
+ return this.referencias[endereco];
53
+ }
54
+ }
55
+ exports.Montao = Montao;
56
+ //# sourceMappingURL=montao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"montao.js","sourceRoot":"","sources":["../../fontes/interpretador/montao.ts"],"names":[],"mappings":";;;AAAA,0CAAoD;AACpD,wEAAoD;AAGpD;;;;;;;;;;GAUG;AACH,MAAa,MAAM;IAGf;QACI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,MAAW;QAC3B,MAAM,YAAY,GAAG,IAAA,gCAAM,GAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;QACxC,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,SAAmB;QACrC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,WAAmB,EAAE,KAAa,EAAE,QAAgB;QAChE,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,gCAAqB,CAC3B,EAAE,WAAW,EAAE,KAAK,EAAsB,EAC1C,uCAAuC,QAAQ,cAAc,CAChE,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACJ;AA9CD,wBA8CC"}
@@ -38,5 +38,6 @@ export declare class PilhaEscoposExecucao implements PilhaEscoposExecucaoInterfa
38
38
  obterTodasDeclaracoesClasse(): any;
39
39
  registrarReferenciaFuncao(idFuncao: string, funcao: DeleguaFuncao): void;
40
40
  obterReferenciaFuncao(idFuncao: string): DeleguaFuncao;
41
+ registrarReferenciaMontao(endereco: string): void;
41
42
  }
42
43
  //# sourceMappingURL=pilha-escopos-execucao.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pilha-escopos-execucao.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/pilha-escopos-execucao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAM/F,qBAAa,oBAAqB,YAAW,6BAA6B;IACtE,KAAK,EAAE,cAAc,EAAE,CAAC;;IAMxB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,MAAM,IAAI,OAAO;IAIjB,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAI1C,WAAW,IAAI,cAAc;IAK7B,aAAa,IAAI,cAAc;IAK/B,OAAO,CAAC,cAAc;IAiBtB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAmCxE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM;IAqC/D,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAerE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IA4CvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAKnE,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB;IAchE,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAcrD;;OAEG;IACH,mBAAmB,CAAC,cAAc,GAAE,iBAAiB,EAAO,GAAG,GAAG,EAAE;IAkBpE;;;OAGG;IACH,uBAAuB,IAAI;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE;IAa5D;;;OAGG;IACH,2BAA2B,IAAI,GAAG;IAalC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAKxE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;CAazD"}
1
+ {"version":3,"file":"pilha-escopos-execucao.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/pilha-escopos-execucao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAoB,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAM/F,qBAAa,oBAAqB,YAAW,6BAA6B;IACtE,KAAK,EAAE,cAAc,EAAE,CAAC;;IAMxB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpC,MAAM,IAAI,OAAO;IAIjB,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAI1C,WAAW,IAAI,cAAc;IAK7B,aAAa,IAAI,cAAc;IAK/B,OAAO,CAAC,cAAc;IAiBtB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAmCxE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM;IAqC/D,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAerE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IA6CvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAKnE,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB;IAchE,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAcrD;;OAEG;IACH,mBAAmB,CAAC,cAAc,GAAE,iBAAiB,EAAO,GAAG,GAAG,EAAE;IAkBpE;;;OAGG;IACH,uBAAuB,IAAI;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE;IAa5D;;;OAGG;IACH,2BAA2B,IAAI,GAAG;IAalC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAKxE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IActD,yBAAyB,CAAC,QAAQ,EAAE,MAAM;CAI7C"}