@designliquido/delegua 1.11.0 → 1.12.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 (242) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +2 -2
  2. package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
  3. package/analisador-semantico/analisador-semantico-base.js +14 -6
  4. package/analisador-semantico/analisador-semantico-base.js.map +1 -1
  5. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  6. package/analisador-semantico/analisador-semantico.js +38 -19
  7. package/analisador-semantico/analisador-semantico.js.map +1 -1
  8. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  9. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +41 -18
  10. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  11. package/analisador-semantico/funcao-hipotetica-interface.d.ts +1 -1
  12. package/analisador-semantico/gerenciador-escopos.d.ts +1 -1
  13. package/analisador-semantico/pilha-variaveis.d.ts.map +1 -1
  14. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  15. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  16. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  17. package/avaliador-sintatico/avaliador-sintatico.js +99 -42
  18. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  19. package/avaliador-sintatico/comum.d.ts.map +1 -1
  20. package/avaliador-sintatico/comum.js.map +1 -1
  21. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts.map +1 -1
  22. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js.map +1 -1
  23. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts.map +1 -1
  24. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  25. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts.map +1 -1
  26. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +1 -1
  27. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
  28. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  29. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +91 -96
  30. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  31. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.d.ts.map +1 -1
  32. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js +4 -4
  33. package/avaliador-sintatico/dialetos/avaliador-sintatico-prisma.js.map +1 -1
  34. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
  35. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +1 -1
  36. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
  37. package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts.map +1 -1
  38. package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js.map +1 -1
  39. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +18 -0
  40. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts.map +1 -1
  41. package/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -1
  42. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
  43. package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
  44. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts.map +1 -1
  45. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js.map +1 -1
  46. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  47. package/bibliotecas/biblioteca-global.js +93 -31
  48. package/bibliotecas/biblioteca-global.js.map +1 -1
  49. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
  50. package/bibliotecas/dialetos/pitugues/biblioteca-global.js +12 -8
  51. package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
  52. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts.map +1 -1
  53. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js.map +1 -1
  54. package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts.map +1 -1
  55. package/bibliotecas/dialetos/pitugues/primitivas-numero.js.map +1 -1
  56. package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
  57. package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
  58. package/bibliotecas/dialetos/pitugues/primitivas-tupla.d.ts.map +1 -1
  59. package/bibliotecas/dialetos/pitugues/primitivas-tupla.js +3 -4
  60. package/bibliotecas/dialetos/pitugues/primitivas-tupla.js.map +1 -1
  61. package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts.map +1 -1
  62. package/bibliotecas/dialetos/pitugues/primitivas-vetor.js +9 -11
  63. package/bibliotecas/dialetos/pitugues/primitivas-vetor.js.map +1 -1
  64. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  65. package/bibliotecas/primitivas-dicionario.js +1 -1
  66. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  67. package/bibliotecas/primitivas-numero.d.ts.map +1 -1
  68. package/bibliotecas/primitivas-numero.js.map +1 -1
  69. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  70. package/bibliotecas/primitivas-texto.js +1 -1
  71. package/bibliotecas/primitivas-texto.js.map +1 -1
  72. package/bibliotecas/primitivas-tupla.d.ts.map +1 -1
  73. package/bibliotecas/primitivas-tupla.js +34 -14
  74. package/bibliotecas/primitivas-tupla.js.map +1 -1
  75. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  76. package/bibliotecas/primitivas-vetor.js +1 -1
  77. package/bibliotecas/primitivas-vetor.js.map +1 -1
  78. package/bin/package.json +1 -1
  79. package/construtos/ajuda-como-construto.d.ts +2 -2
  80. package/construtos/ajuda-como-construto.js +1 -1
  81. package/construtos/atribuir.d.ts.map +1 -1
  82. package/construtos/atribuir.js +5 -2
  83. package/construtos/atribuir.js.map +1 -1
  84. package/construtos/binario.d.ts.map +1 -1
  85. package/construtos/binario.js +1 -2
  86. package/construtos/binario.js.map +1 -1
  87. package/construtos/comentario-como-construto.d.ts.map +1 -1
  88. package/construtos/comentario-como-construto.js.map +1 -1
  89. package/construtos/decorador.d.ts.map +1 -1
  90. package/construtos/decorador.js +3 -1
  91. package/construtos/decorador.js.map +1 -1
  92. package/construtos/dicionario.d.ts.map +1 -1
  93. package/construtos/dicionario.js.map +1 -1
  94. package/construtos/tupla-n.d.ts +3 -3
  95. package/construtos/tupla-n.d.ts.map +1 -1
  96. package/construtos/tupla-n.js +4 -2
  97. package/construtos/tupla-n.js.map +1 -1
  98. package/declaracoes/ajuda.d.ts +3 -3
  99. package/declaracoes/funcao.d.ts +2 -1
  100. package/declaracoes/funcao.d.ts.map +1 -1
  101. package/declaracoes/funcao.js +2 -1
  102. package/declaracoes/funcao.js.map +1 -1
  103. package/declaracoes/interface.d.ts.map +1 -1
  104. package/declaracoes/interface.js.map +1 -1
  105. package/declaracoes/texto-documentacao.d.ts.map +1 -1
  106. package/declaracoes/texto-documentacao.js.map +1 -1
  107. package/estilizador/estilizador-delegua.d.ts.map +1 -1
  108. package/estilizador/estilizador-delegua.js +5 -1
  109. package/estilizador/estilizador-delegua.js.map +1 -1
  110. package/formatadores/formatador-delegua.d.ts.map +1 -1
  111. package/formatadores/formatador-delegua.js.map +1 -1
  112. package/formatadores/formatador-pitugues.d.ts.map +1 -1
  113. package/formatadores/formatador-pitugues.js +74 -29
  114. package/formatadores/formatador-pitugues.js.map +1 -1
  115. package/geracao-identificadores/index.js +2 -2
  116. package/geracao-identificadores/index.js.map +1 -1
  117. package/interfaces/componente-modulo-classe-interface.d.ts.map +1 -1
  118. package/interfaces/componente-modulo-funcao-interface.d.ts.map +1 -1
  119. package/interfaces/interpretador-com-depuracao-interface.d.ts.map +1 -1
  120. package/interfaces/modulo-interface.d.ts +2 -2
  121. package/interfaces/modulo-interface.d.ts.map +1 -1
  122. package/interfaces/visitante-comum-interface.d.ts.map +1 -1
  123. package/interpretador/comum.d.ts.map +1 -1
  124. package/interpretador/comum.js +55 -55
  125. package/interpretador/comum.js.map +1 -1
  126. package/interpretador/depuracao/avaliador-expressao-depuracao.d.ts.map +1 -1
  127. package/interpretador/depuracao/avaliador-expressao-depuracao.js.map +1 -1
  128. package/interpretador/depuracao/comum.d.ts.map +1 -1
  129. package/interpretador/depuracao/comum.js +8 -4
  130. package/interpretador/depuracao/comum.js.map +1 -1
  131. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  132. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +1 -3
  133. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  134. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
  135. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  136. package/interpretador/dialetos/pitugues/comum.d.ts +2 -2
  137. package/interpretador/dialetos/pitugues/comum.d.ts.map +1 -1
  138. package/interpretador/dialetos/pitugues/comum.js +2 -3
  139. package/interpretador/dialetos/pitugues/comum.js.map +1 -1
  140. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts +2 -2
  141. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts.map +1 -1
  142. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js +1 -1
  143. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js.map +1 -1
  144. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +3 -3
  145. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
  146. package/interpretador/dialetos/pitugues/interpretador-pitugues.js +3 -2
  147. package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
  148. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  149. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  150. package/interpretador/estruturas/classe-de-modulo.d.ts.map +1 -1
  151. package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
  152. package/interpretador/estruturas/delegua-funcao.js +3 -1
  153. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  154. package/interpretador/estruturas/descritor-tipo-classe.d.ts.map +1 -1
  155. package/interpretador/estruturas/descritor-tipo-classe.js +6 -6
  156. package/interpretador/estruturas/descritor-tipo-classe.js.map +1 -1
  157. package/interpretador/estruturas/metodo-polimorfico.d.ts.map +1 -1
  158. package/interpretador/estruturas/metodo-polimorfico.js +13 -9
  159. package/interpretador/estruturas/metodo-polimorfico.js.map +1 -1
  160. package/interpretador/estruturas/metodo-primitiva.d.ts.map +1 -1
  161. package/interpretador/estruturas/metodo-primitiva.js.map +1 -1
  162. package/interpretador/estruturas/objeto-base.d.ts.map +1 -1
  163. package/interpretador/estruturas/objeto-base.js.map +1 -1
  164. package/interpretador/estruturas/objeto-delegua-classe.d.ts.map +1 -1
  165. package/interpretador/estruturas/objeto-delegua-classe.js +10 -6
  166. package/interpretador/estruturas/objeto-delegua-classe.js.map +1 -1
  167. package/interpretador/interpretador-base.d.ts +4 -4
  168. package/interpretador/interpretador-base.d.ts.map +1 -1
  169. package/interpretador/interpretador-base.js +123 -54
  170. package/interpretador/interpretador-base.js.map +1 -1
  171. package/interpretador/interpretador.d.ts.map +1 -1
  172. package/interpretador/interpretador.js +28 -17
  173. package/interpretador/interpretador.js.map +1 -1
  174. package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
  175. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  176. package/lexador/dialetos/lexador-calango.d.ts.map +1 -1
  177. package/lexador/dialetos/lexador-calango.js.map +1 -1
  178. package/lexador/dialetos/lexador-egua-classico.d.ts.map +1 -1
  179. package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  180. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  181. package/lexador/dialetos/lexador-pitugues.js +21 -13
  182. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  183. package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
  184. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  185. package/lexador/dialetos/lexador-prisma.d.ts.map +1 -1
  186. package/lexador/dialetos/lexador-prisma.js +25 -3
  187. package/lexador/dialetos/lexador-prisma.js.map +1 -1
  188. package/lexador/dialetos/lexador-tenda.d.ts.map +1 -1
  189. package/lexador/dialetos/lexador-tenda.js.map +1 -1
  190. package/lexador/filtro-paradigma.d.ts.map +1 -1
  191. package/lexador/filtro-paradigma.js.map +1 -1
  192. package/lexador/lexador-base-linha-unica.d.ts.map +1 -1
  193. package/lexador/lexador-base-linha-unica.js.map +1 -1
  194. package/lexador/lexador-base.d.ts.map +1 -1
  195. package/lexador/lexador-base.js.map +1 -1
  196. package/lexador/lexador.d.ts.map +1 -1
  197. package/lexador/lexador.js.map +1 -1
  198. package/lexador/mapeamento-paradigmas.d.ts.map +1 -1
  199. package/lexador/mapeamento-paradigmas.js.map +1 -1
  200. package/lexador/palavras-reservadas.js +2 -2
  201. package/lexador/palavras-reservadas.js.map +1 -1
  202. package/lexador/simbolo.d.ts.map +1 -1
  203. package/lexador/simbolo.js.map +1 -1
  204. package/lexador/traducao/lexador-javascript.d.ts.map +1 -1
  205. package/package.json +1 -1
  206. package/tradutores/mermaid/aresta-fluxograma.d.ts +1 -1
  207. package/tradutores/mermaid/subgrafo-classe.d.ts +3 -3
  208. package/tradutores/mermaid/subgrafo-funcao.d.ts +2 -2
  209. package/tradutores/mermaid/subgrafo-funcao.d.ts.map +1 -1
  210. package/tradutores/mermaid/subgrafo-funcao.js.map +1 -1
  211. package/tradutores/mermaid/subgrafo-metodo.d.ts +2 -2
  212. package/tradutores/mermaid/vertice-fluxograma.d.ts +1 -1
  213. package/tradutores/tradutor-assembly-arm.d.ts.map +1 -1
  214. package/tradutores/tradutor-assembly-arm.js +164 -156
  215. package/tradutores/tradutor-assembly-arm.js.map +1 -1
  216. package/tradutores/tradutor-assembly-x64.d.ts.map +1 -1
  217. package/tradutores/tradutor-assembly-x64.js +136 -127
  218. package/tradutores/tradutor-assembly-x64.js.map +1 -1
  219. package/tradutores/tradutor-assemblyscript.d.ts.map +1 -1
  220. package/tradutores/tradutor-assemblyscript.js +10 -6
  221. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  222. package/tradutores/tradutor-calango.d.ts.map +1 -1
  223. package/tradutores/tradutor-calango.js.map +1 -1
  224. package/tradutores/tradutor-elixir.d.ts.map +1 -1
  225. package/tradutores/tradutor-elixir.js +9 -7
  226. package/tradutores/tradutor-elixir.js.map +1 -1
  227. package/tradutores/tradutor-javascript.d.ts.map +1 -1
  228. package/tradutores/tradutor-javascript.js +2 -1
  229. package/tradutores/tradutor-javascript.js.map +1 -1
  230. package/tradutores/tradutor-mermaidjs.d.ts.map +1 -1
  231. package/tradutores/tradutor-mermaidjs.js +4 -8
  232. package/tradutores/tradutor-mermaidjs.js.map +1 -1
  233. package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
  234. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  235. package/tradutores/tradutor-python.d.ts.map +1 -1
  236. package/tradutores/tradutor-python.js +1 -1
  237. package/tradutores/tradutor-python.js.map +1 -1
  238. package/tradutores/tradutor-reverso-javascript.d.ts.map +1 -1
  239. package/tradutores/tradutor-ruby.d.ts.map +1 -1
  240. package/tradutores/tradutor-ruby.js +1 -1
  241. package/tradutores/tradutor-ruby.js.map +1 -1
  242. package/umd/delegua.js +1056 -720
