@designliquido/delegua 0.51.0 → 0.52.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 (468) hide show
  1. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -1
  2. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  3. package/avaliador-sintatico/avaliador-sintatico-base.js +4 -4
  4. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  5. package/avaliador-sintatico/avaliador-sintatico.d.ts +2 -6
  6. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  7. package/avaliador-sintatico/avaliador-sintatico.js +4 -54
  8. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  9. package/avaliador-sintatico/comum.d.ts +4 -1
  10. package/avaliador-sintatico/comum.d.ts.map +1 -1
  11. package/avaliador-sintatico/comum.js +88 -0
  12. package/avaliador-sintatico/comum.js.map +1 -1
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts +33 -0
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.d.ts.map +1 -0
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js +231 -0
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-calango.js.map +1 -0
  17. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +1 -0
  18. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  19. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +180 -140
  20. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  21. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts +1 -2
  22. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
  23. package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
  24. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts +1 -1
  25. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts.map +1 -1
  26. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js.map +1 -1
  27. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  28. package/bibliotecas/biblioteca-global.js +18 -6
  29. package/bibliotecas/biblioteca-global.js.map +1 -1
  30. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  31. package/bibliotecas/primitivas-vetor.js +6 -3
  32. package/bibliotecas/primitivas-vetor.js.map +1 -1
  33. package/bin/package.json +1 -1
  34. package/construtos/acesso-elemento-matriz.d.ts +4 -3
  35. package/construtos/acesso-elemento-matriz.d.ts.map +1 -1
  36. package/construtos/acesso-elemento-matriz.js +6 -0
  37. package/construtos/acesso-elemento-matriz.js.map +1 -1
  38. package/construtos/acesso-indice-variavel.d.ts +1 -0
  39. package/construtos/acesso-indice-variavel.d.ts.map +1 -1
  40. package/construtos/acesso-indice-variavel.js +5 -0
  41. package/construtos/acesso-indice-variavel.js.map +1 -1
  42. package/construtos/acesso-metodo-ou-propriedade.d.ts +1 -0
  43. package/construtos/acesso-metodo-ou-propriedade.d.ts.map +1 -1
  44. package/construtos/acesso-metodo-ou-propriedade.js +5 -0
  45. package/construtos/acesso-metodo-ou-propriedade.js.map +1 -1
  46. package/construtos/acesso-metodo.d.ts +1 -0
  47. package/construtos/acesso-metodo.d.ts.map +1 -1
  48. package/construtos/acesso-metodo.js +3 -0
  49. package/construtos/acesso-metodo.js.map +1 -1
  50. package/construtos/acesso-propriedade.d.ts +1 -0
  51. package/construtos/acesso-propriedade.d.ts.map +1 -1
  52. package/construtos/acesso-propriedade.js +3 -0
  53. package/construtos/acesso-propriedade.js.map +1 -1
  54. package/construtos/agrupamento.d.ts +1 -0
  55. package/construtos/agrupamento.d.ts.map +1 -1
  56. package/construtos/agrupamento.js +3 -0
  57. package/construtos/agrupamento.js.map +1 -1
  58. package/construtos/argumento-referencia-funcao.d.ts +1 -0
  59. package/construtos/argumento-referencia-funcao.d.ts.map +1 -1
  60. package/construtos/argumento-referencia-funcao.js +3 -0
  61. package/construtos/argumento-referencia-funcao.js.map +1 -1
  62. package/construtos/atribuicao-por-indice.d.ts +1 -0
  63. package/construtos/atribuicao-por-indice.d.ts.map +1 -1
  64. package/construtos/atribuicao-por-indice.js +6 -0
  65. package/construtos/atribuicao-por-indice.js.map +1 -1
  66. package/construtos/atribuicao-por-indices-matriz.d.ts +6 -5
  67. package/construtos/atribuicao-por-indices-matriz.d.ts.map +1 -1
  68. package/construtos/atribuicao-por-indices-matriz.js +7 -0
  69. package/construtos/atribuicao-por-indices-matriz.js.map +1 -1
  70. package/construtos/atribuir.d.ts +3 -2
  71. package/construtos/atribuir.d.ts.map +1 -1
  72. package/construtos/atribuir.js +7 -0
  73. package/construtos/atribuir.js.map +1 -1
  74. package/construtos/binario.d.ts +1 -0
  75. package/construtos/binario.d.ts.map +1 -1
  76. package/construtos/binario.js +6 -0
  77. package/construtos/binario.js.map +1 -1
  78. package/construtos/chamada.d.ts +1 -0
  79. package/construtos/chamada.d.ts.map +1 -1
  80. package/construtos/chamada.js +4 -0
  81. package/construtos/chamada.js.map +1 -1
  82. package/construtos/comentario-como-construto.d.ts +1 -0
  83. package/construtos/comentario-como-construto.d.ts.map +1 -1
  84. package/construtos/comentario-como-construto.js +3 -0
  85. package/construtos/comentario-como-construto.js.map +1 -1
  86. package/construtos/componente-linguagem.d.ts +1 -0
  87. package/construtos/componente-linguagem.d.ts.map +1 -1
  88. package/construtos/componente-linguagem.js +3 -0
  89. package/construtos/componente-linguagem.js.map +1 -1
  90. package/construtos/constante.d.ts +1 -0
  91. package/construtos/constante.d.ts.map +1 -1
  92. package/construtos/constante.js +3 -0
  93. package/construtos/constante.js.map +1 -1
  94. package/construtos/construto.d.ts +1 -0
  95. package/construtos/construto.d.ts.map +1 -1
  96. package/construtos/decorador.d.ts +1 -0
  97. package/construtos/decorador.d.ts.map +1 -1
  98. package/construtos/decorador.js +4 -0
  99. package/construtos/decorador.js.map +1 -1
  100. package/construtos/definir-valor.d.ts +1 -0
  101. package/construtos/definir-valor.d.ts.map +1 -1
  102. package/construtos/definir-valor.js +3 -0
  103. package/construtos/definir-valor.js.map +1 -1
  104. package/construtos/dicionario.d.ts +1 -0
  105. package/construtos/dicionario.d.ts.map +1 -1
  106. package/construtos/dicionario.js +3 -0
  107. package/construtos/dicionario.js.map +1 -1
  108. package/construtos/expressao-regular.d.ts +1 -0
  109. package/construtos/expressao-regular.d.ts.map +1 -1
  110. package/construtos/expressao-regular.js +3 -0
  111. package/construtos/expressao-regular.js.map +1 -1
  112. package/construtos/fim-para.d.ts +1 -0
  113. package/construtos/fim-para.d.ts.map +1 -1
  114. package/construtos/fim-para.js +3 -0
  115. package/construtos/fim-para.js.map +1 -1
  116. package/construtos/formatacao-escrita.d.ts +1 -0
  117. package/construtos/formatacao-escrita.d.ts.map +1 -1
  118. package/construtos/formatacao-escrita.js +3 -0
  119. package/construtos/formatacao-escrita.js.map +1 -1
  120. package/construtos/funcao.d.ts +1 -0
  121. package/construtos/funcao.d.ts.map +1 -1
  122. package/construtos/funcao.js +4 -0
  123. package/construtos/funcao.js.map +1 -1
  124. package/construtos/index.d.ts +1 -0
  125. package/construtos/index.d.ts.map +1 -1
  126. package/construtos/index.js +1 -0
  127. package/construtos/index.js.map +1 -1
  128. package/construtos/isto.d.ts +1 -0
  129. package/construtos/isto.d.ts.map +1 -1
  130. package/construtos/isto.js +3 -0
  131. package/construtos/isto.js.map +1 -1
  132. package/construtos/leia.d.ts +1 -0
  133. package/construtos/leia.d.ts.map +1 -1
  134. package/construtos/leia.js +3 -0
  135. package/construtos/leia.js.map +1 -1
  136. package/construtos/literal.d.ts +1 -0
  137. package/construtos/literal.d.ts.map +1 -1
  138. package/construtos/literal.js +3 -0
  139. package/construtos/literal.js.map +1 -1
  140. package/construtos/logico.d.ts +1 -0
  141. package/construtos/logico.d.ts.map +1 -1
  142. package/construtos/logico.js +5 -0
  143. package/construtos/logico.js.map +1 -1
  144. package/construtos/referencia-biblioteca-global.d.ts +1 -0
  145. package/construtos/referencia-biblioteca-global.d.ts.map +1 -1
  146. package/construtos/referencia-biblioteca-global.js +3 -0
  147. package/construtos/referencia-biblioteca-global.js.map +1 -1
  148. package/construtos/referencia-funcao.d.ts +1 -0
  149. package/construtos/referencia-funcao.d.ts.map +1 -1
  150. package/construtos/referencia-funcao.js +3 -0
  151. package/construtos/referencia-funcao.js.map +1 -1
  152. package/construtos/separador.d.ts +1 -0
  153. package/construtos/separador.d.ts.map +1 -1
  154. package/construtos/separador.js +3 -0
  155. package/construtos/separador.js.map +1 -1
  156. package/construtos/super.d.ts +1 -0
  157. package/construtos/super.d.ts.map +1 -1
  158. package/construtos/super.js +3 -0
  159. package/construtos/super.js.map +1 -1
  160. package/construtos/tipo-de.d.ts +1 -0
  161. package/construtos/tipo-de.d.ts.map +1 -1
  162. package/construtos/tipo-de.js +3 -0
  163. package/construtos/tipo-de.js.map +1 -1
  164. package/construtos/tupla.d.ts +11 -0
  165. package/construtos/tupla.d.ts.map +1 -0
  166. package/construtos/tupla.js.map +1 -0
  167. package/construtos/tuplas/deceto.d.ts +14 -12
  168. package/construtos/tuplas/deceto.d.ts.map +1 -1
  169. package/construtos/tuplas/deceto.js +15 -1
  170. package/construtos/tuplas/deceto.js.map +1 -1
  171. package/construtos/tuplas/dupla.d.ts +6 -4
  172. package/construtos/tuplas/dupla.d.ts.map +1 -1
  173. package/construtos/tuplas/dupla.js +6 -1
  174. package/construtos/tuplas/dupla.js.map +1 -1
  175. package/construtos/tuplas/index.d.ts +0 -1
  176. package/construtos/tuplas/index.d.ts.map +1 -1
  177. package/construtos/tuplas/index.js +0 -1
  178. package/construtos/tuplas/index.js.map +1 -1
  179. package/construtos/tuplas/noneto.d.ts +13 -11
  180. package/construtos/tuplas/noneto.d.ts.map +1 -1
  181. package/construtos/tuplas/noneto.js +13 -1
  182. package/construtos/tuplas/noneto.js.map +1 -1
  183. package/construtos/tuplas/octeto.d.ts +12 -10
  184. package/construtos/tuplas/octeto.d.ts.map +1 -1
  185. package/construtos/tuplas/octeto.js +12 -1
  186. package/construtos/tuplas/octeto.js.map +1 -1
  187. package/construtos/tuplas/quarteto.d.ts +8 -6
  188. package/construtos/tuplas/quarteto.d.ts.map +1 -1
  189. package/construtos/tuplas/quarteto.js +8 -1
  190. package/construtos/tuplas/quarteto.js.map +1 -1
  191. package/construtos/tuplas/quinteto.d.ts +9 -7
  192. package/construtos/tuplas/quinteto.d.ts.map +1 -1
  193. package/construtos/tuplas/quinteto.js +9 -1
  194. package/construtos/tuplas/quinteto.js.map +1 -1
  195. package/construtos/tuplas/septeto.d.ts +11 -9
  196. package/construtos/tuplas/septeto.d.ts.map +1 -1
  197. package/construtos/tuplas/septeto.js +11 -1
  198. package/construtos/tuplas/septeto.js.map +1 -1
  199. package/construtos/tuplas/sexteto.d.ts +10 -8
  200. package/construtos/tuplas/sexteto.d.ts.map +1 -1
  201. package/construtos/tuplas/sexteto.js +10 -1
  202. package/construtos/tuplas/sexteto.js.map +1 -1
  203. package/construtos/tuplas/trio.d.ts +7 -5
  204. package/construtos/tuplas/trio.d.ts.map +1 -1
  205. package/construtos/tuplas/trio.js +7 -1
  206. package/construtos/tuplas/trio.js.map +1 -1
  207. package/construtos/unario.d.ts +2 -1
  208. package/construtos/unario.d.ts.map +1 -1
  209. package/construtos/unario.js +3 -0
  210. package/construtos/unario.js.map +1 -1
  211. package/construtos/variavel.d.ts +1 -0
  212. package/construtos/variavel.d.ts.map +1 -1
  213. package/construtos/variavel.js +3 -0
  214. package/construtos/variavel.js.map +1 -1
  215. package/construtos/vetor.d.ts +1 -0
  216. package/construtos/vetor.d.ts.map +1 -1
  217. package/construtos/vetor.js +3 -0
  218. package/construtos/vetor.js.map +1 -1
  219. package/declaracoes/aleatorio.d.ts +1 -0
  220. package/declaracoes/aleatorio.d.ts.map +1 -1
  221. package/declaracoes/aleatorio.js +4 -0
  222. package/declaracoes/aleatorio.js.map +1 -1
  223. package/declaracoes/bloco.d.ts +3 -2
  224. package/declaracoes/bloco.d.ts.map +1 -1
  225. package/declaracoes/bloco.js +8 -0
  226. package/declaracoes/bloco.js.map +1 -1
  227. package/declaracoes/cabecalho-programa.d.ts +4 -0
  228. package/declaracoes/cabecalho-programa.d.ts.map +1 -1
  229. package/declaracoes/cabecalho-programa.js +6 -0
  230. package/declaracoes/cabecalho-programa.js.map +1 -1
  231. package/declaracoes/classe.d.ts +1 -0
  232. package/declaracoes/classe.d.ts.map +1 -1
  233. package/declaracoes/classe.js +15 -0
  234. package/declaracoes/classe.js.map +1 -1
  235. package/declaracoes/comentario.d.ts +1 -0
  236. package/declaracoes/comentario.d.ts.map +1 -1
  237. package/declaracoes/comentario.js +3 -0
  238. package/declaracoes/comentario.js.map +1 -1
  239. package/declaracoes/const-multiplo.d.ts +1 -0
  240. package/declaracoes/const-multiplo.d.ts.map +1 -1
  241. package/declaracoes/const-multiplo.js +4 -0
  242. package/declaracoes/const-multiplo.js.map +1 -1
  243. package/declaracoes/const.d.ts +1 -0
  244. package/declaracoes/const.d.ts.map +1 -1
  245. package/declaracoes/const.js +3 -0
  246. package/declaracoes/const.js.map +1 -1
  247. package/declaracoes/continua.d.ts +1 -0
  248. package/declaracoes/continua.d.ts.map +1 -1
  249. package/declaracoes/continua.js +3 -0
  250. package/declaracoes/continua.js.map +1 -1
  251. package/declaracoes/declaracao.d.ts +3 -1
  252. package/declaracoes/declaracao.d.ts.map +1 -1
  253. package/declaracoes/declaracao.js +3 -0
  254. package/declaracoes/declaracao.js.map +1 -1
  255. package/declaracoes/enquanto.d.ts +1 -0
  256. package/declaracoes/enquanto.d.ts.map +1 -1
  257. package/declaracoes/enquanto.js +4 -0
  258. package/declaracoes/enquanto.js.map +1 -1
  259. package/declaracoes/escolha.d.ts +1 -0
  260. package/declaracoes/escolha.d.ts.map +1 -1
  261. package/declaracoes/escolha.js +4 -0
  262. package/declaracoes/escolha.js.map +1 -1
  263. package/declaracoes/escreva-mesma-linha.d.ts +1 -0
  264. package/declaracoes/escreva-mesma-linha.d.ts.map +1 -1
  265. package/declaracoes/escreva-mesma-linha.js +3 -0
  266. package/declaracoes/escreva-mesma-linha.js.map +1 -1
  267. package/declaracoes/escreva.d.ts +1 -0
  268. package/declaracoes/escreva.d.ts.map +1 -1
  269. package/declaracoes/escreva.js +3 -0
  270. package/declaracoes/escreva.js.map +1 -1
  271. package/declaracoes/expressao.d.ts +1 -0
  272. package/declaracoes/expressao.d.ts.map +1 -1
  273. package/declaracoes/expressao.js +3 -0
  274. package/declaracoes/expressao.js.map +1 -1
  275. package/declaracoes/falhar.d.ts +1 -0
  276. package/declaracoes/falhar.d.ts.map +1 -1
  277. package/declaracoes/falhar.js +3 -0
  278. package/declaracoes/falhar.js.map +1 -1
  279. package/declaracoes/fazer.d.ts +2 -1
  280. package/declaracoes/fazer.d.ts.map +1 -1
  281. package/declaracoes/fazer.js +4 -0
  282. package/declaracoes/fazer.js.map +1 -1
  283. package/declaracoes/funcao.d.ts +1 -0
  284. package/declaracoes/funcao.d.ts.map +1 -1
  285. package/declaracoes/funcao.js +4 -0
  286. package/declaracoes/funcao.js.map +1 -1
  287. package/declaracoes/importar.d.ts +1 -0
  288. package/declaracoes/importar.d.ts.map +1 -1
  289. package/declaracoes/importar.js +3 -0
  290. package/declaracoes/importar.js.map +1 -1
  291. package/declaracoes/inicio-algoritmo.d.ts +1 -0
  292. package/declaracoes/inicio-algoritmo.d.ts.map +1 -1
  293. package/declaracoes/inicio-algoritmo.js +5 -0
  294. package/declaracoes/inicio-algoritmo.js.map +1 -1
  295. package/declaracoes/para-cada.d.ts +1 -0
  296. package/declaracoes/para-cada.d.ts.map +1 -1
  297. package/declaracoes/para-cada.js +4 -0
  298. package/declaracoes/para-cada.js.map +1 -1
  299. package/declaracoes/para.d.ts +2 -1
  300. package/declaracoes/para.d.ts.map +1 -1
  301. package/declaracoes/para.js +11 -0
  302. package/declaracoes/para.js.map +1 -1
  303. package/declaracoes/propriedade-classe.d.ts +1 -0
  304. package/declaracoes/propriedade-classe.d.ts.map +1 -1
  305. package/declaracoes/propriedade-classe.js +3 -0
  306. package/declaracoes/propriedade-classe.js.map +1 -1
  307. package/declaracoes/retorna.d.ts +1 -0
  308. package/declaracoes/retorna.d.ts.map +1 -1
  309. package/declaracoes/retorna.js +3 -0
  310. package/declaracoes/retorna.js.map +1 -1
  311. package/declaracoes/se.d.ts +3 -2
  312. package/declaracoes/se.d.ts.map +1 -1
  313. package/declaracoes/se.js +4 -0
  314. package/declaracoes/se.js.map +1 -1
  315. package/declaracoes/sustar.d.ts +1 -0
  316. package/declaracoes/sustar.d.ts.map +1 -1
  317. package/declaracoes/sustar.js +3 -0
  318. package/declaracoes/sustar.js.map +1 -1
  319. package/declaracoes/tendo-como.d.ts +1 -0
  320. package/declaracoes/tendo-como.d.ts.map +1 -1
  321. package/declaracoes/tendo-como.js +4 -0
  322. package/declaracoes/tendo-como.js.map +1 -1
  323. package/declaracoes/tente.d.ts +3 -2
  324. package/declaracoes/tente.d.ts.map +1 -1
  325. package/declaracoes/tente.js +4 -0
  326. package/declaracoes/tente.js.map +1 -1
  327. package/declaracoes/var-multiplo.d.ts +1 -0
  328. package/declaracoes/var-multiplo.d.ts.map +1 -1
  329. package/declaracoes/var-multiplo.js +4 -0
  330. package/declaracoes/var-multiplo.js.map +1 -1
  331. package/declaracoes/var.d.ts +1 -0
  332. package/declaracoes/var.d.ts.map +1 -1
  333. package/declaracoes/var.js +3 -0
  334. package/declaracoes/var.js.map +1 -1
  335. package/interfaces/avaliador-sintatico-interface.d.ts +2 -0
  336. package/interfaces/avaliador-sintatico-interface.d.ts.map +1 -1
  337. package/interfaces/index.d.ts +1 -0
  338. package/interfaces/index.d.ts.map +1 -1
  339. package/interfaces/index.js +1 -0
  340. package/interfaces/index.js.map +1 -1
  341. package/interfaces/interpretador-interface.d.ts +3 -2
  342. package/interfaces/interpretador-interface.d.ts.map +1 -1
  343. package/interfaces/resultado-parcial-interpretador-interface.d.ts +8 -0
  344. package/interfaces/resultado-parcial-interpretador-interface.d.ts.map +1 -0
  345. package/interfaces/resultado-parcial-interpretador-interface.js +3 -0
  346. package/interfaces/resultado-parcial-interpretador-interface.js.map +1 -0
  347. package/interfaces/retornos/index.d.ts +1 -1
  348. package/interfaces/retornos/index.d.ts.map +1 -1
  349. package/interfaces/retornos/index.js +1 -1
  350. package/interfaces/retornos/index.js.map +1 -1
  351. package/interfaces/retornos/retorno-interpretador-interface.d.ts +7 -0
  352. package/interfaces/retornos/retorno-interpretador-interface.d.ts.map +1 -0
  353. package/interfaces/retornos/{retorno-interpretador.js → retorno-interpretador-interface.js} +1 -1
  354. package/interfaces/retornos/retorno-interpretador-interface.js.map +1 -0
  355. package/interfaces/variavel-interface.d.ts +2 -3
  356. package/interfaces/variavel-interface.d.ts.map +1 -1
  357. package/interpretador/depuracao/comum.d.ts.map +1 -1
  358. package/interpretador/depuracao/comum.js +2 -1
  359. package/interpretador/depuracao/comum.js.map +1 -1
  360. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +2 -2
  361. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts.map +1 -1
  362. package/interpretador/depuracao/interpretador-base-com-depuracao.js.map +1 -1
  363. package/interpretador/depuracao/interpretador-com-depuracao.d.ts +2 -2
  364. package/interpretador/depuracao/interpretador-com-depuracao.d.ts.map +1 -1
  365. package/interpretador/depuracao/interpretador-com-depuracao.js.map +1 -1
  366. package/interpretador/dialetos/calango/interpretador-calango.d.ts +5 -0
  367. package/interpretador/dialetos/calango/interpretador-calango.d.ts.map +1 -0
  368. package/interpretador/dialetos/calango/interpretador-calango.js +8 -0
  369. package/interpretador/dialetos/calango/interpretador-calango.js.map +1 -0
  370. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +3 -3
  371. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts.map +1 -1
  372. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +1 -0
  373. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  374. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +3 -2
  375. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts.map +1 -1
  376. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +3 -0
  377. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  378. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +5 -5
  379. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  380. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  381. package/interpretador/estruturas/classe-padrao.js +2 -2
  382. package/interpretador/estruturas/classe-padrao.js.map +1 -1
  383. package/interpretador/estruturas/delegua-funcao.js +3 -3
  384. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  385. package/interpretador/estruturas/descritor-tipo-classe.js +2 -2
  386. package/interpretador/estruturas/descritor-tipo-classe.js.map +1 -1
  387. package/interpretador/estruturas/funcao-padrao.js +1 -1
  388. package/interpretador/estruturas/funcao-padrao.js.map +1 -1
  389. package/interpretador/estruturas/metodo-primitiva.js +1 -1
  390. package/interpretador/estruturas/metodo-primitiva.js.map +1 -1
  391. package/interpretador/estruturas/modulo.js +1 -1
  392. package/interpretador/estruturas/modulo.js.map +1 -1
  393. package/interpretador/estruturas/objeto-delegua-classe.js +1 -1
  394. package/interpretador/estruturas/objeto-delegua-classe.js.map +1 -1
  395. package/interpretador/estruturas/objeto-padrao.js +1 -1
  396. package/interpretador/estruturas/objeto-padrao.js.map +1 -1
  397. package/interpretador/estruturas/referencia-montao.js +1 -1
  398. package/interpretador/estruturas/referencia-montao.js.map +1 -1
  399. package/interpretador/interpretador-base.d.ts +25 -13
  400. package/interpretador/interpretador-base.d.ts.map +1 -1
  401. package/interpretador/interpretador-base.js +125 -49
  402. package/interpretador/interpretador-base.js.map +1 -1
  403. package/interpretador/interpretador-com-depuracao.d.ts +2 -2
  404. package/interpretador/interpretador-com-depuracao.d.ts.map +1 -1
  405. package/interpretador/interpretador-com-depuracao.js +2 -1
  406. package/interpretador/interpretador-com-depuracao.js.map +1 -1
  407. package/interpretador/interpretador.d.ts +8 -6
  408. package/interpretador/interpretador.d.ts.map +1 -1
  409. package/interpretador/interpretador.js +21 -18
  410. package/interpretador/interpretador.js.map +1 -1
  411. package/interpretador/pilha-escopos-execucao.d.ts.map +1 -1
  412. package/interpretador/pilha-escopos-execucao.js +8 -3
  413. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  414. package/lexador/dialetos/index.d.ts +1 -0
  415. package/lexador/dialetos/index.d.ts.map +1 -1
  416. package/lexador/dialetos/index.js +1 -0
  417. package/lexador/dialetos/index.js.map +1 -1
  418. package/lexador/dialetos/lexador-calango.d.ts +29 -0
  419. package/lexador/dialetos/lexador-calango.d.ts.map +1 -0
  420. package/lexador/dialetos/lexador-calango.js +231 -0
  421. package/lexador/dialetos/lexador-calango.js.map +1 -0
  422. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  423. package/lexador/dialetos/lexador-pitugues.js +4 -0
  424. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  425. package/lexador/dialetos/palavras-reservadas/calango.d.ts +15 -0
  426. package/lexador/dialetos/palavras-reservadas/calango.d.ts.map +1 -0
  427. package/lexador/dialetos/palavras-reservadas/calango.js +20 -0
  428. package/lexador/dialetos/palavras-reservadas/calango.js.map +1 -0
  429. package/package.json +1 -1
  430. package/quebras/index.d.ts +2 -1
  431. package/quebras/index.d.ts.map +1 -1
  432. package/quebras/index.js +2 -1
  433. package/quebras/index.js.map +1 -1
  434. package/tipos-de-dados/dialetos/pitugues.d.ts +28 -0
  435. package/tipos-de-dados/dialetos/pitugues.d.ts.map +1 -0
  436. package/tipos-de-dados/dialetos/pitugues.js +29 -0
  437. package/tipos-de-dados/dialetos/pitugues.js.map +1 -0
  438. package/tipos-de-simbolos/calango.d.ts +42 -0
  439. package/tipos-de-simbolos/calango.d.ts.map +1 -0
  440. package/tipos-de-simbolos/calango.js +43 -0
  441. package/tipos-de-simbolos/calango.js.map +1 -0
  442. package/tipos-de-simbolos/pitugues.d.ts +1 -0
  443. package/tipos-de-simbolos/pitugues.d.ts.map +1 -1
  444. package/tipos-de-simbolos/pitugues.js +1 -0
  445. package/tipos-de-simbolos/pitugues.js.map +1 -1
  446. package/tradutores/index.d.ts +1 -0
  447. package/tradutores/index.d.ts.map +1 -1
  448. package/tradutores/index.js +1 -0
  449. package/tradutores/index.js.map +1 -1
  450. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  451. package/tradutores/tradutor-calango.d.ts +22 -0
  452. package/tradutores/tradutor-calango.d.ts.map +1 -0
  453. package/tradutores/tradutor-calango.js +61 -0
  454. package/tradutores/tradutor-calango.js.map +1 -0
  455. package/tradutores/tradutor-javascript.js +1 -1
  456. package/tradutores/tradutor-javascript.js.map +1 -1
  457. package/tradutores/tradutor-python.js +1 -1
  458. package/tradutores/tradutor-python.js.map +1 -1
  459. package/tradutores/tradutor-reverso-tenda.js +1 -1
  460. package/tradutores/tradutor-reverso-tenda.js.map +1 -1
  461. package/umd/delegua.js +1543 -626
  462. package/construtos/tuplas/tupla.d.ts +0 -9
  463. package/construtos/tuplas/tupla.d.ts.map +0 -1
  464. package/construtos/tuplas/tupla.js.map +0 -1
  465. package/interfaces/retornos/retorno-interpretador.d.ts +0 -6
  466. package/interfaces/retornos/retorno-interpretador.d.ts.map +0 -1
  467. package/interfaces/retornos/retorno-interpretador.js.map +0 -1
  468. /package/construtos/{tuplas/tupla.js → tupla.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"modulo.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/modulo.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAItB,YAAY,IAAa;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AAxBD,sCAwBC"}
