@designliquido/delegua 0.36.1 → 0.37.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 (534) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +69 -69
  2. package/analisador-semantico/analisador-semantico-base.js +180 -180
  3. package/analisador-semantico/analisador-semantico.d.ts +59 -59
  4. package/analisador-semantico/analisador-semantico.js +442 -442
  5. package/analisador-semantico/analisador-semantico.js.map +1 -1
  6. package/analisador-semantico/index.d.ts +3 -3
  7. package/analisador-semantico/index.js +19 -19
  8. package/analisador-semantico/pilha-variaveis.d.ts +20 -20
  9. package/analisador-semantico/pilha-variaveis.js +25 -25
  10. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +90 -69
  11. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  12. package/avaliador-sintatico/avaliador-sintatico-base.js +232 -223
  13. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  14. package/avaliador-sintatico/avaliador-sintatico.d.ts +118 -126
  15. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  16. package/avaliador-sintatico/avaliador-sintatico.js +1041 -1093
  17. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  18. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +73 -73
  19. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +648 -648
  20. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  21. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +27 -21
  22. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts.map +1 -1
  23. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +156 -149
  24. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
  25. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +87 -87
  26. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +770 -770
  27. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  28. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +34 -34
  29. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +168 -168
  30. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  31. package/avaliador-sintatico/dialetos/index.d.ts +3 -3
  32. package/avaliador-sintatico/dialetos/index.js +19 -19
  33. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -5
  34. package/avaliador-sintatico/erro-avaliador-sintatico.js +11 -11
  35. package/avaliador-sintatico/index.d.ts +6 -6
  36. package/avaliador-sintatico/index.js +22 -22
  37. package/avaliador-sintatico/micro-avaliador-sintatico-base.d.ts +27 -27
  38. package/avaliador-sintatico/micro-avaliador-sintatico-base.js +116 -116
  39. package/avaliador-sintatico/micro-avaliador-sintatico-base.js.map +1 -1
  40. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts +21 -33
  41. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
  42. package/avaliador-sintatico/micro-avaliador-sintatico.js +204 -287
  43. package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
  44. package/avaliador-sintatico/retornos/index.d.ts +3 -3
  45. package/avaliador-sintatico/retornos/index.js +19 -19
  46. package/avaliador-sintatico/retornos/retorno-declaracao.d.ts +3 -3
  47. package/avaliador-sintatico/retornos/retorno-declaracao.js +2 -2
  48. package/avaliador-sintatico/retornos/retorno-primario.d.ts +3 -3
  49. package/avaliador-sintatico/retornos/retorno-primario.js +2 -2
  50. package/avaliador-sintatico/retornos/retorno-resolver-declaracao.d.ts +2 -2
  51. package/avaliador-sintatico/retornos/retorno-resolver-declaracao.js +2 -2
  52. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts +59 -59
  53. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js +150 -150
  54. package/bibliotecas/biblioteca-global.d.ts +157 -157
  55. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  56. package/bibliotecas/biblioteca-global.js +487 -498
  57. package/bibliotecas/biblioteca-global.js.map +1 -1
  58. package/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts +1 -1
  59. package/bibliotecas/dialetos/egua-classico/biblioteca-global.js +236 -236
  60. package/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
  61. package/bibliotecas/dialetos/egua-classico/index.d.ts +2 -2
  62. package/bibliotecas/dialetos/egua-classico/index.js +32 -32
  63. package/bibliotecas/dialetos/egua-classico/index.js.map +1 -1
  64. package/bibliotecas/dialetos/egua-classico/matematica.d.ts +1 -1
  65. package/bibliotecas/dialetos/egua-classico/matematica.js +541 -541
  66. package/bibliotecas/dialetos/egua-classico/matematica.js.map +1 -1
  67. package/bibliotecas/dialetos/egua-classico/tempo.d.ts +1 -1
  68. package/bibliotecas/dialetos/egua-classico/tempo.js +39 -39
  69. package/bibliotecas/dialetos/egua-classico/tempo.js.map +1 -1
  70. package/bibliotecas/dialetos/egua-classico/textos.d.ts +8 -8
  71. package/bibliotecas/dialetos/egua-classico/textos.js +201 -201
  72. package/bibliotecas/dialetos/egua-classico/textos.js.map +1 -1
  73. package/bibliotecas/primitivas-dicionario.d.ts +6 -6
  74. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  75. package/bibliotecas/primitivas-dicionario.js +10 -10
  76. package/bibliotecas/primitivas-numero.d.ts +6 -6
  77. package/bibliotecas/primitivas-numero.d.ts.map +1 -1
  78. package/bibliotecas/primitivas-numero.js +10 -10
  79. package/bibliotecas/primitivas-texto.d.ts +17 -17
  80. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  81. package/bibliotecas/primitivas-texto.js +22 -22
  82. package/bibliotecas/primitivas-texto.js.map +1 -1
  83. package/bibliotecas/primitivas-vetor.d.ts +21 -21
  84. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  85. package/bibliotecas/primitivas-vetor.js +88 -90
  86. package/bibliotecas/primitivas-vetor.js.map +1 -1
  87. package/bin/package.json +13 -12
  88. package/construtos/acesso-elemento-matriz.d.ts +12 -12
  89. package/construtos/acesso-elemento-matriz.js +17 -17
  90. package/construtos/acesso-indice-variavel.d.ts +15 -15
  91. package/construtos/acesso-indice-variavel.js +20 -20
  92. package/construtos/acesso-metodo-ou-propriedade.d.ts +14 -14
  93. package/construtos/acesso-metodo-ou-propriedade.js +19 -19
  94. package/construtos/agrupamento.d.ts +14 -14
  95. package/construtos/agrupamento.js +19 -19
  96. package/construtos/atribuicao-por-indice.d.ts +11 -11
  97. package/construtos/atribuicao-por-indice.js +16 -16
  98. package/construtos/atribuicao-por-indices-matriz.d.ts +12 -12
  99. package/construtos/atribuicao-por-indices-matriz.js +17 -17
  100. package/construtos/atribuir.d.ts +15 -15
  101. package/construtos/atribuir.js +24 -24
  102. package/construtos/atribuir.js.map +1 -1
  103. package/construtos/binario.d.ts +33 -33
  104. package/construtos/binario.d.ts.map +1 -1
  105. package/construtos/binario.js +38 -38
  106. package/construtos/binario.js.map +1 -1
  107. package/construtos/chamada.d.ts +15 -15
  108. package/construtos/chamada.d.ts.map +1 -1
  109. package/construtos/chamada.js +21 -21
  110. package/construtos/chamada.js.map +1 -1
  111. package/construtos/comentario.d.ts +15 -15
  112. package/construtos/comentario.js +20 -20
  113. package/construtos/constante.d.ts +12 -12
  114. package/construtos/constante.d.ts.map +1 -1
  115. package/construtos/constante.js +17 -17
  116. package/construtos/constante.js.map +1 -1
  117. package/construtos/construto.d.ts +7 -7
  118. package/construtos/construto.js +2 -2
  119. package/construtos/decorador.d.ts +18 -14
  120. package/construtos/decorador.d.ts.map +1 -1
  121. package/construtos/decorador.js +19 -19
  122. package/construtos/decorador.js.map +1 -1
  123. package/construtos/definir-valor.d.ts +11 -11
  124. package/construtos/definir-valor.js +16 -16
  125. package/construtos/dicionario.d.ts +10 -10
  126. package/construtos/dicionario.js +15 -15
  127. package/construtos/expressao-regular.d.ts +10 -10
  128. package/construtos/expressao-regular.d.ts.map +1 -1
  129. package/construtos/expressao-regular.js +15 -15
  130. package/construtos/expressao-regular.js.map +1 -1
  131. package/construtos/fim-para.d.ts +22 -22
  132. package/construtos/fim-para.js +25 -25
  133. package/construtos/formatacao-escrita.d.ts +16 -16
  134. package/construtos/formatacao-escrita.js +21 -21
  135. package/construtos/funcao.d.ts +12 -12
  136. package/construtos/funcao.js +16 -16
  137. package/construtos/index.d.ts +29 -29
  138. package/construtos/index.js +45 -45
  139. package/construtos/isto.d.ts +9 -9
  140. package/construtos/isto.js +14 -14
  141. package/construtos/literal.d.ts +10 -10
  142. package/construtos/literal.js +14 -14
  143. package/construtos/logico.d.ts +11 -11
  144. package/construtos/logico.js +16 -16
  145. package/construtos/qual-tipo.d.ts +11 -11
  146. package/construtos/qual-tipo.d.ts.map +1 -1
  147. package/construtos/qual-tipo.js +16 -16
  148. package/construtos/qual-tipo.js.map +1 -1
  149. package/construtos/super.d.ts +10 -10
  150. package/construtos/super.js +15 -15
  151. package/construtos/tipo-de.d.ts +10 -10
  152. package/construtos/tipo-de.d.ts.map +1 -1
  153. package/construtos/tipo-de.js +15 -15
  154. package/construtos/tipo-de.js.map +1 -1
  155. package/construtos/tuplas/deceto.d.ts +18 -18
  156. package/construtos/tuplas/deceto.js +32 -32
  157. package/construtos/tuplas/dupla.d.ts +6 -6
  158. package/construtos/tuplas/dupla.js +12 -12
  159. package/construtos/tuplas/index.d.ts +13 -13
  160. package/construtos/tuplas/index.js +67 -67
  161. package/construtos/tuplas/index.js.map +1 -1
  162. package/construtos/tuplas/noneto.d.ts +15 -15
  163. package/construtos/tuplas/noneto.js +25 -25
  164. package/construtos/tuplas/octeto.d.ts +14 -14
  165. package/construtos/tuplas/octeto.js +24 -24
  166. package/construtos/tuplas/quarteto.d.ts +8 -8
  167. package/construtos/tuplas/quarteto.js +14 -14
  168. package/construtos/tuplas/quinteto.d.ts +9 -9
  169. package/construtos/tuplas/quinteto.js +15 -15
  170. package/construtos/tuplas/septeto.d.ts +13 -13
  171. package/construtos/tuplas/septeto.js +23 -23
  172. package/construtos/tuplas/sexteto.d.ts +10 -10
  173. package/construtos/tuplas/sexteto.js +16 -16
  174. package/construtos/tuplas/trio.d.ts +7 -7
  175. package/construtos/tuplas/trio.js +13 -13
  176. package/construtos/tuplas/tupla.d.ts +8 -8
  177. package/construtos/tuplas/tupla.js +9 -9
  178. package/construtos/unario.d.ts +11 -11
  179. package/construtos/unario.js +16 -16
  180. package/construtos/variavel.d.ts +9 -9
  181. package/construtos/variavel.d.ts.map +1 -1
  182. package/construtos/variavel.js +14 -14
  183. package/construtos/variavel.js.map +1 -1
  184. package/construtos/vetor.d.ts +11 -11
  185. package/construtos/vetor.js +21 -21
  186. package/construtos/vetor.js.map +1 -1
  187. package/declaracoes/aleatorio.d.ts +15 -15
  188. package/declaracoes/aleatorio.js +15 -15
  189. package/declaracoes/bloco.d.ts +7 -7
  190. package/declaracoes/bloco.js +14 -14
  191. package/declaracoes/cabecalho-programa.d.ts +7 -7
  192. package/declaracoes/cabecalho-programa.js +14 -14
  193. package/declaracoes/classe.d.ts +14 -14
  194. package/declaracoes/classe.js +18 -18
  195. package/declaracoes/const-multiplo.d.ts +14 -14
  196. package/declaracoes/const-multiplo.js +19 -19
  197. package/declaracoes/const.d.ts +14 -14
  198. package/declaracoes/const.d.ts.map +1 -1
  199. package/declaracoes/const.js +19 -19
  200. package/declaracoes/const.js.map +1 -1
  201. package/declaracoes/continua.d.ts +6 -6
  202. package/declaracoes/continua.js +13 -13
  203. package/declaracoes/declaracao.d.ts +10 -8
  204. package/declaracoes/declaracao.d.ts.map +1 -1
  205. package/declaracoes/declaracao.js +18 -17
  206. package/declaracoes/declaracao.js.map +1 -1
  207. package/declaracoes/enquanto.d.ts +10 -10
  208. package/declaracoes/enquanto.js +15 -15
  209. package/declaracoes/escolha.d.ts +14 -14
  210. package/declaracoes/escolha.js +19 -19
  211. package/declaracoes/escreva-mesma-linha.d.ts +8 -8
  212. package/declaracoes/escreva-mesma-linha.js +14 -14
  213. package/declaracoes/escreva.d.ts +8 -8
  214. package/declaracoes/escreva.js +14 -14
  215. package/declaracoes/expressao.d.ts +8 -8
  216. package/declaracoes/expressao.d.ts.map +1 -1
  217. package/declaracoes/expressao.js +14 -14
  218. package/declaracoes/expressao.js.map +1 -1
  219. package/declaracoes/falhar.d.ts +8 -8
  220. package/declaracoes/falhar.js +15 -15
  221. package/declaracoes/fazer.d.ts +10 -10
  222. package/declaracoes/fazer.js +15 -15
  223. package/declaracoes/funcao.d.ts +11 -11
  224. package/declaracoes/funcao.js +17 -17
  225. package/declaracoes/importar.d.ts +9 -9
  226. package/declaracoes/importar.js +15 -15
  227. package/declaracoes/index.d.ts +31 -31
  228. package/declaracoes/index.js +47 -47
  229. package/declaracoes/inicio-algoritmo.d.ts +6 -6
  230. package/declaracoes/inicio-algoritmo.js +13 -13
  231. package/declaracoes/leia-multiplo.d.ts +14 -14
  232. package/declaracoes/leia-multiplo.js +21 -21
  233. package/declaracoes/leia.d.ts +17 -17
  234. package/declaracoes/leia.js +21 -21
  235. package/declaracoes/para-cada.d.ts +11 -11
  236. package/declaracoes/para-cada.js +17 -17
  237. package/declaracoes/para.d.ts +19 -19
  238. package/declaracoes/para.js +24 -24
  239. package/declaracoes/propriedade-classe.d.ts +10 -10
  240. package/declaracoes/propriedade-classe.js +16 -16
  241. package/declaracoes/retorna.d.ts +8 -8
  242. package/declaracoes/retorna.js +15 -15
  243. package/declaracoes/se.d.ts +11 -11
  244. package/declaracoes/se.js +17 -17
  245. package/declaracoes/sustar.d.ts +6 -6
  246. package/declaracoes/sustar.js +13 -13
  247. package/declaracoes/tendo-como.d.ts +16 -16
  248. package/declaracoes/tendo-como.d.ts.map +1 -1
  249. package/declaracoes/tendo-como.js +21 -21
  250. package/declaracoes/tendo-como.js.map +1 -1
  251. package/declaracoes/tente.d.ts +14 -14
  252. package/declaracoes/tente.js +20 -20
  253. package/declaracoes/var-multiplo.d.ts +15 -15
  254. package/declaracoes/var-multiplo.js +20 -20
  255. package/declaracoes/var.d.ts +16 -16
  256. package/declaracoes/var.d.ts.map +1 -1
  257. package/declaracoes/var.js +21 -21
  258. package/declaracoes/var.js.map +1 -1
  259. package/depuracao/cyrb53.d.ts +9 -9
  260. package/depuracao/cyrb53.js +22 -22
  261. package/depuracao/cyrb53.js.map +1 -1
  262. package/depuracao/index.d.ts +2 -2
  263. package/depuracao/index.js +23 -23
  264. package/depuracao/ponto-parada.d.ts +4 -4
  265. package/depuracao/ponto-parada.js +2 -2
  266. package/espaco-variaveis.d.ts +19 -19
  267. package/espaco-variaveis.js +19 -19
  268. package/estruturas/chamavel.d.ts +7 -7
  269. package/estruturas/chamavel.d.ts.map +1 -1
  270. package/estruturas/chamavel.js +12 -12
  271. package/estruturas/chamavel.js.map +1 -1
  272. package/estruturas/classe-padrao.d.ts +31 -31
  273. package/estruturas/classe-padrao.d.ts.map +1 -1
  274. package/estruturas/classe-padrao.js +39 -39
  275. package/estruturas/delegua-funcao.d.ts +29 -29
  276. package/estruturas/delegua-funcao.d.ts.map +1 -1
  277. package/estruturas/delegua-funcao.js +140 -141
  278. package/estruturas/delegua-funcao.js.map +1 -1
  279. package/estruturas/descritor-tipo-classe.d.ts +37 -37
  280. package/estruturas/descritor-tipo-classe.js +79 -79
  281. package/estruturas/descritor-tipo-classe.js.map +1 -1
  282. package/estruturas/funcao-padrao.d.ts +23 -23
  283. package/estruturas/funcao-padrao.js +34 -34
  284. package/estruturas/index.d.ts +9 -9
  285. package/estruturas/index.js +25 -25
  286. package/estruturas/metodo-primitiva.d.ts +28 -28
  287. package/estruturas/metodo-primitiva.js +40 -40
  288. package/estruturas/modulo.d.ts +18 -18
  289. package/estruturas/modulo.js +24 -24
  290. package/estruturas/objeto-delegua-classe.d.ts +26 -26
  291. package/estruturas/objeto-delegua-classe.js +53 -53
  292. package/estruturas/objeto-delegua-classe.js.map +1 -1
  293. package/estruturas/objeto-padrao.d.ts +18 -18
  294. package/estruturas/objeto-padrao.js +32 -32
  295. package/estruturas/objeto-padrao.js.map +1 -1
  296. package/excecoes/erro-em-tempo-de-execucao.d.ts +7 -7
  297. package/excecoes/erro-em-tempo-de-execucao.js +13 -13
  298. package/excecoes/index.d.ts +1 -1
  299. package/excecoes/index.js +17 -17
  300. package/formatadores/formatador-delegua.d.ts +79 -79
  301. package/formatadores/formatador-delegua.d.ts.map +1 -1
  302. package/formatadores/formatador-delegua.js +676 -676
  303. package/formatadores/formatador-delegua.js.map +1 -1
  304. package/formatadores/index.d.ts +1 -1
  305. package/formatadores/index.js +17 -17
  306. package/geracao-identificadores/index.d.ts +1 -1
  307. package/geracao-identificadores/index.js +22 -23
  308. package/geracao-identificadores/index.js.map +1 -1
  309. package/index.d.ts +9 -9
  310. package/index.js +27 -27
  311. package/interfaces/analisador-semantico-interface.d.ts +6 -6
  312. package/interfaces/analisador-semantico-interface.js +2 -2
  313. package/interfaces/avaliador-sintatico-interface.d.ts +10 -55
  314. package/interfaces/avaliador-sintatico-interface.d.ts.map +1 -1
  315. package/interfaces/avaliador-sintatico-interface.js +2 -2
  316. package/interfaces/construtos/index.d.ts +4 -4
  317. package/interfaces/construtos/index.js +2 -2
  318. package/interfaces/erros/diagnostico-analisador-semantico.d.ts +14 -14
  319. package/interfaces/erros/diagnostico-analisador-semantico.js +10 -10
  320. package/interfaces/erros/diagnostico-analisador-semantico.js.map +1 -1
  321. package/interfaces/erros/erro-interpretador.d.ts +8 -8
  322. package/interfaces/erros/erro-interpretador.js +2 -2
  323. package/interfaces/erros/index.d.ts +1 -1
  324. package/interfaces/erros/index.js +17 -17
  325. package/interfaces/escopo-execucao.d.ts +12 -12
  326. package/interfaces/escopo-execucao.js +2 -2
  327. package/interfaces/formatador-comum-interface.d.ts +11 -11
  328. package/interfaces/formatador-comum-interface.js +2 -2
  329. package/interfaces/funcao-hipotetica-interface.d.ts +3 -3
  330. package/interfaces/funcao-hipotetica-interface.js +2 -2
  331. package/interfaces/index.d.ts +16 -16
  332. package/interfaces/index.js +32 -32
  333. package/interfaces/interpretador-com-depuracao-interface.d.ts +17 -17
  334. package/interfaces/interpretador-com-depuracao-interface.js +2 -2
  335. package/interfaces/interpretador-interface-potigol.d.ts +5 -5
  336. package/interfaces/interpretador-interface-potigol.js +2 -2
  337. package/interfaces/interpretador-interface.d.ts +20 -20
  338. package/interfaces/interpretador-interface.js +2 -2
  339. package/interfaces/lexador-interface.d.ts +23 -23
  340. package/interfaces/lexador-interface.js +2 -2
  341. package/interfaces/parametro-interface.d.ts +15 -15
  342. package/interfaces/parametro-interface.js +2 -2
  343. package/interfaces/pilha-escopos-execucao-interface.d.ts +26 -26
  344. package/interfaces/pilha-escopos-execucao-interface.js +2 -2
  345. package/interfaces/pilha-interface.d.ts +7 -7
  346. package/interfaces/pilha-interface.js +2 -2
  347. package/interfaces/resolvedor-interface.d.ts +41 -41
  348. package/interfaces/resolvedor-interface.js +2 -2
  349. package/interfaces/retornos/index.d.ts +4 -4
  350. package/interfaces/retornos/index.js +20 -20
  351. package/interfaces/retornos/retorno-analisador-semantico.d.ts +4 -4
  352. package/interfaces/retornos/retorno-analisador-semantico.js +2 -2
  353. package/interfaces/retornos/retorno-avaliador-sintatico.d.ts +5 -5
  354. package/interfaces/retornos/retorno-avaliador-sintatico.js +2 -2
  355. package/interfaces/retornos/retorno-execucao-interface.d.ts +5 -5
  356. package/interfaces/retornos/retorno-execucao-interface.js +2 -2
  357. package/interfaces/retornos/retorno-interpretador.d.ts +5 -5
  358. package/interfaces/retornos/retorno-interpretador.js +2 -2
  359. package/interfaces/retornos/retorno-lexador.d.ts +9 -9
  360. package/interfaces/retornos/retorno-lexador.js +2 -2
  361. package/interfaces/simbolo-interface.d.ts +7 -7
  362. package/interfaces/simbolo-interface.js +2 -2
  363. package/interfaces/tradutor-interface.d.ts +3 -3
  364. package/interfaces/tradutor-interface.js +2 -2
  365. package/interfaces/variavel-hipotetica-interface.d.ts +8 -8
  366. package/interfaces/variavel-hipotetica-interface.js +2 -2
  367. package/interfaces/variavel-interface.d.ts +8 -8
  368. package/interfaces/variavel-interface.d.ts.map +1 -1
  369. package/interfaces/variavel-interface.js +2 -2
  370. package/interfaces/visitante-comum-interface.d.ts +58 -58
  371. package/interfaces/visitante-comum-interface.js +2 -2
  372. package/interpretador/argumento-interface.d.ts +4 -4
  373. package/interpretador/argumento-interface.js +2 -2
  374. package/interpretador/comum.d.ts +2 -2
  375. package/interpretador/comum.d.ts.map +1 -1
  376. package/interpretador/comum.js +51 -52
  377. package/interpretador/comum.js.map +1 -1
  378. package/interpretador/dialetos/egua-classico/index.d.ts +1 -1
  379. package/interpretador/dialetos/egua-classico/index.js +17 -17
  380. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +119 -119
  381. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  382. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +815 -815
  383. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  384. package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.d.ts +5 -5
  385. package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.js +11 -11
  386. package/interpretador/dialetos/egua-classico/resolvedor/index.d.ts +3 -3
  387. package/interpretador/dialetos/egua-classico/resolvedor/index.js +19 -19
  388. package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.d.ts +9 -9
  389. package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.js +25 -25
  390. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +106 -106
  391. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +441 -441
  392. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  393. package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.d.ts +6 -6
  394. package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.js +2 -2
  395. package/interpretador/dialetos/index.d.ts +2 -2
  396. package/interpretador/dialetos/index.js +18 -18
  397. package/interpretador/dialetos/portugol-ipt/index.d.ts +1 -1
  398. package/interpretador/dialetos/portugol-ipt/index.js +17 -17
  399. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +133 -133
  400. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  401. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +501 -501
  402. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  403. package/interpretador/index.d.ts +3 -3
  404. package/interpretador/index.js +19 -19
  405. package/interpretador/inferenciador.d.ts +15 -15
  406. package/interpretador/inferenciador.d.ts.map +1 -1
  407. package/interpretador/inferenciador.js +80 -80
  408. package/interpretador/inferenciador.js.map +1 -1
  409. package/interpretador/interpretador-base.d.ts +268 -268
  410. package/interpretador/interpretador-base.d.ts.map +1 -1
  411. package/interpretador/interpretador-base.js +1396 -1399
  412. package/interpretador/interpretador-base.js.map +1 -1
  413. package/interpretador/interpretador-com-depuracao.d.ts +190 -190
  414. package/interpretador/interpretador-com-depuracao.d.ts.map +1 -1
  415. package/interpretador/interpretador-com-depuracao.js +570 -568
  416. package/interpretador/interpretador-com-depuracao.js.map +1 -1
  417. package/interpretador/pilha-escopos-execucao.d.ts +39 -39
  418. package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
  419. package/interpretador/pilha-escopos-execucao.js +243 -243
  420. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  421. package/lexador/dialetos/index.d.ts +4 -4
  422. package/lexador/dialetos/index.js +20 -20
  423. package/lexador/dialetos/lexador-egua-classico.d.ts +36 -36
  424. package/lexador/dialetos/lexador-egua-classico.js +286 -286
  425. package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  426. package/lexador/dialetos/lexador-guarani.d.ts +10 -10
  427. package/lexador/dialetos/lexador-guarani.js +113 -113
  428. package/lexador/dialetos/lexador-guarani.js.map +1 -1
  429. package/lexador/dialetos/lexador-pitugues.d.ts +51 -51
  430. package/lexador/dialetos/lexador-pitugues.js +398 -398
  431. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  432. package/lexador/dialetos/lexador-portugol-ipt.d.ts +33 -33
  433. package/lexador/dialetos/lexador-portugol-ipt.js +237 -237
  434. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  435. package/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +32 -32
  436. package/lexador/dialetos/palavras-reservadas/egua-classico.js +39 -39
  437. package/lexador/dialetos/palavras-reservadas/guarani.d.ts +3 -3
  438. package/lexador/dialetos/palavras-reservadas/guarani.js +10 -10
  439. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +13 -13
  440. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +20 -20
  441. package/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +1 -1
  442. package/lexador/dialetos/palavras-reservadas/rantiaquin.js +4 -4
  443. package/lexador/dialetos/pragma.d.ts +8 -8
  444. package/lexador/dialetos/pragma.js +2 -2
  445. package/lexador/erro-lexador.d.ts +5 -5
  446. package/lexador/erro-lexador.js +2 -2
  447. package/lexador/index.d.ts +4 -4
  448. package/lexador/index.js +20 -20
  449. package/lexador/lexador-base-linha-unica.d.ts +28 -28
  450. package/lexador/lexador-base-linha-unica.js +82 -82
  451. package/lexador/lexador-base-linha-unica.js.map +1 -1
  452. package/lexador/lexador-base.d.ts +41 -41
  453. package/lexador/lexador-base.js +112 -112
  454. package/lexador/lexador-base.js.map +1 -1
  455. package/lexador/lexador.d.ts +43 -43
  456. package/lexador/lexador.js +440 -440
  457. package/lexador/lexador.js.map +1 -1
  458. package/lexador/micro-lexador.d.ts +29 -29
  459. package/lexador/micro-lexador.js +207 -207
  460. package/lexador/micro-lexador.js.map +1 -1
  461. package/lexador/palavras-reservadas.d.ts +54 -54
  462. package/lexador/palavras-reservadas.js +61 -61
  463. package/lexador/simbolo.d.ts +10 -10
  464. package/lexador/simbolo.js +16 -16
  465. package/lexador/traducao/lexador-javascript.d.ts +28 -28
  466. package/lexador/traducao/lexador-javascript.js +58 -58
  467. package/package.json +13 -12
  468. package/quebras/index.d.ts +10 -10
  469. package/quebras/index.js +19 -19
  470. package/tipo-dados-elementar.d.ts +1 -1
  471. package/tipo-dados-elementar.js +2 -2
  472. package/tipos-de-dados/delegua.d.ts +18 -18
  473. package/tipos-de-dados/delegua.js +19 -19
  474. package/tipos-de-dados/listas-delegua.d.ts +6 -6
  475. package/tipos-de-dados/listas-delegua.js +7 -7
  476. package/tipos-de-dados/listas-primitivos.d.ts +5 -5
  477. package/tipos-de-dados/listas-primitivos.js +6 -6
  478. package/tipos-de-dados/primitivos.d.ts +16 -16
  479. package/tipos-de-dados/primitivos.js +17 -17
  480. package/tipos-de-simbolos/comum.d.ts +23 -23
  481. package/tipos-de-simbolos/comum.js +24 -24
  482. package/tipos-de-simbolos/delegua.d.ts +91 -91
  483. package/tipos-de-simbolos/delegua.js +92 -92
  484. package/tipos-de-simbolos/egua-classico.d.ts +75 -75
  485. package/tipos-de-simbolos/egua-classico.js +76 -76
  486. package/tipos-de-simbolos/guarani.d.ts +14 -14
  487. package/tipos-de-simbolos/guarani.js +15 -15
  488. package/tipos-de-simbolos/guarani.js.map +1 -1
  489. package/tipos-de-simbolos/microgramaticas/delegua.d.ts +46 -46
  490. package/tipos-de-simbolos/microgramaticas/delegua.js +47 -47
  491. package/tipos-de-simbolos/pitugues.d.ts +75 -75
  492. package/tipos-de-simbolos/pitugues.js +76 -76
  493. package/tipos-de-simbolos/portugol-ipt.d.ts +36 -36
  494. package/tipos-de-simbolos/portugol-ipt.js +37 -37
  495. package/tipos-de-simbolos/rantiaquin.d.ts +2 -2
  496. package/tipos-de-simbolos/rantiaquin.js +3 -3
  497. package/tradutores/dicionarios/dicionario-delegua-javascript.d.ts +2 -2
  498. package/tradutores/dicionarios/dicionario-delegua-javascript.js +10 -10
  499. package/tradutores/dicionarios/index.d.ts +1 -1
  500. package/tradutores/dicionarios/index.js +17 -17
  501. package/tradutores/index.d.ts +6 -6
  502. package/tradutores/index.js +22 -22
  503. package/tradutores/python/python3-lexer.d.ts +152 -152
  504. package/tradutores/python/python3-lexer.js +1227 -1227
  505. package/tradutores/python/python3-lexer.js.map +1 -1
  506. package/tradutores/python/python3-listener.d.ts +964 -964
  507. package/tradutores/python/python3-listener.js +3 -3
  508. package/tradutores/python/python3-parser.d.ts +1342 -1342
  509. package/tradutores/python/python3-parser.js +11226 -11226
  510. package/tradutores/python/python3-parser.js.map +1 -1
  511. package/tradutores/python/python3-visitor.d.ts +619 -619
  512. package/tradutores/python/python3-visitor.js +3 -3
  513. package/tradutores/tradutor-assembly-x64.d.ts +19 -19
  514. package/tradutores/tradutor-assembly-x64.js +141 -141
  515. package/tradutores/tradutor-assembly-x64.js.map +1 -1
  516. package/tradutores/tradutor-assemblyscript.d.ts +91 -91
  517. package/tradutores/tradutor-assemblyscript.js +590 -590
  518. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  519. package/tradutores/tradutor-javascript.d.ts +95 -95
  520. package/tradutores/tradutor-javascript.js +577 -577
  521. package/tradutores/tradutor-javascript.js.map +1 -1
  522. package/tradutores/tradutor-portugol-ipt.d.ts +21 -21
  523. package/tradutores/tradutor-portugol-ipt.js +60 -60
  524. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  525. package/tradutores/tradutor-python.d.ts +65 -65
  526. package/tradutores/tradutor-python.js +461 -461
  527. package/tradutores/tradutor-python.js.map +1 -1
  528. package/tradutores/tradutor-reverso-javascript.d.ts +50 -50
  529. package/tradutores/tradutor-reverso-javascript.js +392 -392
  530. package/tradutores/tradutor-reverso-javascript.js.map +1 -1
  531. package/tradutores/tradutor-reverso-python.d.ts +32 -32
  532. package/tradutores/tradutor-reverso-python.js +71 -71
  533. package/tradutores/tradutor-reverso-python.js.map +1 -1
  534. package/umd/delegua.js +26204 -26346