@@ -172,7 +172,7 @@ class InterpretadorBase {
172
172
  }
173
173
  // Se é array, resolve recursivamente todos os elementos
174
174
  if (Array.isArray(objeto)) {
175
- return objeto.map(elemento => this.resolverValorRecursivo(elemento));
175
+ return objeto.map((elemento) => this.resolverValorRecursivo(elemento));
176
176
  }
177
177
  // Se é objeto plano, resolve recursivamente todas as propriedades
178
178
  if (objeto && objeto.constructor && objeto.constructor === Object) {
@@ -215,8 +215,18 @@ class InterpretadorBase {
215
215
  async visitarExpressaoTupla(expressao) {
216
216
  // Lista de propriedades válidas para tuplas (ignorar propriedades de controle)
217
217
  const propriedadesValidas = [
218
- 'primeiro', 'segundo', 'terceiro', 'quarto', 'quinto',
219
- 'sexto', 'sétimo', 'setimo', 'oitavo', 'nono', 'décimo', 'decimo'
218
+ 'primeiro',
219
+ 'segundo',
220
+ 'terceiro',
221
+ 'quarto',
222
+ 'quinto',
223
+ 'sexto',
224
+ 'sétimo',
225
+ 'setimo',
226
+ 'oitavo',
227
+ 'nono',
228
+ 'décimo',
229
+ 'decimo',
220
230
  ];
221
231
  const valores = [];
222
232
  for (let propriedade of propriedadesValidas) {
@@ -233,7 +243,7 @@ class InterpretadorBase {
233
243
  const res = await this.avaliar(expressao.elementos[i]);
234
244
  elementos.push(this.resolverValor(res));
235
245
  }
236
- const elementosComoConstrutos = elementos.map(valor => new construtos_1.Literal(expressao.hashArquivo, expressao.linha, valor));
246
+ const elementosComoConstrutos = elementos.map((valor) => new construtos_1.Literal(expressao.hashArquivo, expressao.linha, valor));
237
247
  return new construtos_1.TuplaN(expressao.hashArquivo, expressao.linha, elementosComoConstrutos);
238
248
  }
239
249
  async visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
@@ -575,8 +585,12 @@ class InterpretadorBase {
575
585
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
576
586
  // Auto-promove para BigInt se qualquer operando for BigInt
577
587
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
578
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
579
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
588
+ const esq = typeof valorEsquerdo === 'bigint'
589
+ ? valorEsquerdo
590
+ : BigInt(Math.floor(Number(valorEsquerdo)));
591
+ const dir = typeof valorDireito === 'bigint'
592
+ ? valorDireito
593
+ : BigInt(Math.floor(Number(valorDireito)));
580
594
  return esq ** dir;
581
595
  }
582
596
  const resultadoExponenciacao = Math.pow(valorEsquerdo, valorDireito);
@@ -604,8 +618,12 @@ class InterpretadorBase {
604
618
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
605
619
  // Auto-promove para BigInt se qualquer operando for BigInt
606
620
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
607
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
608
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
621
+ const esq = typeof valorEsquerdo === 'bigint'
622
+ ? valorEsquerdo
623
+ : BigInt(Math.floor(Number(valorEsquerdo)));
624
+ const dir = typeof valorDireito === 'bigint'
625
+ ? valorDireito
626
+ : BigInt(Math.floor(Number(valorDireito)));
609
627
  return esq - dir;
610
628
  }
611
629
  return Number(valorEsquerdo) - Number(valorDireito);
@@ -617,8 +635,12 @@ class InterpretadorBase {
617
635
  }
618
636
  // Auto-promove para BigInt se qualquer operando for BigInt
619
637
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
620
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
621
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
638
+ const esq = typeof valorEsquerdo === 'bigint'
639
+ ? valorEsquerdo
640
+ : BigInt(Math.floor(Number(valorEsquerdo)));
641
+ const dir = typeof valorDireito === 'bigint'
642
+ ? valorDireito
643
+ : BigInt(Math.floor(Number(valorDireito)));
622
644
  return esq + dir;
623
645
  }
624
646
  if (this.tiposNumericos.includes(tipoEsquerdo) &&
@@ -648,8 +670,12 @@ class InterpretadorBase {
648
670
  }
649
671
  // Retorna BigInt se qualquer operando for BigInt
650
672
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
651
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
652
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
673
+ const esq = typeof valorEsquerdo === 'bigint'
674
+ ? valorEsquerdo
675
+ : BigInt(Math.floor(Number(valorEsquerdo)));
676
+ const dir = typeof valorDireito === 'bigint'
677
+ ? valorDireito
678
+ : BigInt(Math.floor(Number(valorDireito)));
653
679
  return esq / dir; // Trunca automaticamente
654
680
  }
655
681
  return Math.floor(Number(valorEsquerdo) / Number(valorDireito));
@@ -659,8 +685,12 @@ class InterpretadorBase {
659
685
  if ((typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') &&
660
686
  tipoEsquerdo !== delegua_2.default.TEXTO &&
661
687
  tipoDireito !== delegua_2.default.TEXTO) {
662
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
663
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
688
+ const esq = typeof valorEsquerdo === 'bigint'
689
+ ? valorEsquerdo
690
+ : BigInt(Math.floor(Number(valorEsquerdo)));
691
+ const dir = typeof valorDireito === 'bigint'
692
+ ? valorDireito
693
+ : BigInt(Math.floor(Number(valorDireito)));
664
694
  return esq * dir;
665
695
  }
666
696
  if (tipoEsquerdo === delegua_2.default.TEXTO ||
@@ -693,7 +723,8 @@ class InterpretadorBase {
693
723
  case delegua_1.default.MODULO:
694
724
  case delegua_1.default.MODULO_IGUAL:
695
725
  // Se o operando esquerdo é uma string, usar formatação de string
696
- if (tipoEsquerdo === delegua_2.default.TEXTO || typeof valorEsquerdo === 'string') {
726
+ if (tipoEsquerdo === delegua_2.default.TEXTO ||
727
+ typeof valorEsquerdo === 'string') {
697
728
  return this.formatarStringComOperadorPorcentagem(String(valorEsquerdo), direita, // Passar 'direita' ao invés de 'valorDireito' para preservar arrays de tuplas
698
729
  expressao.operador);
699
730
  }
@@ -707,8 +738,12 @@ class InterpretadorBase {
707
738
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
708
739
  // Auto-promove para BigInt se qualquer operando for BigInt
709
740
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
710
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
711
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
741
+ const esq = typeof valorEsquerdo === 'bigint'
742
+ ? valorEsquerdo
743
+ : BigInt(Math.floor(Number(valorEsquerdo)));
744
+ const dir = typeof valorDireito === 'bigint'
745
+ ? valorDireito
746
+ : BigInt(Math.floor(Number(valorDireito)));
712
747
  return esq & dir;
713
748
  }
714
749
  return Number(valorEsquerdo) & Number(valorDireito);
@@ -719,8 +754,12 @@ class InterpretadorBase {
719
754
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
720
755
  // Auto-promove para BigInt se qualquer operando for BigInt
721
756
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
722
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
723
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
757
+ const esq = typeof valorEsquerdo === 'bigint'
758
+ ? valorEsquerdo
759
+ : BigInt(Math.floor(Number(valorEsquerdo)));
760
+ const dir = typeof valorDireito === 'bigint'
761
+ ? valorDireito
762
+ : BigInt(Math.floor(Number(valorDireito)));
724
763
  return esq ^ dir;
725
764
  }
726
765
  return Number(valorEsquerdo) ^ Number(valorDireito);
@@ -731,8 +770,12 @@ class InterpretadorBase {
731
770
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
732
771
  // Auto-promove para BigInt se qualquer operando for BigInt
733
772
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
734
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
735
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
773
+ const esq = typeof valorEsquerdo === 'bigint'
774
+ ? valorEsquerdo
775
+ : BigInt(Math.floor(Number(valorEsquerdo)));
776
+ const dir = typeof valorDireito === 'bigint'
777
+ ? valorDireito
778
+ : BigInt(Math.floor(Number(valorDireito)));
736
779
  return esq | dir;
737
780
  }
738
781
  return Number(valorEsquerdo) | Number(valorDireito);
@@ -740,9 +783,15 @@ class InterpretadorBase {
740
783
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
741
784
  // Auto-promove para BigInt (interno para longo) se qualquer operando for BigInt ou se deslocamento >= 32
742
785
  const tamanhoDeslocamentoEsquerda = Number(valorDireito);
743
- if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint' || tamanhoDeslocamentoEsquerda >= 32) {
744
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
745
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
786
+ if (typeof valorEsquerdo === 'bigint' ||
787
+ typeof valorDireito === 'bigint' ||
788
+ tamanhoDeslocamentoEsquerda >= 32) {
789
+ const esq = typeof valorEsquerdo === 'bigint'
790
+ ? valorEsquerdo
791
+ : BigInt(Math.floor(Number(valorEsquerdo)));
792
+ const dir = typeof valorDireito === 'bigint'
793
+ ? valorDireito
794
+ : BigInt(Math.floor(Number(valorDireito)));
746
795
  return esq << dir;
747
796
  }
748
797
  return Number(valorEsquerdo) << Number(valorDireito);
@@ -750,9 +799,15 @@ class InterpretadorBase {
750
799
  this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
751
800
  // Auto-promove para BigInt (interno para longo) se qualquer operando for BigInt ou se deslocamento >= 32
752
801
  const tamanhoDeslocamentoDireita = Number(valorDireito);
753
- if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint' || tamanhoDeslocamentoDireita >= 32) {
754
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
755
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
802
+ if (typeof valorEsquerdo === 'bigint' ||
803
+ typeof valorDireito === 'bigint' ||
804
+ tamanhoDeslocamentoDireita >= 32) {
805
+ const esq = typeof valorEsquerdo === 'bigint'
806
+ ? valorEsquerdo
807
+ : BigInt(Math.floor(Number(valorEsquerdo)));
808
+ const dir = typeof valorDireito === 'bigint'
809
+ ? valorDireito
810
+ : BigInt(Math.floor(Number(valorDireito)));
756
811
  return esq >> dir;
757
812
  }
758
813
  return Number(valorEsquerdo) >> Number(valorDireito);
@@ -873,7 +928,8 @@ class InterpretadorBase {
873
928
  // Casos que passam aqui: chamadas a métodos de bibliotecas de Delégua.
874
929
  if (typeof entidadeChamada === primitivos_1.default.FUNCAO) {
875
930
  let objeto = null;
876
- if (expressao.entidadeChamada.objeto) { // TODO: Qual o tipo certo aqui?
931
+ if (expressao.entidadeChamada.objeto) {
932
+ // TODO: Qual o tipo certo aqui?
877
933
  objeto = await this.avaliar(expressao.entidadeChamada.objeto);
878
934
  }
879
935
  return entidadeChamada.apply(this.resolverValor(objeto), argumentos);
@@ -932,7 +988,8 @@ class InterpretadorBase {
932
988
  }
933
989
  logicaContemOuEm(esquerda, direita, expressao) {
934
990
  const valorDireitoResolvido = this.resolverValor(direita);
935
- if (Array.isArray(valorDireitoResolvido) || typeof valorDireitoResolvido === primitivos_1.default.TEXTO) {
991
+ if (Array.isArray(valorDireitoResolvido) ||
992
+ typeof valorDireitoResolvido === primitivos_1.default.TEXTO) {
936
993
  const avaliacao = valorDireitoResolvido.includes(esquerda);
937
994
  return expressao.negado ? !avaliacao : avaliacao;
938
995
  }
@@ -964,13 +1021,19 @@ class InterpretadorBase {
964
1021
  const valorDireito = this.resolverValor(direita);
965
1022
  if (typeof valorDireito === 'number' || typeof valorDireito === 'bigint') {
966
1023
  if (typeof valorEsquerdo === 'bigint' || typeof valorDireito === 'bigint') {
967
- const esq = typeof valorEsquerdo === 'bigint' ? valorEsquerdo : BigInt(Math.floor(Number(valorEsquerdo)));
968
- const dir = typeof valorDireito === 'bigint' ? valorDireito : BigInt(Math.floor(Number(valorDireito)));
969
- return expressao.operador.tipo === delegua_1.default.E ? (esq & dir) : (esq | dir);
1024
+ const esq = typeof valorEsquerdo === 'bigint'
1025
+ ? valorEsquerdo
1026
+ : BigInt(Math.floor(Number(valorEsquerdo)));
1027
+ const dir = typeof valorDireito === 'bigint'
1028
+ ? valorDireito
1029
+ : BigInt(Math.floor(Number(valorDireito)));
1030
+ return expressao.operador.tipo === delegua_1.default.E
1031
+ ? esq & dir
1032
+ : esq | dir;
970
1033
  }
971
1034
  return expressao.operador.tipo === delegua_1.default.E
972
- ? (Number(valorEsquerdo) & Number(valorDireito))
973
- : (Number(valorEsquerdo) | Number(valorDireito));
1035
+ ? Number(valorEsquerdo) & Number(valorDireito)
1036
+ : Number(valorEsquerdo) | Number(valorDireito);
974
1037
  }
975
1038
  // Demais casos sem diferença de tipos
976
1039
  if (expressao.operador.tipo === delegua_1.default.OU) {
@@ -1064,7 +1127,7 @@ class InterpretadorBase {
1064
1127
  const valorComoDupla = valorVetorResolvido[declaracao.posicaoAtual];
1065
1128
  const promises = await Promise.all([
1066
1129
  this.avaliar(declaracao.variavelIteracao.primeiro),
1067
- this.avaliar(declaracao.variavelIteracao.segundo)
1130
+ this.avaliar(declaracao.variavelIteracao.segundo),
1068
1131
  ]);
1069
1132
  // TODO: O que fazer quando não forem literais?
1070
1133
  this.pilhaEscoposExecucao.definirVariavel(String(promises[0].valor), valorComoDupla.primeiro);
@@ -1244,7 +1307,9 @@ class InterpretadorBase {
1244
1307
  let formatoTexto = '';
1245
1308
  for (const argumento of argumentos) {
1246
1309
  let resultadoAvaliacao = await this.avaliar(argumento);
1247
- if (resultadoAvaliacao && resultadoAvaliacao.hasOwnProperty && resultadoAvaliacao.hasOwnProperty('valorRetornado')) {
1310
+ if (resultadoAvaliacao &&
1311
+ resultadoAvaliacao.hasOwnProperty &&
1312
+ resultadoAvaliacao.hasOwnProperty('valorRetornado')) {
1248
1313
  resultadoAvaliacao = resultadoAvaliacao.valorRetornado;
1249
1314
  }
1250
1315
  let valor = this.resolverValor(resultadoAvaliacao);
@@ -1485,12 +1550,12 @@ class InterpretadorBase {
1485
1550
  }, 'Somente listas, dicionários, classes e objetos podem ter seus valores indexados.', expressao.linha));
1486
1551
  }
1487
1552
  /**
1488
- * Método base para acesso a intervalo.
1489
- * Por padrão lança erro, pois a maioria dos dialetos (como Delégua padrão)
1490
- * ainda não suporta isso nativamente, apenas Pituguês.
1491
- */
1553
+ * Método base para acesso a intervalo.
1554
+ * Por padrão lança erro, pois a maioria dos dialetos (como Delégua padrão)
1555
+ * ainda não suporta isso nativamente, apenas Pituguês.
1556
+ */
1492
1557
  visitarExpressaoAcessoIntervaloVariavel(expressao) {
1493
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, "Acesso por intervalo não implementado para este dialeto.", expressao.linha));
1558
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Acesso por intervalo não implementado para este dialeto.', expressao.linha));
1494
1559
  }
1495
1560
  async visitarExpressaoDefinirValor(expressao) {
1496
1561
  const variavelObjeto = await this.avaliar(expressao.objeto);
@@ -1507,14 +1572,12 @@ class InterpretadorBase {
1507
1572
  objeto[expressao.nome.lexema] = valor;
1508
1573
  }
1509
1574
  }
1510
- visitarDeclaracaoDefinicaoFuncao(declaracao) {
1575
+ async visitarDeclaracaoDefinicaoFuncao(declaracao) {
1511
1576
  const funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao);
1512
1577
  funcao.documentacao = declaracao.documentacao;
1513
1578
  this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, funcao);
1514
1579
  this.pilhaEscoposExecucao.registrarReferenciaFuncao(declaracao.id, funcao);
1515
- return Promise.resolve({
1516
- declaracao: funcao,
1517
- });
1580
+ return { declaracao: funcao };
1518
1581
  }
1519
1582
  /**
1520
1583
  * Executa uma declaração de classe.
@@ -1574,9 +1637,7 @@ class InterpretadorBase {
1574
1637
  const funcao = new estruturas_1.DeleguaFuncao(nomeMetodo, metodoAtual.funcao, undefined, eInicializador);
1575
1638
  funcao.documentacao = metodoAtual.documentacao;
1576
1639
  // Numa classe estática, todos os métodos (exceto construtor) são estáticos.
1577
- const ehEstatico = declaracao.classeEstatica
1578
- ? !eInicializador
1579
- : metodoAtual.estatico;
1640
+ const ehEstatico = declaracao.classeEstatica ? !eInicializador : metodoAtual.estatico;
1580
1641
  if (metodoAtual.eObtenedor) {
1581
1642
  if (ehEstatico) {
1582
1643
  obtenedoresEstaticos[nomeMetodo] = funcao;
@@ -1632,7 +1693,9 @@ class InterpretadorBase {
1632
1693
  // Toda classe sem superclasse explícita herda implicitamente de `Objeto`.
1633
1694
  // Isso só deve acontecer quando OBJETO_BASE já estiver inicializado e a classe
1634
1695
  // atual não for o próprio OBJETO_BASE, para evitar cadeias de herança recursivas.
1635
- if (descritorTipoClasse.superClasses.length === 0 && estruturas_1.OBJETO_BASE && descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
1696
+ if (descritorTipoClasse.superClasses.length === 0 &&
1697
+ estruturas_1.OBJETO_BASE &&
1698
+ descritorTipoClasse !== estruturas_1.OBJETO_BASE) {
1636
1699
  descritorTipoClasse.superClasses = [estruturas_1.OBJETO_BASE];
1637
1700
  }
1638
1701
  // Calcular o OReM (linearização C3) após os pais estarem definidos.
@@ -1895,21 +1958,25 @@ class InterpretadorBase {
1895
1958
  let valoresArray;
1896
1959
  // Verificar se é uma TuplaN (verifica instanceof OU propriedade elementos/tipo para maior compatibilidade)
1897
1960
  if (valores instanceof construtos_1.TuplaN ||
1898
- (valores && valores.tipo === 'tupla' && valores.elementos && Array.isArray(valores.elementos))) {
1961
+ (valores &&
1962
+ valores.tipo === 'tupla' &&
1963
+ valores.elementos &&
1964
+ Array.isArray(valores.elementos))) {
1899
1965
  valoresArray = valores.elementos.map((elem) => {
1900
- if (elem instanceof construtos_1.Literal || (elem && typeof elem === 'object' && elem.hasOwnProperty('valor'))) {
1966
+ if (elem instanceof construtos_1.Literal ||
1967
+ (elem && typeof elem === 'object' && elem.hasOwnProperty('valor'))) {
1901
1968
  return this.resolverValor(elem.valor);
1902
1969
  }
1903
1970
  return this.resolverValor(elem);
1904
1971
  });
1905
1972
  }
1906
1973
  else if (Array.isArray(valores)) {
1907
- valoresArray = valores.map(v => this.resolverValor(v));
1974
+ valoresArray = valores.map((v) => this.resolverValor(v));
1908
1975
  }
1909
1976
  else {
1910
1977
  const valorResolvido = this.resolverValor(valores);
1911
1978
  if (Array.isArray(valorResolvido)) {
1912
- valoresArray = valorResolvido.map(v => this.resolverValor(v));
1979
+ valoresArray = valorResolvido.map((v) => this.resolverValor(v));
1913
1980
  }
1914
1981
  else {
1915
1982
  valoresArray = [valorResolvido];
@@ -2031,7 +2098,9 @@ class InterpretadorBase {
2031
2098
  return objeto.valor.paraTexto();
2032
2099
  if (objeto instanceof construtos_1.Literal)
2033
2100
  return this.paraTexto(objeto.valor);
2034
- if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto instanceof estruturas_1.DeleguaFuncao || objeto instanceof estruturas_1.DescritorTipoClasse)
2101
+ if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
2102
+ objeto instanceof estruturas_1.DeleguaFuncao ||
2103
+ objeto instanceof estruturas_1.DescritorTipoClasse)
2035
2104
  return objeto.paraTexto();
2036
2105
  if (objeto instanceof quebras_1.RetornoQuebra) {
2037
2106
  if (typeof objeto.valor === 'boolean')