1
+ {"version":3,"file":"modulo.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/modulo.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAItB,YAAY,IAAa;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AAxBD,sCAwBC"}
@@ -53,7 +53,7 @@ class ObjetoDeleguaClasse {
53
53
  * @returns {string} A representação do objeto como texto.
54
54
  */
55
55
  paraTexto() {
56
- return '<objeto ' + this.classe.simboloOriginal.lexema + '>';
56
+ return '<objeto nome=' + this.classe.simboloOriginal.lexema + ' />';
57
57
  }
58
58
  /**
59
59
  * Método utilizado pelo VSCode para representar este objeto quando impresso.
@@ -1 +1 @@
1
- {"version":3,"file":"objeto-delegua-classe.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/objeto-delegua-classe.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAIvD;;;;GAIG;AACH,MAAa,mBAAmB;IAI5B,YAAY,MAA2B;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC1B,KAAK,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;YAC3D,CAAC;QACL,CAAC;QAED,KAAK,IAAI,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAyB;QAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,IAAI,gCAAqB,CAC3B,OAAO,EACP,0BAA0B,OAAO,CAAC,MAAM,4BAA4B,CACvE,CAAC;IACN,CAAC;IAED,WAAW,CAAC,UAAkB;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,IAAI,gCAAqB,CAAC,IAAI,EAAE,WAAW,UAAU,4BAA4B,CAAC,CAAC;IAC7F,CAAC;IAED,gBAAgB,CAAC,eAAuB;QACpC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,gCAAqB,CAC3B,IAAI,EACJ,gBAAgB,eAAe,4BAA4B,CAC9D,CAAC;IACN,CAAC;IAED,OAAO,CAAC,OAAyB,EAAE,KAAU;QACzC,IACI,IAAI,CAAC,MAAM,CAAC,mCAAmC;YAC/C,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EACnD,CAAC;YACC,MAAM,IAAI,gCAAqB,CAC3B,OAAO,EACP,gBAAgB,OAAO,CAAC,MAAM,8CAA8C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CACpH,CAAC;QACN,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,GAAG,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AA/ED,kDA+EC"}
1
+ {"version":3,"file":"objeto-delegua-classe.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/objeto-delegua-classe.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAIvD;;;;GAIG;AACH,MAAa,mBAAmB;IAI5B,YAAY,MAA2B;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC1B,KAAK,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;YAC3D,CAAC;QACL,CAAC;QAED,KAAK,IAAI,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAyB;QAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,IAAI,gCAAqB,CAC3B,OAAO,EACP,0BAA0B,OAAO,CAAC,MAAM,4BAA4B,CACvE,CAAC;IACN,CAAC;IAED,WAAW,CAAC,UAAkB;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,IAAI,gCAAqB,CAAC,IAAI,EAAE,WAAW,UAAU,4BAA4B,CAAC,CAAC;IAC7F,CAAC;IAED,gBAAgB,CAAC,eAAuB;QACpC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,gCAAqB,CAC3B,IAAI,EACJ,gBAAgB,eAAe,4BAA4B,CAC9D,CAAC;IACN,CAAC;IAED,OAAO,CAAC,OAAyB,EAAE,KAAU;QACzC,IACI,IAAI,CAAC,MAAM,CAAC,mCAAmC;YAC/C,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EACnD,CAAC;YACC,MAAM,IAAI,gCAAqB,CAC3B,OAAO,EACP,gBAAgB,OAAO,CAAC,MAAM,8CAA8C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CACpH,CAAC;QACN,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AA/ED,kDA+EC"}
@@ -14,7 +14,7 @@ class ObjetoPadrao {
14
14
  * @returns {string} A representação do objeto como texto.
15
15
  */
16
16
  paraTexto() {
17
- let retornoTexto = `<objeto-padrão da classe ${this.classePadrao}>\n`;
17
+ let retornoTexto = `<objeto-padrão classe=${this.classePadrao}>\n`;
18
18
  for (const [nome, valor] of Object.entries(this)) {
19
19
  retornoTexto += ` - ${nome}: ${valor}\n`;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"objeto-padrao.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/objeto-padrao.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,YAAY;IAGrB,YAAY,YAAoB;QAC5B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,IAAI,YAAY,GAAG,4BAA4B,IAAI,CAAC,YAAY,KAAK,CAAC;QACtE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,YAAY,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;QAChD,CAAC;QACD,YAAY,IAAI,kBAAkB,CAAC;QACnC,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AA3BD,oCA2BC"}
1
+ {"version":3,"file":"objeto-padrao.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/objeto-padrao.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,YAAY;IAGrB,YAAY,YAAoB;QAC5B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,IAAI,YAAY,GAAG,yBAAyB,IAAI,CAAC,YAAY,KAAK,CAAC;QACnE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,YAAY,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;QAChD,CAAC;QACD,YAAY,IAAI,kBAAkB,CAAC;QACnC,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AA3BD,oCA2BC"}
@@ -10,7 +10,7 @@ class ReferenciaMontao {
10
10
  * @returns {string} A representação da referência como texto.
11
11
  */
12
12
  paraTexto() {
13
- return `<ReferênciaMontão endereco=${this.endereco}>`;
13
+ return `<referência-montão endereço=${this.endereco} />`;
14
14
  }
15
15
  /**
16
16
  * Método utilizado pelo VSCode para representar este objeto quando impresso.
@@ -1 +1 @@
1
- {"version":3,"file":"referencia-montao.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/referencia-montao.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAGzB,YAAY,QAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,8BAA8B,IAAI,CAAC,QAAQ,GAAG,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AAtBD,4CAsBC"}
1
+ {"version":3,"file":"referencia-montao.js","sourceRoot":"","sources":["../../../fontes/interpretador/estruturas/referencia-montao.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAGzB,YAAY,QAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,+BAA+B,IAAI,CAAC,QAAQ,KAAK,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;CACJ;AAtBD,4CAsBC"}
@@ -2,7 +2,7 @@ import { Aleatorio, Bloco, CabecalhoPrograma, Classe, Comentario, Const, ConstMu
2
2
  import { DescritorTipoClasse, DeleguaFuncao, DeleguaModulo } from './estruturas';
3
3
  import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Agrupamento, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, Atribuir, Chamada, ComentarioComoConstruto, Construto, DefinirValor, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, FuncaoConstruto, Leia, Literal, Logico, ReferenciaFuncao, Separador, Super, TipoDe, Tupla, Unario, Variavel, Vetor } from '../construtos';
4
4
  import { ErroInterpretador } from '../interfaces/erros/erro-interpretador';
5
- import { RetornoInterpretador } from '../interfaces/retornos/retorno-interpretador';
5
+ import { RetornoInterpretadorInterface } from '../interfaces/retornos/retorno-interpretador-interface';
6
6
  import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
7
7
  import { PilhaEscoposExecucaoInterface } from '../interfaces/pilha-escopos-execucao-interface';
8
8
  import { MetodoPrimitiva } from './estruturas/metodo-primitiva';
@@ -10,7 +10,7 @@ import { ArgumentoInterface } from './argumento-interface';
10
10
  import { MicroLexador } from '../lexador';
11
11
  import { MicroAvaliadorSintaticoBase } from '../avaliador-sintatico/micro-avaliador-sintatico-base';
12
12
  import { EspacoMemoria } from './espaco-memoria';
13
- import { InterpretadorInterface, SimboloInterface, VariavelInterface } from '../interfaces';
13
+ import { InterpretadorInterface, ResultadoParcialInterpretadorInterface, SimboloInterface, VariavelInterface } from '../interfaces';
14
14
  /**
15
15
  * O Interpretador visita todos os elementos complexos gerados pelo avaliador sintático (_parser_),
16
16
  * e de fato executa a lógica de programação descrita no código. Este interpretador base é usado
@@ -24,7 +24,7 @@ export declare class InterpretadorBase implements InterpretadorInterface {
24
24
  diretorioBase: string;
25
25
  erros: ErroInterpretador[];
26
26
  declaracoes: Declaracao[];
27
- resultadoInterpretador: Array<string>;
27
+ resultadoInterpretador: ResultadoParcialInterpretadorInterface[];
28
28
  linhaDeclaracaoAtual: number;
29
29
  hashArquivoDeclaracaoAtual: number;
30
30
  expandirPropriedadesDeObjetosEmEspacoMemoria: boolean;
@@ -52,7 +52,7 @@ export declare class InterpretadorBase implements InterpretadorInterface {
52
52
  * @see resolverValor
53
53
  */
54
54
  protected resolverNomeObjectoAcessado(objetoAcessado: Construto): string;
55
- protected resolverValor(objeto: any): any;
55
+ resolverValor(objeto: any): any;
56
56
  visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any> | void;
57
57
  visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any> | void;
58
58
  visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any> | void;
@@ -74,6 +74,15 @@ export declare class InterpretadorBase implements InterpretadorInterface {
74
74
  visitarExpressaoTipoDe(expressao: TipoDe): Promise<string>;
75
75
  visitarExpressaoFalhar(expressao: Falhar): Promise<any>;
76
76
  visitarExpressaoFimPara(declaracao: FimPara): Promise<any>;
77
+ /**
78
+ * Chama o método `aceitar` de um construto ou declaração, passando o
79
+ * próprio interpretador como parâmetro.
80
+ *
81
+ * Isto é usado para saber qual método do próprio interpretador chamar
82
+ * na sequência.
83
+ * @param expressao A expressão, que pode ser um construto ou declaração.
84
+ * @returns O retorno da execução do método de visita chamado.
85
+ */
77
86
  avaliar(expressao: Construto | Declaracao): Promise<any>;
78
87
  /**
79
88
  * Execução da leitura de valores da entrada configurada no
@@ -85,10 +94,13 @@ export declare class InterpretadorBase implements InterpretadorInterface {
85
94
  /**
86
95
  * Retira a interpolação de um texto.
87
96
  * @param {texto} texto O texto
88
- * @param {any[]} variaveis A lista de variaveis interpoladas
89
- * @returns O texto com o valor das variaveis.
97
+ * @param {any[]} interpolacoes A lista de interpolações a serem resolvidas.
98
+ * @returns O texto com o valor das variáveis.
90
99
  */
91
- protected retirarInterpolacao(texto: string, variaveis: any[]): string;
100
+ protected retirarInterpolacao(texto: string, interpolacoes: {
101
+ expressaoInterpolacao: string;
102
+ valor: any;
103
+ }[]): string;
92
104
  /**
93
105
  * Resolve todas as interpolações em um texto.
94
106
  * @param {texto} textoOriginal O texto original com as variáveis interpoladas.
@@ -196,7 +208,7 @@ export declare class InterpretadorBase implements InterpretadorInterface {
196
208
  /**
197
209
  * Executa expressão de definição de constante.
198
210
  * @param declaracao A declaração `Const`.
199
- * @returns Sempre retorna nulo.
211
+ * @returns Um descritor de informações importantes para o retorno externo.
200
212
  */
201
213
  visitarDeclaracaoConst(declaracao: Const): Promise<any>;
202
214
  /**
@@ -234,7 +246,7 @@ export declare class InterpretadorBase implements InterpretadorInterface {
234
246
  /**
235
247
  * Executa expressão de definição de variável.
236
248
  * @param declaracao A declaração Var
237
- * @returns Sempre retorna nulo.
249
+ * @returns Um descritor de informações importantes para o retorno externo.
238
250
  */
239
251
  visitarDeclaracaoVar(declaracao: Var): Promise<any>;
240
252
  /**
@@ -247,10 +259,10 @@ export declare class InterpretadorBase implements InterpretadorInterface {
247
259
  /**
248
260
  * Efetivamente executa uma declaração.
249
261
  * @param declaracao A declaração a ser executada.
250
- * @param mostrarResultado Se resultado deve ser mostrado ou não. Normalmente usado
251
- * pelo modo LAIR.
262
+ * @returns O resultado parcial da execução, normalmente usado por
263
+ * ferramentas externas.
252
264
  */
253
- executar(declaracao: Declaracao): Promise<any>;
265
+ executar(declaracao: Declaracao): Promise<ResultadoParcialInterpretadorInterface>;
254
266
  /**
255
267
  * Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
256
268
  * Esse método pega exceções, mas apenas as devolve.
@@ -270,6 +282,6 @@ export declare class InterpretadorBase implements InterpretadorInterface {
270
282
  * pelo modo REPL (LAIR).
271
283
  * @returns Um objeto com o resultado da interpretação.
272
284
  */
273
- interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretador>;
285
+ interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretadorInterface>;
274
286
  }
275
287
  //# sourceMappingURL=interpretador-base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpretador-base.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpretador-base.d.ts","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-base.ts"],"names":[],"mappings":"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"}
@@ -126,12 +126,13 @@ class InterpretadorBase {
126
126
  }
127
127
  async visitarDeclaracaoTendoComo(declaracao) {
128
128
  const retornoInicializacao = await this.avaliar(declaracao.inicializacaoVariavel);
129
- this.pilhaEscoposExecucao.definirConstante(declaracao.simboloVariavel.lexema, retornoInicializacao);
129
+ const retornoInicializacaoResolvido = this.resolverValor(retornoInicializacao);
130
+ this.pilhaEscoposExecucao.definirConstante(declaracao.simboloVariavel.lexema, retornoInicializacaoResolvido);
130
131
  await this.executar(declaracao.corpo);
131
132
  if (retornoInicializacao instanceof estruturas_1.ObjetoDeleguaClasse) {
132
- const metodoFinalizar = retornoInicializacao.classe.metodos['finalizar'];
133
+ const metodoFinalizar = retornoInicializacaoResolvido.classe.metodos['finalizar'];
133
134
  if (metodoFinalizar) {
134
- const chamavel = metodoFinalizar.funcaoPorMetodoDeClasse(retornoInicializacao);
135
+ const chamavel = metodoFinalizar.funcaoPorMetodoDeClasse(retornoInicializacaoResolvido);
135
136
  chamavel.chamar(this, []);
136
137
  }
137
138
  }
@@ -181,6 +182,15 @@ class InterpretadorBase {
181
182
  async visitarExpressaoFimPara(declaracao) {
182
183
  throw new Error('Método não implementado.');
183
184
  }
185
+ /**
186
+ * Chama o método `aceitar` de um construto ou declaração, passando o
187
+ * próprio interpretador como parâmetro.
188
+ *
189
+ * Isto é usado para saber qual método do próprio interpretador chamar
190
+ * na sequência.
191
+ * @param expressao A expressão, que pode ser um construto ou declaração.
192
+ * @returns O retorno da execução do método de visita chamado.
193
+ */
184
194
  async avaliar(expressao) {
185
195
  // Descomente o código abaixo quando precisar detectar expressões undefined ou nulas.
186
196
  // Por algum motivo o depurador do VSCode não funciona direito aqui
@@ -205,21 +215,25 @@ class InterpretadorBase {
205
215
  /**
206
216
  * Retira a interpolação de um texto.
207
217
  * @param {texto} texto O texto
208
- * @param {any[]} variaveis A lista de variaveis interpoladas
209
- * @returns O texto com o valor das variaveis.
218
+ * @param {any[]} interpolacoes A lista de interpolações a serem resolvidas.
219
+ * @returns O texto com o valor das variáveis.
210
220
  */
211
- retirarInterpolacao(texto, variaveis) {
221
+ retirarInterpolacao(texto, interpolacoes) {
212
222
  let textoFinal = texto;
213
- variaveis.forEach((elemento) => {
214
- var _a, _b;
215
- if (((_a = elemento === null || elemento === void 0 ? void 0 : elemento.valor) === null || _a === void 0 ? void 0 : _a.tipo) === delegua_2.default.LOGICO) {
216
- textoFinal = textoFinal.replace('${' + elemento.variavel + '}', this.paraTexto((_b = elemento === null || elemento === void 0 ? void 0 : elemento.valor) === null || _b === void 0 ? void 0 : _b.valor));
223
+ for (const elemento of interpolacoes) {
224
+ // TODO: Há alguma chance de `elemento` ser `undefined` aqui?
225
+ let valor = elemento === null || elemento === void 0 ? void 0 : elemento.valor;
226
+ if (valor.hasOwnProperty('valorRetornado')) {
227
+ valor = valor.valorRetornado;
228
+ }
229
+ if (valor.tipo === delegua_2.default.LOGICO) {
230
+ textoFinal = textoFinal.replace('${' + elemento.expressaoInterpolacao + '}', this.paraTexto(valor));
217
231
  }
218
232
  else {
219
- const valor = this.resolverValor(elemento.valor);
220
- textoFinal = textoFinal.replace('${' + elemento.variavel + '}', `${this.paraTexto(valor)}`);
233
+ valor = this.resolverValor(valor);
234
+ textoFinal = textoFinal.replace('${' + elemento.expressaoInterpolacao + '}', `${this.paraTexto(valor)}`);
221
235
  }
222
- });
236
+ }
223
237
  return textoFinal;
224
238
  }
225
239
  /**
@@ -230,11 +244,11 @@ class InterpretadorBase {
230
244
  async resolverInterpolacoes(textoOriginal, linha) {
231
245
  const variaveis = textoOriginal.match(this.regexInterpolacao);
232
246
  let resultadosAvaliacaoSintatica = variaveis.map((s) => {
233
- const nomeVariavel = s.replace(/[\$\{\}]*/gm, '');
234
- let microLexador = this.microLexador.mapear(nomeVariavel);
247
+ const expressaoInterpolacao = s.replace(/[\$\{\}]*/gm, '');
248
+ let microLexador = this.microLexador.mapear(expressaoInterpolacao);
235
249
  const resultadoMicroAvaliadorSintatico = this.microAvaliadorSintatico.analisar(microLexador, linha);
236
250
  return {
237
- nomeVariavel,
251
+ expressaoInterpolacao,
238
252
  resultadoMicroAvaliadorSintatico,
239
253
  };
240
254
  });
@@ -243,14 +257,14 @@ class InterpretadorBase {
243
257
  .flatMap((r) => r.resultadoMicroAvaliadorSintatico.declaracoes)
244
258
  .map((d) => this.avaliar(d)));
245
259
  return resolucoesPromises.map((item, indice) => ({
246
- variavel: resultadosAvaliacaoSintatica[indice].nomeVariavel,
260
+ expressaoInterpolacao: resultadosAvaliacaoSintatica[indice].expressaoInterpolacao,
247
261
  valor: item,
248
262
  }));
249
263
  }
250
264
  async visitarExpressaoLiteral(expressao) {
251
265
  if (this.regexInterpolacao.test(expressao.valor)) {
252
- const variaveis = await this.resolverInterpolacoes(expressao.valor, expressao.linha);
253
- return this.retirarInterpolacao(expressao.valor, variaveis);
266
+ const interpolacoes = await this.resolverInterpolacoes(expressao.valor, expressao.linha);
267
+ return this.retirarInterpolacao(expressao.valor, interpolacoes);
254
268
  }
255
269
  return expressao.valor;
256
270
  }
@@ -297,6 +311,8 @@ class InterpretadorBase {
297
311
  return valor;
298
312
  }
299
313
  const valorAnteriorIncremento = valor;
314
+ // TODO: Provavelmente isso está incorreto. Descobrir se operando resolve para
315
+ // `Construto` ou para `Simbolo`.
300
316
  this.pilhaEscoposExecucao.atribuirVariavel(expressao.operando.simbolo, ++valor);
301
317
  return valorAnteriorIncremento;
302
318
  case delegua_1.default.DECREMENTAR:
@@ -308,6 +324,8 @@ class InterpretadorBase {
308
324
  return valor;
309
325
  }
310
326
  const valorAnteriorDecremento = valor;
327
+ // TODO: Provavelmente isso está incorreto. Descobrir se operando resolve para
328
+ // `Construto` ou para `Simbolo`.
311
329
  this.pilhaEscoposExecucao.atribuirVariavel(expressao.operando.simbolo, --valor);
312
330
  return valorAnteriorDecremento;
313
331
  }
@@ -505,9 +523,10 @@ class InterpretadorBase {
505
523
  const nomeArgumento = variavelArgumento.hasOwnProperty('simbolo')
506
524
  ? variavelArgumento.simbolo.lexema
507
525
  : undefined;
526
+ let valor = await this.avaliar(variavelArgumento);
508
527
  argumentos.push({
509
528
  nome: nomeArgumento,
510
- valor: await this.avaliar(variavelArgumento),
529
+ valor,
511
530
  });
512
531
  }
513
532
  return argumentos;
@@ -519,11 +538,14 @@ class InterpretadorBase {
519
538
  */
520
539
  async visitarExpressaoDeChamada(expressao) {
521
540
  try {
522
- const variavelEntidadeChamada = await this.avaliar(expressao.entidadeChamada);
541
+ let variavelEntidadeChamada = await this.avaliar(expressao.entidadeChamada);
523
542
  if (variavelEntidadeChamada === null) {
524
543
  return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.parentese, 'Chamada de função ou método inexistente: ' +
525
544
  String(expressao.entidadeChamada), expressao.linha));
526
545
  }
546
+ if (variavelEntidadeChamada.hasOwnProperty('valorRetornado')) {
547
+ variavelEntidadeChamada = variavelEntidadeChamada.valorRetornado;
548
+ }
527
549
  const entidadeChamada = this.resolverValor(variavelEntidadeChamada);
528
550
  if (entidadeChamada instanceof estruturas_1.DeleguaModulo) {
529
551
  return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.parentese, 'Entidade chamada é um módulo de Delégua. Provavelmente você quer chamar um de seus componentes?', expressao.linha));
@@ -668,17 +690,17 @@ class InterpretadorBase {
668
690
  await this.avaliar(declaracaoInicializador);
669
691
  }
670
692
  let retornoExecucao;
671
- while (!(retornoExecucao instanceof quebras_1.Quebra)) {
693
+ while (!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra)) {
672
694
  if (declaracao.condicao !== null &&
673
695
  !this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
674
696
  break;
675
697
  }
676
698
  try {
677
699
  retornoExecucao = await this.executar(declaracao.corpo);
678
- if (retornoExecucao instanceof quebras_1.SustarQuebra) {
700
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.SustarQuebra) {
679
701
  return null;
680
702
  }
681
- if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
703
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.ContinuarQuebra) {
682
704
  retornoExecucao = null;
683
705
  }
684
706
  }
@@ -706,13 +728,15 @@ class InterpretadorBase {
706
728
  let valorVetorResolvido = this.resolverValor(vetorResolvido);
707
729
  // Se até aqui vetor resolvido é um dicionário, converte dicionário
708
730
  // para vetor de duplas.
731
+ // TODO: Converter elementos para `Construto` se necessário.
709
732
  if (declaracao.vetor.tipo === 'dicionário') {
710
- valorVetorResolvido = Object.entries(valorVetorResolvido).map(v => new construtos_1.Dupla(v[0], v[1]));
733
+ valorVetorResolvido = Object.entries(valorVetorResolvido)
734
+ .map(v => new construtos_1.Dupla(v[0], v[1]));
711
735
  }
712
736
  if (!Array.isArray(valorVetorResolvido)) {
713
737
  return Promise.reject("Variável ou literal provida em instrução 'para cada' não é um vetor.");
714
738
  }
715
- while (!(retornoExecucao instanceof quebras_1.Quebra) &&
739
+ while (!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra) &&
716
740
  declaracao.posicaoAtual < valorVetorResolvido.length) {
717
741
  try {
718
742
  if (declaracao.variavelIteracao instanceof construtos_1.Variavel) {
@@ -724,10 +748,10 @@ class InterpretadorBase {
724
748
  this.pilhaEscoposExecucao.definirVariavel(declaracao.variavelIteracao.segundo.valor, valorComoDupla.segundo);
725
749
  }
726
750
  retornoExecucao = await this.executar(declaracao.corpo);
727
- if (retornoExecucao instanceof quebras_1.SustarQuebra) {
751
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.SustarQuebra) {
728
752
  return null;
729
753
  }
730
- if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
754
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.ContinuarQuebra) {
731
755
  retornoExecucao = null;
732
756
  }
733
757
  declaracao.posicaoAtual++;
@@ -750,10 +774,12 @@ class InterpretadorBase {
750
774
  * @returns O resultado da avaliação do bloco cuja condição é verdadeira.
751
775
  */
752
776
  async visitarDeclaracaoSe(declaracao) {
753
- if (this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
777
+ const avaliacaoCondicaoSe = await this.avaliar(declaracao.condicao);
778
+ if (this.eVerdadeiro(avaliacaoCondicaoSe)) {
754
779
  return await this.executar(declaracao.caminhoEntao);
755
780
  }
756
781
  for (let i = 0; i < declaracao.caminhosSeSenao.length; i++) {
782
+ // TODO: Qual o tipo de `atual`?
757
783
  const atual = declaracao.caminhosSeSenao[i];
758
784
  if (this.eVerdadeiro(await this.avaliar(atual.condicao))) {
759
785
  return await this.executar(atual.caminho);
@@ -766,14 +792,14 @@ class InterpretadorBase {
766
792
  }
767
793
  async visitarDeclaracaoEnquanto(declaracao) {
768
794
  let retornoExecucao;
769
- while (!(retornoExecucao instanceof quebras_1.Quebra) &&
795
+ while (!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra) &&
770
796
  this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
771
797
  try {
772
798
  retornoExecucao = await this.executar(declaracao.corpo);
773
- if (retornoExecucao instanceof quebras_1.SustarQuebra) {
799
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.SustarQuebra) {
774
800
  return null;
775
801
  }
776
- if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
802
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.ContinuarQuebra) {
777
803
  retornoExecucao = null;
778
804
  }
779
805
  }
@@ -833,10 +859,10 @@ class InterpretadorBase {
833
859
  do {
834
860
  try {
835
861
  retornoExecucao = await this.executar(declaracao.caminhoFazer);
836
- if (retornoExecucao instanceof quebras_1.SustarQuebra) {
862
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.SustarQuebra) {
837
863
  return null;
838
864
  }
839
- if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
865
+ if (retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.ContinuarQuebra) {
840
866
  retornoExecucao = null;
841
867
  }
842
868
  }
@@ -848,7 +874,7 @@ class InterpretadorBase {
848
874
  });
849
875
  return Promise.reject(erro);
850
876
  }
851
- } while (!(retornoExecucao instanceof quebras_1.Quebra) &&
877
+ } while (!(retornoExecucao && retornoExecucao.valorRetornado instanceof quebras_1.Quebra) &&
852
878
  this.eVerdadeiro(await this.avaliar(declaracao.condicaoEnquanto)));
853
879
  }
854
880
  /**
@@ -891,7 +917,10 @@ class InterpretadorBase {
891
917
  async avaliarArgumentosEscreva(argumentos) {
892
918
  let formatoTexto = '';
893
919
  for (const argumento of argumentos) {
894
- const resultadoAvaliacao = await this.avaliar(argumento);
920
+ let resultadoAvaliacao = await this.avaliar(argumento);
921
+ if (resultadoAvaliacao && resultadoAvaliacao.hasOwnProperty('valorRetornado')) {
922
+ resultadoAvaliacao = resultadoAvaliacao.valorRetornado;
923
+ }
895
924
  let valor = this.resolverValor(resultadoAvaliacao);
896
925
  formatoTexto += `${this.paraTexto(valor)} `;
897
926
  }
@@ -907,7 +936,10 @@ class InterpretadorBase {
907
936
  try {
908
937
  const formatoTexto = await this.avaliarArgumentosEscreva(declaracao.argumentos);
909
938
  this.funcaoDeRetornoMesmaLinha(formatoTexto);
910
- return null;
939
+ return {
940
+ tipo: 'vazio',
941
+ tipoExplicito: false
942
+ };
911
943
  }
912
944
  catch (erro) {
913
945
  this.erros.push({
@@ -927,7 +959,10 @@ class InterpretadorBase {
927
959
  try {
928
960
  const formatoTexto = await this.avaliarArgumentosEscreva(declaracao.argumentos);
929
961
  this.funcaoDeRetorno(formatoTexto);
930
- return null;
962
+ return {
963
+ tipo: 'vazio',
964
+ tipoExplicito: false
965
+ };
931
966
  }
932
967
  catch (erro) {
933
968
  this.erros.push({
@@ -979,12 +1014,15 @@ class InterpretadorBase {
979
1014
  /**
980
1015
  * Executa expressão de definição de constante.
981
1016
  * @param declaracao A declaração `Const`.
982
- * @returns Sempre retorna nulo.
1017
+ * @returns Um descritor de informações importantes para o retorno externo.
983
1018
  */
984
1019
  async visitarDeclaracaoConst(declaracao) {
985
1020
  const valorFinal = await this.avaliacaoDeclaracaoVarOuConst(declaracao);
986
1021
  this.pilhaEscoposExecucao.definirConstante(declaracao.simbolo.lexema, valorFinal, declaracao.tipo);
987
- return null;
1022
+ return {
1023
+ tipo: declaracao.tipo,
1024
+ tipoExplicito: declaracao.tipoExplicito
1025
+ };
988
1026
  }
989
1027
  /**
990
1028
  * Executa expressão de definição de múltiplas constantes.
@@ -1156,7 +1194,7 @@ class InterpretadorBase {
1156
1194
  // Por enquanto, tudo bem deixar isso aqui.
1157
1195
  descritorTipoClasse.dialetoRequerDeclaracaoPropriedades = this.requerDeclaracaoPropriedades;
1158
1196
  this.pilhaEscoposExecucao.atribuirVariavel(declaracao.simbolo, descritorTipoClasse);
1159
- return null;
1197
+ return descritorTipoClasse;
1160
1198
  }
1161
1199
  /**
1162
1200
  * Executa um acesso a método, normalmente de um objeto de classe.
@@ -1249,11 +1287,21 @@ class InterpretadorBase {
1249
1287
  /**
1250
1288
  * Executa expressão de definição de variável.
1251
1289
  * @param declaracao A declaração Var
1252
- * @returns Sempre retorna nulo.
1290
+ * @returns Um descritor de informações importantes para o retorno externo.
1253
1291
  */
1254
1292
  async visitarDeclaracaoVar(declaracao) {
1255
1293
  const valorFinal = await this.avaliacaoDeclaracaoVarOuConst(declaracao);
1256
- this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, valorFinal, declaracao.tipo);
1294
+ let tipoResolvido = declaracao.tipo;
1295
+ if (tipoResolvido.startsWith('função<')) {
1296
+ tipoResolvido = tipoResolvido.replace('função<', '').replace('>', '');
1297
+ }
1298
+ this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, valorFinal, tipoResolvido);
1299
+ // TODO: É relevante registrar uma declaração de variável no
1300
+ // resultado do interpretador?
1301
+ /* return {
1302
+ tipo: declaracao.tipo,
1303
+ tipoExplicito: declaracao.tipoExplicito
1304
+ }; */
1257
1305
  return null;
1258
1306
  }
1259
1307
  /**
@@ -1278,8 +1326,7 @@ class InterpretadorBase {
1278
1326
  if (objeto.valor instanceof estruturas_1.ObjetoPadrao)
1279
1327
  return objeto.valor.paraTexto();
1280
1328
  if (objeto instanceof estruturas_1.ObjetoDeleguaClasse ||
1281
- objeto instanceof estruturas_1.DeleguaFuncao ||
1282
- typeof objeto.paraTexto === 'function')
1329
+ objeto instanceof estruturas_1.DeleguaFuncao)
1283
1330
  return objeto.paraTexto();
1284
1331
  if (objeto instanceof quebras_1.RetornoQuebra) {
1285
1332
  if (typeof objeto.valor === 'boolean')
@@ -1337,13 +1384,37 @@ class InterpretadorBase {
1337
1384
  /**
1338
1385
  * Efetivamente executa uma declaração.
1339
1386
  * @param declaracao A declaração a ser executada.
1340
- * @param mostrarResultado Se resultado deve ser mostrado ou não. Normalmente usado
1341
- * pelo modo LAIR.
1387
+ * @returns O resultado parcial da execução, normalmente usado por
1388
+ * ferramentas externas.
1342
1389
  */
1343
1390
  async executar(declaracao) {
1344
1391
  const resultado = await declaracao.aceitar(this);
1345
- /* console.log("Resultado aceitar: " + resultado, this); */
1346
- return resultado;
1392
+ // Alguns casos não possuem retorno, como declarações `se`, `enquanto`, etc.,
1393
+ // que não satisfazem suas respectivas condições.
1394
+ if (resultado === null || resultado === undefined) {
1395
+ return null;
1396
+ }
1397
+ // Se o retorno já possui um `valorRetornado`, apenas retorna o resultado.
1398
+ if (resultado.hasOwnProperty('valorRetornado')) {
1399
+ return resultado;
1400
+ }
1401
+ let tipoResultado = resultado.tipo;
1402
+ switch (resultado.constructor) {
1403
+ case estruturas_1.DescritorTipoClasse:
1404
+ tipoResultado = resultado.simboloOriginal.lexema;
1405
+ break;
1406
+ default:
1407
+ if (!tipoResultado) {
1408
+ tipoResultado = (0, inferenciador_1.inferirTipoVariavel)(resultado);
1409
+ }
1410
+ break;
1411
+ }
1412
+ return {
1413
+ hashArquivo: declaracao.hashArquivo,
1414
+ linha: declaracao.linha,
1415
+ valorRetornado: resultado,
1416
+ tipo: tipoResultado
1417
+ };
1347
1418
  }
1348
1419
  /**
1349
1420
  * Executa o último escopo empilhado no topo na pilha de escopos do interpretador.
@@ -1414,9 +1485,14 @@ class InterpretadorBase {
1414
1485
  const inicioInterpretacao = (0, browser_process_hrtime_1.default)();
1415
1486
  try {
1416
1487
  const retornoOuErro = await this.executarUltimoEscopo(manterAmbiente);
1488
+ // TODO: Esta lógica já ocorre em `executarUltimoEscopo`.
1489
+ // Estudar remoção.
1417
1490
  if (retornoOuErro instanceof excecoes_1.ErroEmTempoDeExecucao) {
1418
1491
  this.erros.push(retornoOuErro);
1419
1492
  }
1493
+ if (retornoOuErro !== undefined) {
1494
+ this.resultadoInterpretador.push(retornoOuErro);
1495
+ }
1420
1496
  }
1421
1497
  catch (erro) {
1422
1498
  // TODO: Estudar remoção do `catch`.