@@ -1,499 +1,488 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tupla = exports.todosEmCondicao = exports.texto = exports.tamanho = exports.reduzir = exports.real = exports.primeiroEmCondicao = exports.paraCada = exports.ordenar = exports.mapear = exports.inteiro = exports.incluido = exports.filtrarPor = exports.encontrarUltimoIndice = exports.encontrarUltimo = exports.encontrarIndice = exports.encontrar = exports.algum = exports.aleatorioEntre = exports.aleatorio = void 0;
4
- const excecoes_1 = require("../excecoes");
5
- const objeto_delegua_classe_1 = require("../estruturas/objeto-delegua-classe");
6
- const funcao_padrao_1 = require("../estruturas/funcao-padrao");
7
- const descritor_tipo_classe_1 = require("../estruturas/descritor-tipo-classe");
8
- const estruturas_1 = require("../estruturas");
9
- const construtos_1 = require("../construtos");
10
- /**
11
- * Retorna um número aleatório entre 0 e 1.
12
- * @returns {Promise<number>} Número real.
13
- */
14
- async function aleatorio(interpretador) {
15
- return Promise.resolve(Math.random());
16
- }
17
- exports.aleatorio = aleatorio;
18
- /**
19
- * Retorna um número aleatório de acordo com o parâmetro passado.
20
- * Mínimo(inclusivo) - Máximo(exclusivo).
21
- * @param {number} minimo O número mínimo.
22
- * @param {number} maximo O número máximo.
23
- * @returns {Promise<number>} Um número real entre os valores máximo e mínimo especificados.
24
- */
25
- async function aleatorioEntre(interpretador, minimo, maximo) {
26
- // eslint-disable-next-line prefer-rest-params
27
- if (arguments.length <= 0) {
28
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'A função recebe ao menos um parâmetro.'));
29
- }
30
- const valorMinimo = minimo.hasOwnProperty('valor') ? minimo.valor : minimo;
31
- if (arguments.length === 2) {
32
- if (typeof valorMinimo !== 'number') {
33
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'O parâmetro deve ser um número.'));
34
- }
35
- return Math.floor(Math.random() * (0 - valorMinimo)) + valorMinimo;
36
- }
37
- if (arguments.length > 3) {
38
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'A quantidade de parâmetros máxima para esta função é 2.'));
39
- }
40
- const valorMaximo = maximo.hasOwnProperty('valor') ? maximo.valor : maximo;
41
- if (typeof valorMinimo !== 'number' || typeof valorMaximo !== 'number') {
42
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Os dois parâmetros devem ser do tipo número.'));
43
- }
44
- return Promise.resolve(Math.floor(Math.random() * (valorMaximo - valorMinimo)) + valorMinimo);
45
- }
46
- exports.aleatorioEntre = aleatorioEntre;
47
- /**
48
- * Verifica se algum dos elementos satisfaz à condição para por parâmetro.
49
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
50
- * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
51
- * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
52
- * @returns {Promise<boolean>} Verdadeiro se há algum elemento no vetor com a condição. Falso caso contrário.
53
- */
54
- async function algum(interpretador, vetor, funcaoPesquisa) {
55
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
56
- const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
57
- if (!Array.isArray(valorVetor)) {
58
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
59
- }
60
- if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
61
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
62
- }
63
- for (let indice = 0; indice < valorVetor.length; ++indice) {
64
- if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
65
- return true;
66
- }
67
- }
68
- return false;
69
- }
70
- exports.algum = algum;
71
- /**
72
- * Encontra o primeiro elemento de um vetor cuja função de pesquisa retorne
73
- * verdadeiro na avaliação de cada elemento.
74
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
75
- * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
76
- * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
77
- * @returns {Promise<any>} Um elemento, caso o elemento seja encontraro, ou nulo em caso contrário.
78
- */
79
- async function encontrar(interpretador, vetor, funcaoPesquisa) {
80
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
81
- const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
82
- if (!Array.isArray(valorVetor)) {
83
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
84
- }
85
- if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
86
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
87
- }
88
- for (let indice = 0; indice < valorVetor.length; ++indice) {
89
- if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
90
- return valorVetor[indice];
91
- }
92
- }
93
- return null;
94
- }
95
- exports.encontrar = encontrar;
96
- /**
97
- * Encontra o índice do primeiro elemento de um vetor cuja função de pesquisa retorne
98
- * verdadeiro na avaliação de cada elemento.
99
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
100
- * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
101
- * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
102
- * @returns {Promise<number>} O número correspondente ao índice se o elemento for encontrado, ou nulo em caso contrário.
103
- */
104
- async function encontrarIndice(interpretador, vetor, funcaoPesquisa) {
105
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
106
- const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
107
- if (!Array.isArray(valorVetor)) {
108
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
109
- }
110
- if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
111
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
112
- }
113
- for (let indice = 0; indice < valorVetor.length; ++indice) {
114
- if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
115
- return indice;
116
- }
117
- }
118
- return -1;
119
- }
120
- exports.encontrarIndice = encontrarIndice;
121
- /**
122
- * Encontrar o último elemento de um vetor cuja função de pesquisa retorne
123
- * verdadeiro na avaliação de cada elemento.
124
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
125
- * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
126
- * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
127
- * @returns {Promise<number>} O número correspondente ao índice se o elemento for encontrado, ou nulo em caso contrário.
128
- */
129
- async function encontrarUltimo(interpretador, vetor, funcaoPesquisa) {
130
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
131
- const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
132
- if (!Array.isArray(valorVetor)) {
133
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
134
- }
135
- if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
136
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
137
- }
138
- for (let indice = valorVetor.length - 1; indice >= 0; --indice) {
139
- if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
140
- return valorVetor[indice];
141
- }
142
- }
143
- return null;
144
- }
145
- exports.encontrarUltimo = encontrarUltimo;
146
- /**
147
- *
148
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
149
- * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
150
- * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
151
- * @returns {Promise<number>} O número correspondente ao índice se o elemento for encontrado, ou nulo em caso contrário.
152
- */
153
- async function encontrarUltimoIndice(interpretador, vetor, funcaoPesquisa) {
154
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
155
- const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
156
- if (!Array.isArray(valorVetor)) {
157
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
158
- }
159
- if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
160
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
161
- }
162
- for (let indice = valorVetor.length - 1; indice >= 0; --indice) {
163
- if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
164
- return indice;
165
- }
166
- }
167
- return null;
168
- }
169
- exports.encontrarUltimoIndice = encontrarUltimoIndice;
170
- /**
171
- *
172
- * @param interpretador
173
- * @param vetor
174
- * @param funcaoFiltragem
175
- * @returns
176
- */
177
- async function filtrarPor(interpretador, vetor, funcaoFiltragem) {
178
- if (vetor === null || vetor === undefined)
179
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função filtrarPor() não pode ser nulo.'));
180
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
181
- const valorFuncaoFiltragem = funcaoFiltragem.hasOwnProperty('valor')
182
- ? funcaoFiltragem.valor
183
- : funcaoFiltragem;
184
- if (!Array.isArray(valorVetor)) {
185
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função filtrarPor() deve ser um vetor.'));
186
- }
187
- if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
188
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função filtrarPor() deve ser uma função.'));
189
- }
190
- const resultados = [];
191
- for (let indice = 0; indice < valorVetor.length; ++indice) {
192
- const deveRetornarValor = await valorFuncaoFiltragem.chamar(interpretador, [valorVetor[indice]]);
193
- if (deveRetornarValor === false)
194
- continue;
195
- resultados.push(valorVetor[indice]);
196
- }
197
- return resultados;
198
- }
199
- exports.filtrarPor = filtrarPor;
200
- /**
201
- *
202
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
203
- * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
204
- * @param valor
205
- * @returns
206
- */
207
- async function incluido(interpretador, vetor, valor) {
208
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
209
- const valorValor = valor.hasOwnProperty('valor') ? valor.valor : valor;
210
- if (!Array.isArray(valorVetor)) {
211
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
212
- }
213
- for (let indice = 0; indice < valorVetor.length; ++indice) {
214
- if (valorVetor[indice] == valorValor) {
215
- return true;
216
- }
217
- }
218
- return false;
219
- }
220
- exports.incluido = incluido;
221
- /**
222
- *
223
- * @param {InterpretadorInterface} interpretador A instância do interpretador.
224
- * @param numero
225
- * @returns
226
- */
227
- async function inteiro(interpretador, numero) {
228
- if (numero === null || numero === undefined)
229
- return Promise.resolve(0);
230
- const valor = numero.hasOwnProperty('valor') ? numero.valor : numero;
231
- if (isNaN(valor)) {
232
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor não parece ser um número. Somente números ou textos com números podem ser convertidos para inteiro.'));
233
- }
234
- if (!/^(-)?\d+(\.\d+)?$/.test(valor)) {
235
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor não parece estar estruturado como um número (texto vazio, falso ou não definido). Somente números ou textos com números podem ser convertidos para inteiro.'));
236
- }
237
- return Promise.resolve(parseInt(valor));
238
- }
239
- exports.inteiro = inteiro;
240
- /**
241
- *
242
- * @param interpretador
243
- * @param vetor
244
- * @param funcaoMapeamento
245
- * @returns
246
- */
247
- async function mapear(interpretador, vetor, funcaoMapeamento) {
248
- if (vetor === null || vetor === undefined)
249
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função mapear() não pode ser nulo.'));
250
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
251
- const valorFuncaoMapeamento = funcaoMapeamento.hasOwnProperty('valor')
252
- ? funcaoMapeamento.valor
253
- : funcaoMapeamento;
254
- if (!Array.isArray(valorVetor)) {
255
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função mapear() deve ser um vetor.'));
256
- }
257
- if (valorFuncaoMapeamento.constructor.name !== 'DeleguaFuncao') {
258
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função mapear() deve ser uma função.'));
259
- }
260
- const resultados = [];
261
- for (let indice = 0; indice < valorVetor.length; ++indice) {
262
- resultados.push(await valorFuncaoMapeamento.chamar(interpretador, [valorVetor[indice]]));
263
- }
264
- return resultados;
265
- }
266
- exports.mapear = mapear;
267
- /**
268
- *
269
- * @param vetor
270
- * @returns
271
- */
272
- async function ordenar(interpretador, vetor) {
273
- if (vetor === null || vetor === undefined)
274
- throw new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função ordenar() não pode ser nulo.');
275
- const objeto = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
276
- if (!Array.isArray(objeto)) {
277
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor inválido. Objeto inserido não é um vetor.'));
278
- }
279
- let trocado;
280
- const tamanho = objeto.length;
281
- do {
282
- trocado = false;
283
- for (let i = 0; i < tamanho - 1; i++) {
284
- if (objeto[i] > objeto[i + 1]) {
285
- [objeto[i], objeto[i + 1]] = [objeto[i + 1], objeto[i]];
286
- trocado = true;
287
- }
288
- }
289
- } while (trocado);
290
- return Promise.resolve(objeto);
291
- }
292
- exports.ordenar = ordenar;
293
- /**
294
- *
295
- * @param interpretador
296
- * @param vetor
297
- * @param funcaoFiltragem
298
- * @returns
299
- */
300
- async function paraCada(interpretador, vetor, funcaoFiltragem) {
301
- if (vetor === null || vetor === undefined)
302
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função paraCada() não pode ser nulo.'));
303
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
304
- const valorFuncaoFiltragem = funcaoFiltragem.hasOwnProperty('valor')
305
- ? funcaoFiltragem.valor
306
- : funcaoFiltragem;
307
- if (!Array.isArray(valorVetor)) {
308
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função paraCada() deve ser um vetor.'));
309
- }
310
- if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
311
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função paraCada() deve ser uma função.'));
312
- }
313
- for (let indice = 0; indice < valorVetor.length; ++indice) {
314
- await valorFuncaoFiltragem.chamar(interpretador, [valorVetor[indice]]);
315
- }
316
- }
317
- exports.paraCada = paraCada;
318
- /**
319
- *
320
- * @param interpretador
321
- * @param vetor
322
- * @param funcaoFiltragem
323
- * @returns
324
- */
325
- async function primeiroEmCondicao(interpretador, vetor, funcaoFiltragem) {
326
- if (vetor === null || vetor === undefined)
327
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função primeiroEmCondicao() não pode ser nulo.'));
328
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
329
- const valorFuncaoFiltragem = funcaoFiltragem.hasOwnProperty('valor')
330
- ? funcaoFiltragem.valor
331
- : funcaoFiltragem;
332
- if (!Array.isArray(valorVetor)) {
333
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função primeiroEmCondicao() deve ser um vetor.'));
334
- }
335
- if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
336
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função primeiroEmCondicao() deve ser uma função.'));
337
- }
338
- for (let indice = 0; indice < valorVetor.length; ++indice) {
339
- const valorResolvido = await valorFuncaoFiltragem.chamar(interpretador, [valorVetor[indice]]);
340
- if (valorResolvido !== null) {
341
- return valorResolvido;
342
- }
343
- }
344
- return undefined;
345
- }
346
- exports.primeiroEmCondicao = primeiroEmCondicao;
347
- /**
348
- *
349
- * @param interpretador
350
- * @param numero
351
- * @returns
352
- */
353
- async function real(interpretador, numero) {
354
- if (numero === null || numero === undefined)
355
- return Promise.resolve(parseFloat('0'));
356
- const valor = numero.hasOwnProperty('valor') ? numero.valor : numero;
357
- if (!/^(-)?\d+(\.\d+)?$/.test(valor)) {
358
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor não parece estar estruturado como um número (texto/valor vazio, falso ou não definido). Somente números ou textos com números podem ser convertidos para real.'));
359
- }
360
- return Promise.resolve(parseFloat(valor));
361
- }
362
- exports.real = real;
363
- /**
364
- *
365
- * @param interpretador
366
- * @param vetor
367
- * @param funcaoReducao
368
- * @param padrao
369
- * @returns
370
- */
371
- async function reduzir(interpretador, vetor, funcaoReducao, padrao = null) {
372
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
373
- const valorFuncaoReducao = funcaoReducao.hasOwnProperty('valor') ? funcaoReducao.valor : funcaoReducao;
374
- const valorPadrao = padrao.hasOwnProperty('valor') ? padrao.valor : padrao;
375
- if (!Array.isArray(valorVetor)) {
376
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
377
- }
378
- if (valorFuncaoReducao.constructor.name !== 'DeleguaFuncao') {
379
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
380
- }
381
- let resultado = valorPadrao;
382
- let inicio = 0;
383
- if (!resultado) {
384
- resultado = vetor[0];
385
- inicio = 1;
386
- }
387
- for (let index = inicio; index < vetor.length; ++index) {
388
- resultado = await valorFuncaoReducao.chamar(interpretador, [resultado, vetor[index]]);
389
- }
390
- return resultado;
391
- }
392
- exports.reduzir = reduzir;
393
- /**
394
- *
395
- * @param objeto
396
- * @returns
397
- */
398
- async function tamanho(interpretador, objeto) {
399
- const valorObjeto = objeto.hasOwnProperty('valor') ? objeto.valor : objeto;
400
- if (typeof valorObjeto === 'number') {
401
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Função global tamanho() não funciona com números.'));
402
- }
403
- if (valorObjeto instanceof objeto_delegua_classe_1.ObjetoDeleguaClasse) {
404
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Função global tamanho não funciona com objetos complexos.'));
405
- }
406
- if (valorObjeto instanceof estruturas_1.DeleguaFuncao) {
407
- return Promise.resolve(valorObjeto.declaracao.parametros.length);
408
- }
409
- if (valorObjeto instanceof funcao_padrao_1.FuncaoPadrao) {
410
- return Promise.resolve(valorObjeto.valorAridade);
411
- }
412
- if (valorObjeto instanceof descritor_tipo_classe_1.DescritorTipoClasse) {
413
- const metodos = valorObjeto.metodos;
414
- let tamanho = 0;
415
- if (metodos.inicializacao && metodos.inicializacao.eInicializador) {
416
- tamanho = metodos.inicializacao.declaracao.parametros.length;
417
- }
418
- return Promise.resolve(tamanho);
419
- }
420
- return Promise.resolve(valorObjeto.length);
421
- }
422
- exports.tamanho = tamanho;
423
- /**
424
- *
425
- * @param interpretador
426
- * @param valorOuVariavel
427
- * @returns
428
- */
429
- async function texto(interpretador, valorOuVariavel) {
430
- return Promise.resolve(`${valorOuVariavel.hasOwnProperty('valor') ? valorOuVariavel.valor : valorOuVariavel}`);
431
- }
432
- exports.texto = texto;
433
- /**
434
- *
435
- * @param interpretador
436
- * @param vetor
437
- * @param funcaoCondicional
438
- * @returns
439
- */
440
- async function todosEmCondicao(interpretador, vetor, funcaoCondicional) {
441
- if (vetor === null || vetor === undefined)
442
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função todosEmCondicao() não pode ser nulo.'));
443
- const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
444
- const valorFuncaoCondicional = funcaoCondicional.hasOwnProperty('valor')
445
- ? funcaoCondicional.valor
446
- : funcaoCondicional;
447
- if (!Array.isArray(valorVetor)) {
448
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função todosEmCondicao() deve ser um vetor.'));
449
- }
450
- if (valorFuncaoCondicional.constructor.name !== 'DeleguaFuncao') {
451
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função todosEmCondicao() deve ser uma função.'));
452
- }
453
- for (let indice = 0; indice < valorVetor.length; ++indice) {
454
- if (!(await valorFuncaoCondicional.chamar(interpretador, [valorVetor[indice]])))
455
- return false;
456
- }
457
- return true;
458
- }
459
- exports.todosEmCondicao = todosEmCondicao;
460
- /**
461
- * Transforma um vetor de elementos em uma tupla de N elementos, sendo N a
462
- * largura do vetor.
463
- * @param interpretador
464
- * @param vetor
465
- * @returns
466
- */
467
- async function tupla(interpretador, vetor) {
468
- const valorVetor = !Array.isArray(vetor) && vetor.hasOwnProperty('valor') ?
469
- vetor.valor :
470
- vetor;
471
- if (!Array.isArray(valorVetor)) {
472
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Argumento de função nativa `tupla` não parece ser um vetor.'));
473
- }
474
- switch (valorVetor.length) {
475
- case 2:
476
- return Promise.resolve(new construtos_1.Dupla(valorVetor[0], valorVetor[1]));
477
- case 3:
478
- return Promise.resolve(new construtos_1.Trio(valorVetor[0], valorVetor[1], valorVetor[2]));
479
- case 4:
480
- return Promise.resolve(new construtos_1.Quarteto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3]));
481
- case 5:
482
- return Promise.resolve(new construtos_1.Quinteto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4]));
483
- case 6:
484
- return Promise.resolve(new construtos_1.Sexteto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5]));
485
- case 7:
486
- return Promise.resolve(new construtos_1.Septeto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6]));
487
- case 8:
488
- return Promise.resolve(new construtos_1.Octeto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6], valorVetor[7]));
489
- case 9:
490
- return Promise.resolve(new construtos_1.Noneto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6], valorVetor[7], valorVetor[8]));
491
- case 10:
492
- return Promise.resolve(new construtos_1.Deceto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6], valorVetor[7], valorVetor[8], valorVetor[9]));
493
- case 1:
494
- default:
495
- return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Para ser transformado em uma tupla, vetor precisa ter de 2 a 10 elementos.'));
496
- }
497
- }
498
- exports.tupla = tupla;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aleatorio = aleatorio;
4
+ exports.aleatorioEntre = aleatorioEntre;
5
+ exports.algum = algum;
6
+ exports.encontrar = encontrar;
7
+ exports.encontrarIndice = encontrarIndice;
8
+ exports.encontrarUltimo = encontrarUltimo;
9
+ exports.encontrarUltimoIndice = encontrarUltimoIndice;
10
+ exports.filtrarPor = filtrarPor;
11
+ exports.incluido = incluido;
12
+ exports.inteiro = inteiro;
13
+ exports.mapear = mapear;
14
+ exports.ordenar = ordenar;
15
+ exports.paraCada = paraCada;
16
+ exports.primeiroEmCondicao = primeiroEmCondicao;
17
+ exports.real = real;
18
+ exports.reduzir = reduzir;
19
+ exports.tamanho = tamanho;
20
+ exports.texto = texto;
21
+ exports.todosEmCondicao = todosEmCondicao;
22
+ exports.tupla = tupla;
23
+ const excecoes_1 = require("../excecoes");
24
+ const objeto_delegua_classe_1 = require("../estruturas/objeto-delegua-classe");
25
+ const funcao_padrao_1 = require("../estruturas/funcao-padrao");
26
+ const descritor_tipo_classe_1 = require("../estruturas/descritor-tipo-classe");
27
+ const estruturas_1 = require("../estruturas");
28
+ const construtos_1 = require("../construtos");
29
+ /**
30
+ * Retorna um número aleatório entre 0 e 1.
31
+ * @returns {Promise<number>} Número real.
32
+ */
33
+ async function aleatorio(interpretador) {
34
+ return Promise.resolve(Math.random());
35
+ }
36
+ /**
37
+ * Retorna um número aleatório de acordo com o parâmetro passado.
38
+ * Mínimo(inclusivo) - Máximo(exclusivo).
39
+ * @param {number} minimo O número mínimo.
40
+ * @param {number} maximo O número máximo.
41
+ * @returns {Promise<number>} Um número real entre os valores máximo e mínimo especificados.
42
+ */
43
+ async function aleatorioEntre(interpretador, minimo, maximo) {
44
+ // eslint-disable-next-line prefer-rest-params
45
+ if (arguments.length <= 0) {
46
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'A função recebe ao menos um parâmetro.'));
47
+ }
48
+ const valorMinimo = minimo.hasOwnProperty('valor') ? minimo.valor : minimo;
49
+ if (arguments.length === 2) {
50
+ if (typeof valorMinimo !== 'number') {
51
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'O parâmetro deve ser um número.'));
52
+ }
53
+ return Math.floor(Math.random() * (0 - valorMinimo)) + valorMinimo;
54
+ }
55
+ if (arguments.length > 3) {
56
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'A quantidade de parâmetros máxima para esta função é 2.'));
57
+ }
58
+ const valorMaximo = maximo.hasOwnProperty('valor') ? maximo.valor : maximo;
59
+ if (typeof valorMinimo !== 'number' || typeof valorMaximo !== 'number') {
60
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Os dois parâmetros devem ser do tipo número.'));
61
+ }
62
+ return Promise.resolve(Math.floor(Math.random() * (valorMaximo - valorMinimo)) + valorMinimo);
63
+ }
64
+ /**
65
+ * Verifica se algum dos elementos satisfaz à condição para por parâmetro.
66
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
67
+ * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
68
+ * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
69
+ * @returns {Promise<boolean>} Verdadeiro se há algum elemento no vetor com a condição. Falso caso contrário.
70
+ */
71
+ async function algum(interpretador, vetor, funcaoPesquisa) {
72
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
73
+ const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
74
+ if (!Array.isArray(valorVetor)) {
75
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
76
+ }
77
+ if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
78
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
79
+ }
80
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
81
+ if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
82
+ return true;
83
+ }
84
+ }
85
+ return false;
86
+ }
87
+ /**
88
+ * Encontra o primeiro elemento de um vetor cuja função de pesquisa retorne
89
+ * verdadeiro na avaliação de cada elemento.
90
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
91
+ * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
92
+ * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
93
+ * @returns {Promise<any>} Um elemento, caso o elemento seja encontraro, ou nulo em caso contrário.
94
+ */
95
+ async function encontrar(interpretador, vetor, funcaoPesquisa) {
96
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
97
+ const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
98
+ if (!Array.isArray(valorVetor)) {
99
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
100
+ }
101
+ if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
102
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
103
+ }
104
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
105
+ if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
106
+ return valorVetor[indice];
107
+ }
108
+ }
109
+ return null;
110
+ }
111
+ /**
112
+ * Encontra o índice do primeiro elemento de um vetor cuja função de pesquisa retorne
113
+ * verdadeiro na avaliação de cada elemento.
114
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
115
+ * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
116
+ * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
117
+ * @returns {Promise<number>} O número correspondente ao índice se o elemento for encontrado, ou nulo em caso contrário.
118
+ */
119
+ async function encontrarIndice(interpretador, vetor, funcaoPesquisa) {
120
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
121
+ const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
122
+ if (!Array.isArray(valorVetor)) {
123
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
124
+ }
125
+ if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
126
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
127
+ }
128
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
129
+ if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
130
+ return indice;
131
+ }
132
+ }
133
+ return -1;
134
+ }
135
+ /**
136
+ * Encontrar o último elemento de um vetor cuja função de pesquisa retorne
137
+ * verdadeiro na avaliação de cada elemento.
138
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
139
+ * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
140
+ * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
141
+ * @returns {Promise<number>} O número correspondente ao índice se o elemento for encontrado, ou nulo em caso contrário.
142
+ */
143
+ async function encontrarUltimo(interpretador, vetor, funcaoPesquisa) {
144
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
145
+ const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
146
+ if (!Array.isArray(valorVetor)) {
147
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
148
+ }
149
+ if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
150
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
151
+ }
152
+ for (let indice = valorVetor.length - 1; indice >= 0; --indice) {
153
+ if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
154
+ return valorVetor[indice];
155
+ }
156
+ }
157
+ return null;
158
+ }
159
+ /**
160
+ *
161
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
162
+ * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
163
+ * @param {VariavelInterface | any} funcaoPesquisa A função que ensina o método de pesquisa.
164
+ * @returns {Promise<number>} O número correspondente ao índice se o elemento for encontrado, ou nulo em caso contrário.
165
+ */
166
+ async function encontrarUltimoIndice(interpretador, vetor, funcaoPesquisa) {
167
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
168
+ const valorFuncaoPesquisa = funcaoPesquisa.hasOwnProperty('valor') ? funcaoPesquisa.valor : funcaoPesquisa;
169
+ if (!Array.isArray(valorVetor)) {
170
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
171
+ }
172
+ if (valorFuncaoPesquisa.constructor.name !== 'DeleguaFuncao') {
173
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
174
+ }
175
+ for (let indice = valorVetor.length - 1; indice >= 0; --indice) {
176
+ if (await valorFuncaoPesquisa.chamar(interpretador, [valorVetor[indice]])) {
177
+ return indice;
178
+ }
179
+ }
180
+ return null;
181
+ }
182
+ /**
183
+ *
184
+ * @param interpretador
185
+ * @param vetor
186
+ * @param funcaoFiltragem
187
+ * @returns
188
+ */
189
+ async function filtrarPor(interpretador, vetor, funcaoFiltragem) {
190
+ if (vetor === null || vetor === undefined)
191
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função filtrarPor() não pode ser nulo.'));
192
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
193
+ const valorFuncaoFiltragem = funcaoFiltragem.hasOwnProperty('valor') ? funcaoFiltragem.valor : funcaoFiltragem;
194
+ if (!Array.isArray(valorVetor)) {
195
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função filtrarPor() deve ser um vetor.'));
196
+ }
197
+ if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
198
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função filtrarPor() deve ser uma função.'));
199
+ }
200
+ const resultados = [];
201
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
202
+ const deveRetornarValor = await valorFuncaoFiltragem.chamar(interpretador, [valorVetor[indice]]);
203
+ if (deveRetornarValor === false)
204
+ continue;
205
+ resultados.push(valorVetor[indice]);
206
+ }
207
+ return resultados;
208
+ }
209
+ /**
210
+ *
211
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
212
+ * @param {VariavelInterface | any} vetor Uma variável de Delégua ou um vetor nativo de JavaScript.
213
+ * @param valor
214
+ * @returns
215
+ */
216
+ async function incluido(interpretador, vetor, valor) {
217
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
218
+ const valorValor = valor.hasOwnProperty('valor') ? valor.valor : valor;
219
+ if (!Array.isArray(valorVetor)) {
220
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
221
+ }
222
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
223
+ if (valorVetor[indice] == valorValor) {
224
+ return true;
225
+ }
226
+ }
227
+ return false;
228
+ }
229
+ /**
230
+ *
231
+ * @param {InterpretadorInterface} interpretador A instância do interpretador.
232
+ * @param numero
233
+ * @returns
234
+ */
235
+ async function inteiro(interpretador, numero) {
236
+ if (numero === null || numero === undefined)
237
+ return Promise.resolve(0);
238
+ const valor = numero.hasOwnProperty('valor') ? numero.valor : numero;
239
+ if (isNaN(valor)) {
240
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor não parece ser um número. Somente números ou textos com números podem ser convertidos para inteiro.'));
241
+ }
242
+ if (!/^(-)?\d+(\.\d+)?$/.test(valor)) {
243
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor não parece estar estruturado como um número (texto vazio, falso ou não definido). Somente números ou textos com números podem ser convertidos para inteiro.'));
244
+ }
245
+ return Promise.resolve(parseInt(valor));
246
+ }
247
+ /**
248
+ *
249
+ * @param interpretador
250
+ * @param vetor
251
+ * @param funcaoMapeamento
252
+ * @returns
253
+ */
254
+ async function mapear(interpretador, vetor, funcaoMapeamento) {
255
+ if (vetor === null || vetor === undefined)
256
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função mapear() não pode ser nulo.'));
257
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
258
+ const valorFuncaoMapeamento = funcaoMapeamento.hasOwnProperty('valor') ? funcaoMapeamento.valor : funcaoMapeamento;
259
+ if (!Array.isArray(valorVetor)) {
260
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função mapear() deve ser um vetor.'));
261
+ }
262
+ if (valorFuncaoMapeamento.constructor.name !== 'DeleguaFuncao') {
263
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função mapear() deve ser uma função.'));
264
+ }
265
+ const resultados = [];
266
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
267
+ resultados.push(await valorFuncaoMapeamento.chamar(interpretador, [valorVetor[indice]]));
268
+ }
269
+ return resultados;
270
+ }
271
+ /**
272
+ *
273
+ * @param vetor
274
+ * @returns
275
+ */
276
+ async function ordenar(interpretador, vetor) {
277
+ if (vetor === null || vetor === undefined)
278
+ throw new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função ordenar() não pode ser nulo.');
279
+ const objeto = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
280
+ if (!Array.isArray(objeto)) {
281
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor inválido. Objeto inserido não é um vetor.'));
282
+ }
283
+ let trocado;
284
+ const tamanho = objeto.length;
285
+ do {
286
+ trocado = false;
287
+ for (let i = 0; i < tamanho - 1; i++) {
288
+ if (objeto[i] > objeto[i + 1]) {
289
+ [objeto[i], objeto[i + 1]] = [objeto[i + 1], objeto[i]];
290
+ trocado = true;
291
+ }
292
+ }
293
+ } while (trocado);
294
+ return Promise.resolve(objeto);
295
+ }
296
+ /**
297
+ *
298
+ * @param interpretador
299
+ * @param vetor
300
+ * @param funcaoFiltragem
301
+ * @returns
302
+ */
303
+ async function paraCada(interpretador, vetor, funcaoFiltragem) {
304
+ if (vetor === null || vetor === undefined)
305
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função paraCada() não pode ser nulo.'));
306
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
307
+ const valorFuncaoFiltragem = funcaoFiltragem.hasOwnProperty('valor') ? funcaoFiltragem.valor : funcaoFiltragem;
308
+ if (!Array.isArray(valorVetor)) {
309
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função paraCada() deve ser um vetor.'));
310
+ }
311
+ if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
312
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função paraCada() deve ser uma função.'));
313
+ }
314
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
315
+ await valorFuncaoFiltragem.chamar(interpretador, [valorVetor[indice]]);
316
+ }
317
+ }
318
+ /**
319
+ *
320
+ * @param interpretador
321
+ * @param vetor
322
+ * @param funcaoFiltragem
323
+ * @returns
324
+ */
325
+ async function primeiroEmCondicao(interpretador, vetor, funcaoFiltragem) {
326
+ if (vetor === null || vetor === undefined)
327
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função primeiroEmCondicao() não pode ser nulo.'));
328
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
329
+ const valorFuncaoFiltragem = funcaoFiltragem.hasOwnProperty('valor') ? funcaoFiltragem.valor : funcaoFiltragem;
330
+ if (!Array.isArray(valorVetor)) {
331
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função primeiroEmCondicao() deve ser um vetor.'));
332
+ }
333
+ if (valorFuncaoFiltragem.constructor.name !== 'DeleguaFuncao') {
334
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função primeiroEmCondicao() deve ser uma função.'));
335
+ }
336
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
337
+ const valorResolvido = await valorFuncaoFiltragem.chamar(interpretador, [valorVetor[indice]]);
338
+ if (valorResolvido !== null) {
339
+ return valorResolvido;
340
+ }
341
+ }
342
+ return undefined;
343
+ }
344
+ /**
345
+ *
346
+ * @param interpretador
347
+ * @param numero
348
+ * @returns
349
+ */
350
+ async function real(interpretador, numero) {
351
+ if (numero === null || numero === undefined)
352
+ return Promise.resolve(parseFloat('0'));
353
+ const valor = numero.hasOwnProperty('valor') ? numero.valor : numero;
354
+ if (!/^(-)?\d+(\.\d+)?$/.test(valor)) {
355
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Valor não parece estar estruturado como um número (texto/valor vazio, falso ou não definido). Somente números ou textos com números podem ser convertidos para real.'));
356
+ }
357
+ return Promise.resolve(parseFloat(valor));
358
+ }
359
+ /**
360
+ *
361
+ * @param interpretador
362
+ * @param vetor
363
+ * @param funcaoReducao
364
+ * @param padrao
365
+ * @returns
366
+ */
367
+ async function reduzir(interpretador, vetor, funcaoReducao, padrao = null) {
368
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
369
+ const valorFuncaoReducao = funcaoReducao.hasOwnProperty('valor') ? funcaoReducao.valor : funcaoReducao;
370
+ const valorPadrao = padrao.hasOwnProperty('valor') ? padrao.valor : padrao;
371
+ if (!Array.isArray(valorVetor)) {
372
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função deve ser um vetor.'));
373
+ }
374
+ if (valorFuncaoReducao.constructor.name !== 'DeleguaFuncao') {
375
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função deve ser uma função.'));
376
+ }
377
+ let resultado = valorPadrao;
378
+ let inicio = 0;
379
+ if (!resultado) {
380
+ resultado = vetor[0];
381
+ inicio = 1;
382
+ }
383
+ for (let index = inicio; index < vetor.length; ++index) {
384
+ resultado = await valorFuncaoReducao.chamar(interpretador, [resultado, vetor[index]]);
385
+ }
386
+ return resultado;
387
+ }
388
+ /**
389
+ *
390
+ * @param objeto
391
+ * @returns
392
+ */
393
+ async function tamanho(interpretador, objeto) {
394
+ const valorObjeto = objeto.hasOwnProperty('valor') ? objeto.valor : objeto;
395
+ if (typeof valorObjeto === 'number') {
396
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Função global tamanho() não funciona com números.'));
397
+ }
398
+ if (valorObjeto instanceof objeto_delegua_classe_1.ObjetoDeleguaClasse) {
399
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Função global tamanho não funciona com objetos complexos.'));
400
+ }
401
+ if (valorObjeto instanceof estruturas_1.DeleguaFuncao) {
402
+ return Promise.resolve(valorObjeto.declaracao.parametros.length);
403
+ }
404
+ if (valorObjeto instanceof funcao_padrao_1.FuncaoPadrao) {
405
+ return Promise.resolve(valorObjeto.valorAridade);
406
+ }
407
+ if (valorObjeto instanceof descritor_tipo_classe_1.DescritorTipoClasse) {
408
+ const metodos = valorObjeto.metodos;
409
+ let tamanho = 0;
410
+ if (metodos.inicializacao && metodos.inicializacao.eInicializador) {
411
+ tamanho = metodos.inicializacao.declaracao.parametros.length;
412
+ }
413
+ return Promise.resolve(tamanho);
414
+ }
415
+ return Promise.resolve(valorObjeto.length);
416
+ }
417
+ /**
418
+ *
419
+ * @param interpretador
420
+ * @param valorOuVariavel
421
+ * @returns
422
+ */
423
+ async function texto(interpretador, valorOuVariavel) {
424
+ return Promise.resolve(`${valorOuVariavel.hasOwnProperty('valor') ? valorOuVariavel.valor : valorOuVariavel}`);
425
+ }
426
+ /**
427
+ *
428
+ * @param interpretador
429
+ * @param vetor
430
+ * @param funcaoCondicional
431
+ * @returns
432
+ */
433
+ async function todosEmCondicao(interpretador, vetor, funcaoCondicional) {
434
+ if (vetor === null || vetor === undefined)
435
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função todosEmCondicao() não pode ser nulo.'));
436
+ const valorVetor = vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
437
+ const valorFuncaoCondicional = funcaoCondicional.hasOwnProperty('valor')
438
+ ? funcaoCondicional.valor
439
+ : funcaoCondicional;
440
+ if (!Array.isArray(valorVetor)) {
441
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O primeiro parâmetro da função todosEmCondicao() deve ser um vetor.'));
442
+ }
443
+ if (valorFuncaoCondicional.constructor.name !== 'DeleguaFuncao') {
444
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Parâmetro inválido. O segundo parâmetro da função todosEmCondicao() deve ser uma função.'));
445
+ }
446
+ for (let indice = 0; indice < valorVetor.length; ++indice) {
447
+ if (!(await valorFuncaoCondicional.chamar(interpretador, [valorVetor[indice]])))
448
+ return false;
449
+ }
450
+ return true;
451
+ }
452
+ /**
453
+ * Transforma um vetor de elementos em uma tupla de N elementos, sendo N a
454
+ * largura do vetor.
455
+ * @param interpretador
456
+ * @param vetor
457
+ * @returns
458
+ */
459
+ async function tupla(interpretador, vetor) {
460
+ const valorVetor = !Array.isArray(vetor) && vetor.hasOwnProperty('valor') ? vetor.valor : vetor;
461
+ if (!Array.isArray(valorVetor)) {
462
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Argumento de função nativa `tupla` não parece ser um vetor.'));
463
+ }
464
+ switch (valorVetor.length) {
465
+ case 2:
466
+ return Promise.resolve(new construtos_1.Dupla(valorVetor[0], valorVetor[1]));
467
+ case 3:
468
+ return Promise.resolve(new construtos_1.Trio(valorVetor[0], valorVetor[1], valorVetor[2]));
469
+ case 4:
470
+ return Promise.resolve(new construtos_1.Quarteto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3]));
471
+ case 5:
472
+ return Promise.resolve(new construtos_1.Quinteto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4]));
473
+ case 6:
474
+ return Promise.resolve(new construtos_1.Sexteto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5]));
475
+ case 7:
476
+ return Promise.resolve(new construtos_1.Septeto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6]));
477
+ case 8:
478
+ return Promise.resolve(new construtos_1.Octeto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6], valorVetor[7]));
479
+ case 9:
480
+ return Promise.resolve(new construtos_1.Noneto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6], valorVetor[7], valorVetor[8]));
481
+ case 10:
482
+ return Promise.resolve(new construtos_1.Deceto(valorVetor[0], valorVetor[1], valorVetor[2], valorVetor[3], valorVetor[4], valorVetor[5], valorVetor[6], valorVetor[7], valorVetor[8], valorVetor[9]));
483
+ case 1:
484
+ default:
485
+ return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(this.simbolo, 'Para ser transformado em uma tupla, vetor precisa ter de 2 a 10 elementos.'));
486
+ }
487
+ }
499
488
  //# sourceMappingURL=biblioteca-global.js.map