@designliquido/delegua 0.15.1 → 0.15.3

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 (344) hide show
  1. package/README.md +85 -85
  2. package/bin/delegua +2 -2
  3. package/bin/package.json +88 -88
  4. package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +67 -67
  5. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +215 -215
  6. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +92 -92
  7. package/fontes/avaliador-sintatico/avaliador-sintatico.js +857 -857
  8. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.d.ts +27 -27
  9. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +319 -294
  10. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +69 -69
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +640 -640
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.d.ts +84 -84
  14. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +714 -714
  15. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +20 -20
  16. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +149 -149
  17. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.d.ts +49 -49
  18. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js +419 -419
  19. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.d.ts +73 -73
  20. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +534 -534
  21. package/fontes/avaliador-sintatico/dialetos/index.d.ts +5 -5
  22. package/fontes/avaliador-sintatico/dialetos/index.js +21 -21
  23. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -5
  24. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js +11 -11
  25. package/fontes/avaliador-sintatico/index.d.ts +2 -2
  26. package/fontes/avaliador-sintatico/index.js +18 -18
  27. package/fontes/avaliador-sintatico/retornos/index.d.ts +3 -3
  28. package/fontes/avaliador-sintatico/retornos/index.js +19 -19
  29. package/fontes/avaliador-sintatico/retornos/retorno-declaracao.d.ts +3 -3
  30. package/fontes/avaliador-sintatico/retornos/retorno-declaracao.js +2 -2
  31. package/fontes/avaliador-sintatico/retornos/retorno-primario.d.ts +3 -3
  32. package/fontes/avaliador-sintatico/retornos/retorno-primario.js +2 -2
  33. package/fontes/avaliador-sintatico/retornos/retorno-resolver-declaracao.d.ts +2 -2
  34. package/fontes/avaliador-sintatico/retornos/retorno-resolver-declaracao.js +2 -2
  35. package/fontes/bibliotecas/biblioteca-global.d.ts +3 -3
  36. package/fontes/bibliotecas/biblioteca-global.js +315 -315
  37. package/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts +1 -1
  38. package/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.js +230 -230
  39. package/fontes/bibliotecas/dialetos/egua-classico/index.d.ts +2 -2
  40. package/fontes/bibliotecas/dialetos/egua-classico/index.js +32 -32
  41. package/fontes/bibliotecas/dialetos/egua-classico/matematica.d.ts +1 -1
  42. package/fontes/bibliotecas/dialetos/egua-classico/matematica.js +478 -478
  43. package/fontes/bibliotecas/dialetos/egua-classico/tempo.d.ts +1 -1
  44. package/fontes/bibliotecas/dialetos/egua-classico/tempo.js +39 -39
  45. package/fontes/bibliotecas/dialetos/egua-classico/textos.d.ts +8 -8
  46. package/fontes/bibliotecas/dialetos/egua-classico/textos.js +201 -201
  47. package/fontes/bibliotecas/dialetos/visualg/caracteres.d.ts +3 -0
  48. package/fontes/bibliotecas/dialetos/visualg/caracteres.js +35 -0
  49. package/fontes/bibliotecas/dialetos/visualg/caracteres.js.map +1 -0
  50. package/fontes/bibliotecas/dialetos/visualg/index.d.ts +2 -0
  51. package/fontes/bibliotecas/dialetos/visualg/index.js +18 -0
  52. package/fontes/bibliotecas/dialetos/visualg/index.js.map +1 -1
  53. package/fontes/bibliotecas/dialetos/visualg/numerica.d.ts +3 -0
  54. package/fontes/bibliotecas/dialetos/visualg/numerica.js +65 -0
  55. package/fontes/bibliotecas/dialetos/visualg/numerica.js.map +1 -0
  56. package/fontes/bibliotecas/primitivas-texto.d.ts +11 -11
  57. package/fontes/bibliotecas/primitivas-texto.js +12 -12
  58. package/fontes/bibliotecas/primitivas-vetor.d.ts +15 -15
  59. package/fontes/bibliotecas/primitivas-vetor.js +33 -33
  60. package/fontes/construtos/acesso-indice-variavel.d.ts +15 -15
  61. package/fontes/construtos/acesso-indice-variavel.js +20 -20
  62. package/fontes/construtos/acesso-metodo.d.ts +14 -14
  63. package/fontes/construtos/acesso-metodo.js +19 -19
  64. package/fontes/construtos/agrupamento.d.ts +14 -14
  65. package/fontes/construtos/agrupamento.js +19 -19
  66. package/fontes/construtos/atribuicao-sobrescrita.d.ts +11 -11
  67. package/fontes/construtos/atribuicao-sobrescrita.js +16 -16
  68. package/fontes/construtos/atribuir.d.ts +10 -10
  69. package/fontes/construtos/atribuir.js +15 -15
  70. package/fontes/construtos/binario.d.ts +22 -22
  71. package/fontes/construtos/binario.js +27 -27
  72. package/fontes/construtos/chamada.d.ts +13 -13
  73. package/fontes/construtos/chamada.js +36 -36
  74. package/fontes/construtos/construto.d.ts +7 -7
  75. package/fontes/construtos/construto.js +2 -2
  76. package/fontes/construtos/definir-valor.d.ts +11 -11
  77. package/fontes/construtos/definir-valor.js +16 -16
  78. package/fontes/construtos/dicionario.d.ts +10 -10
  79. package/fontes/construtos/dicionario.js +15 -15
  80. package/fontes/construtos/formatacao-escrita.d.ts +16 -16
  81. package/fontes/construtos/formatacao-escrita.js +21 -21
  82. package/fontes/construtos/funcao.d.ts +10 -10
  83. package/fontes/construtos/funcao.js +15 -15
  84. package/fontes/construtos/index.d.ts +19 -19
  85. package/fontes/construtos/index.js +35 -35
  86. package/fontes/construtos/isto.d.ts +9 -9
  87. package/fontes/construtos/isto.js +14 -14
  88. package/fontes/construtos/literal.d.ts +10 -10
  89. package/fontes/construtos/literal.js +14 -14
  90. package/fontes/construtos/logico.d.ts +11 -11
  91. package/fontes/construtos/logico.js +16 -16
  92. package/fontes/construtos/super.d.ts +10 -10
  93. package/fontes/construtos/super.js +15 -15
  94. package/fontes/construtos/unario.d.ts +11 -11
  95. package/fontes/construtos/unario.js +16 -16
  96. package/fontes/construtos/variavel.d.ts +9 -9
  97. package/fontes/construtos/variavel.js +14 -14
  98. package/fontes/construtos/vetor.d.ts +9 -9
  99. package/fontes/construtos/vetor.js +14 -14
  100. package/fontes/declaracoes/bloco.d.ts +7 -7
  101. package/fontes/declaracoes/bloco.js +14 -14
  102. package/fontes/declaracoes/classe.d.ts +9 -9
  103. package/fontes/declaracoes/classe.js +16 -16
  104. package/fontes/declaracoes/continua.d.ts +6 -6
  105. package/fontes/declaracoes/continua.js +13 -13
  106. package/fontes/declaracoes/declaracao.d.ts +8 -8
  107. package/fontes/declaracoes/declaracao.js +17 -17
  108. package/fontes/declaracoes/enquanto.d.ts +9 -9
  109. package/fontes/declaracoes/enquanto.js +15 -15
  110. package/fontes/declaracoes/escolha.d.ts +14 -14
  111. package/fontes/declaracoes/escolha.js +19 -19
  112. package/fontes/declaracoes/escreva-mesma-linha.d.ts +8 -8
  113. package/fontes/declaracoes/escreva-mesma-linha.js +14 -14
  114. package/fontes/declaracoes/escreva.d.ts +8 -8
  115. package/fontes/declaracoes/escreva.js +14 -14
  116. package/fontes/declaracoes/expressao.d.ts +8 -8
  117. package/fontes/declaracoes/expressao.js +14 -14
  118. package/fontes/declaracoes/fazer.d.ts +8 -8
  119. package/fontes/declaracoes/fazer.js +15 -15
  120. package/fontes/declaracoes/funcao.d.ts +9 -9
  121. package/fontes/declaracoes/funcao.js +15 -15
  122. package/fontes/declaracoes/importar.d.ts +9 -9
  123. package/fontes/declaracoes/importar.js +15 -15
  124. package/fontes/declaracoes/index.d.ts +19 -19
  125. package/fontes/declaracoes/index.js +35 -35
  126. package/fontes/declaracoes/leia.d.ts +12 -12
  127. package/fontes/declaracoes/leia.js +18 -18
  128. package/fontes/declaracoes/para.d.ts +10 -10
  129. package/fontes/declaracoes/para.js +17 -17
  130. package/fontes/declaracoes/retorna.d.ts +8 -8
  131. package/fontes/declaracoes/retorna.js +15 -15
  132. package/fontes/declaracoes/se.d.ts +11 -11
  133. package/fontes/declaracoes/se.js +17 -17
  134. package/fontes/declaracoes/sustar.d.ts +6 -6
  135. package/fontes/declaracoes/sustar.js +13 -13
  136. package/fontes/declaracoes/tente.d.ts +14 -14
  137. package/fontes/declaracoes/tente.js +20 -20
  138. package/fontes/declaracoes/var.d.ts +9 -9
  139. package/fontes/declaracoes/var.js +15 -15
  140. package/fontes/depuracao/cyrb53.d.ts +9 -9
  141. package/fontes/depuracao/cyrb53.js +22 -22
  142. package/fontes/depuracao/index.d.ts +2 -2
  143. package/fontes/depuracao/index.js +23 -23
  144. package/fontes/depuracao/ponto-parada.d.ts +4 -4
  145. package/fontes/depuracao/ponto-parada.js +2 -2
  146. package/fontes/espaco-variaveis.d.ts +19 -19
  147. package/fontes/espaco-variaveis.js +19 -19
  148. package/fontes/estruturas/chamavel.d.ts +5 -5
  149. package/fontes/estruturas/chamavel.js +12 -12
  150. package/fontes/estruturas/classe-padrao.d.ts +17 -17
  151. package/fontes/estruturas/classe-padrao.js +28 -28
  152. package/fontes/estruturas/delegua-classe.d.ts +16 -16
  153. package/fontes/estruturas/delegua-classe.js +38 -38
  154. package/fontes/estruturas/delegua-funcao.d.ts +18 -18
  155. package/fontes/estruturas/delegua-funcao.js +60 -60
  156. package/fontes/estruturas/funcao-padrao.d.ts +12 -12
  157. package/fontes/estruturas/funcao-padrao.js +22 -22
  158. package/fontes/estruturas/index.d.ts +9 -9
  159. package/fontes/estruturas/index.js +25 -25
  160. package/fontes/estruturas/metodo-primitiva.d.ts +17 -17
  161. package/fontes/estruturas/metodo-primitiva.js +26 -26
  162. package/fontes/estruturas/modulo.d.ts +9 -9
  163. package/fontes/estruturas/modulo.js +13 -13
  164. package/fontes/estruturas/objeto-delegua-classe.d.ts +10 -10
  165. package/fontes/estruturas/objeto-delegua-classe.js +26 -26
  166. package/fontes/estruturas/objeto-padrao.d.ts +9 -9
  167. package/fontes/estruturas/objeto-padrao.js +21 -21
  168. package/fontes/excecoes/erro-em-tempo-de-execucao.d.ts +7 -7
  169. package/fontes/excecoes/erro-em-tempo-de-execucao.js +13 -13
  170. package/fontes/excecoes/index.d.ts +1 -1
  171. package/fontes/excecoes/index.js +17 -17
  172. package/fontes/formatadores/delegua.d.ts +18 -18
  173. package/fontes/formatadores/delegua.js +82 -82
  174. package/fontes/formatadores/index.d.ts +1 -1
  175. package/fontes/formatadores/index.js +17 -17
  176. package/fontes/interfaces/avaliador-sintatico-interface.d.ts +57 -57
  177. package/fontes/interfaces/avaliador-sintatico-interface.js +2 -2
  178. package/fontes/interfaces/construtos/index.d.ts +4 -4
  179. package/fontes/interfaces/construtos/index.js +2 -2
  180. package/fontes/interfaces/escopo-execucao.d.ts +11 -11
  181. package/fontes/interfaces/escopo-execucao.js +2 -2
  182. package/fontes/interfaces/index.d.ts +11 -11
  183. package/fontes/interfaces/index.js +27 -27
  184. package/fontes/interfaces/interpretador-com-depuracao-interface.d.ts +17 -17
  185. package/fontes/interfaces/interpretador-com-depuracao-interface.js +2 -2
  186. package/fontes/interfaces/interpretador-interface.d.ts +55 -55
  187. package/fontes/interfaces/interpretador-interface.js +2 -2
  188. package/fontes/interfaces/lexador-interface.d.ts +23 -23
  189. package/fontes/interfaces/lexador-interface.js +2 -2
  190. package/fontes/interfaces/parametro-interface.d.ts +6 -6
  191. package/fontes/interfaces/parametro-interface.js +2 -2
  192. package/fontes/interfaces/pilha-escopos-execucao-interface.d.ts +25 -25
  193. package/fontes/interfaces/pilha-escopos-execucao-interface.js +2 -2
  194. package/fontes/interfaces/pilha-interface.d.ts +7 -7
  195. package/fontes/interfaces/pilha-interface.js +2 -2
  196. package/fontes/interfaces/resolvedor-interface.d.ts +41 -41
  197. package/fontes/interfaces/resolvedor-interface.js +2 -2
  198. package/fontes/interfaces/retornos/index.d.ts +4 -4
  199. package/fontes/interfaces/retornos/index.js +20 -20
  200. package/fontes/interfaces/retornos/retorno-avaliador-sintatico.d.ts +6 -6
  201. package/fontes/interfaces/retornos/retorno-avaliador-sintatico.js +2 -2
  202. package/fontes/interfaces/retornos/retorno-execucao-interface.d.ts +5 -5
  203. package/fontes/interfaces/retornos/retorno-execucao-interface.js +2 -2
  204. package/fontes/interfaces/retornos/retorno-interpretador.d.ts +5 -5
  205. package/fontes/interfaces/retornos/retorno-interpretador.js +2 -2
  206. package/fontes/interfaces/retornos/retorno-lexador.d.ts +10 -10
  207. package/fontes/interfaces/retornos/retorno-lexador.js +2 -2
  208. package/fontes/interfaces/simbolo-interface.d.ts +7 -7
  209. package/fontes/interfaces/simbolo-interface.js +2 -2
  210. package/fontes/interfaces/tradutor-interface.d.ts +4 -4
  211. package/fontes/interfaces/tradutor-interface.js +2 -2
  212. package/fontes/interfaces/variavel-interface.d.ts +4 -4
  213. package/fontes/interfaces/variavel-interface.js +2 -2
  214. package/fontes/interpretador/dialetos/egua-classico/index.d.ts +1 -1
  215. package/fontes/interpretador/dialetos/egua-classico/index.js +17 -17
  216. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +99 -99
  217. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +743 -743
  218. package/fontes/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.d.ts +5 -5
  219. package/fontes/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.js +11 -11
  220. package/fontes/interpretador/dialetos/egua-classico/resolvedor/index.d.ts +3 -3
  221. package/fontes/interpretador/dialetos/egua-classico/resolvedor/index.js +19 -19
  222. package/fontes/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.d.ts +9 -9
  223. package/fontes/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.js +25 -25
  224. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +87 -87
  225. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +387 -387
  226. package/fontes/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.d.ts +6 -6
  227. package/fontes/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.js +2 -2
  228. package/fontes/interpretador/dialetos/index.d.ts +4 -4
  229. package/fontes/interpretador/dialetos/index.js +20 -20
  230. package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.d.ts +12 -12
  231. package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.js +26 -26
  232. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.d.ts +40 -40
  233. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js +96 -96
  234. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js.map +1 -1
  235. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.d.ts +53 -46
  236. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js +194 -102
  237. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
  238. package/fontes/interpretador/erro-interpretador.d.ts +8 -8
  239. package/fontes/interpretador/erro-interpretador.js +2 -2
  240. package/fontes/interpretador/index.d.ts +4 -4
  241. package/fontes/interpretador/index.js +20 -20
  242. package/fontes/interpretador/inferenciador.d.ts +1 -1
  243. package/fontes/interpretador/inferenciador.js +31 -31
  244. package/fontes/interpretador/interpretador-base.d.ts +186 -188
  245. package/fontes/interpretador/interpretador-base.js +1001 -1000
  246. package/fontes/interpretador/interpretador-base.js.map +1 -1
  247. package/fontes/interpretador/interpretador-com-depuracao.d.ts +199 -199
  248. package/fontes/interpretador/interpretador-com-depuracao.js +516 -516
  249. package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
  250. package/fontes/interpretador/pilha-escopos-execucao.d.ts +38 -38
  251. package/fontes/interpretador/pilha-escopos-execucao.js +158 -158
  252. package/fontes/lexador/dialetos/index.d.ts +6 -6
  253. package/fontes/lexador/dialetos/index.js +22 -22
  254. package/fontes/lexador/dialetos/lexador-birl.d.ts +12 -12
  255. package/fontes/lexador/dialetos/lexador-birl.js +211 -211
  256. package/fontes/lexador/dialetos/lexador-egua-classico.d.ts +36 -36
  257. package/fontes/lexador/dialetos/lexador-egua-classico.js +286 -286
  258. package/fontes/lexador/dialetos/lexador-eguap.d.ts +51 -51
  259. package/fontes/lexador/dialetos/lexador-eguap.js +398 -398
  260. package/fontes/lexador/dialetos/lexador-guarani.d.ts +9 -9
  261. package/fontes/lexador/dialetos/lexador-guarani.js +113 -113
  262. package/fontes/lexador/dialetos/lexador-portugol-ipt.d.ts +33 -33
  263. package/fontes/lexador/dialetos/lexador-portugol-ipt.js +195 -195
  264. package/fontes/lexador/dialetos/lexador-portugol-studio.d.ts +21 -21
  265. package/fontes/lexador/dialetos/lexador-portugol-studio.js +280 -280
  266. package/fontes/lexador/dialetos/lexador-visualg.d.ts +18 -18
  267. package/fontes/lexador/dialetos/lexador-visualg.js +218 -218
  268. package/fontes/lexador/dialetos/palavras-reservadas/birl.d.ts +46 -46
  269. package/fontes/lexador/dialetos/palavras-reservadas/birl.js +63 -63
  270. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +36 -36
  271. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js +41 -41
  272. package/fontes/lexador/dialetos/palavras-reservadas/guarani.d.ts +4 -4
  273. package/fontes/lexador/dialetos/palavras-reservadas/guarani.js +9 -9
  274. package/fontes/lexador/dialetos/palavras-reservadas/index.d.ts +3 -3
  275. package/fontes/lexador/dialetos/palavras-reservadas/index.js +19 -19
  276. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +6 -6
  277. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.js +11 -11
  278. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.d.ts +23 -23
  279. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js +28 -28
  280. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +2 -2
  281. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js +3 -3
  282. package/fontes/lexador/dialetos/palavras-reservadas/visualg.d.ts +60 -60
  283. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +65 -65
  284. package/fontes/lexador/dialetos/pragma.d.ts +8 -8
  285. package/fontes/lexador/dialetos/pragma.js +2 -2
  286. package/fontes/lexador/erro-lexador.d.ts +5 -5
  287. package/fontes/lexador/erro-lexador.js +2 -2
  288. package/fontes/lexador/index.d.ts +2 -2
  289. package/fontes/lexador/index.js +18 -18
  290. package/fontes/lexador/lexador-base-linha-unica.d.ts +28 -28
  291. package/fontes/lexador/lexador-base-linha-unica.js +82 -82
  292. package/fontes/lexador/lexador-base.d.ts +41 -41
  293. package/fontes/lexador/lexador-base.js +112 -112
  294. package/fontes/lexador/lexador.d.ts +43 -43
  295. package/fontes/lexador/lexador.js +412 -412
  296. package/fontes/lexador/palavras-reservadas.d.ts +36 -36
  297. package/fontes/lexador/palavras-reservadas.js +41 -41
  298. package/fontes/lexador/simbolo.d.ts +10 -10
  299. package/fontes/lexador/simbolo.js +16 -16
  300. package/fontes/quebras/index.d.ts +10 -10
  301. package/fontes/quebras/index.js +19 -19
  302. package/fontes/tipos-de-simbolos/birl.d.ts +71 -71
  303. package/fontes/tipos-de-simbolos/birl.js +78 -78
  304. package/fontes/tipos-de-simbolos/comum.d.ts +22 -22
  305. package/fontes/tipos-de-simbolos/comum.js +23 -23
  306. package/fontes/tipos-de-simbolos/delegua.d.ts +80 -80
  307. package/fontes/tipos-de-simbolos/delegua.js +81 -81
  308. package/fontes/tipos-de-simbolos/egua-classico.d.ts +77 -77
  309. package/fontes/tipos-de-simbolos/egua-classico.js +78 -78
  310. package/fontes/tipos-de-simbolos/eguap.d.ts +73 -73
  311. package/fontes/tipos-de-simbolos/eguap.js +74 -74
  312. package/fontes/tipos-de-simbolos/guarani.d.ts +14 -14
  313. package/fontes/tipos-de-simbolos/guarani.js +15 -15
  314. package/fontes/tipos-de-simbolos/portugol-ipt.d.ts +28 -28
  315. package/fontes/tipos-de-simbolos/portugol-ipt.js +29 -29
  316. package/fontes/tipos-de-simbolos/portugol-studio.d.ts +53 -53
  317. package/fontes/tipos-de-simbolos/portugol-studio.js +54 -54
  318. package/fontes/tipos-de-simbolos/rantiaquin.d.ts +2 -2
  319. package/fontes/tipos-de-simbolos/rantiaquin.js +3 -3
  320. package/fontes/tipos-de-simbolos/visualg.d.ts +68 -68
  321. package/fontes/tipos-de-simbolos/visualg.js +69 -69
  322. package/fontes/tradutores/dicionarios/dicionario-delegua-javascript.d.ts +2 -2
  323. package/fontes/tradutores/dicionarios/dicionario-delegua-javascript.js +10 -10
  324. package/fontes/tradutores/dicionarios/index.d.ts +1 -1
  325. package/fontes/tradutores/dicionarios/index.js +17 -17
  326. package/fontes/tradutores/index.d.ts +2 -2
  327. package/fontes/tradutores/index.js +18 -18
  328. package/fontes/tradutores/python/python3-lexer.d.ts +152 -152
  329. package/fontes/tradutores/python/python3-lexer.js +1226 -1226
  330. package/fontes/tradutores/python/python3-listener.d.ts +953 -953
  331. package/fontes/tradutores/python/python3-listener.js +2 -2
  332. package/fontes/tradutores/python/python3-parser.d.ts +1330 -1330
  333. package/fontes/tradutores/python/python3-parser.js +11156 -11156
  334. package/fontes/tradutores/python/python3-visitor.d.ts +612 -612
  335. package/fontes/tradutores/python/python3-visitor.js +2 -2
  336. package/fontes/tradutores/tradutor-javascript.d.ts +83 -83
  337. package/fontes/tradutores/tradutor-javascript.js +470 -470
  338. package/fontes/tradutores/tradutor-python.d.ts +1 -1
  339. package/fontes/tradutores/tradutor-python.js +34 -34
  340. package/fontes/tradutores/tradutor-reverso-javascript.d.ts +47 -47
  341. package/fontes/tradutores/tradutor-reverso-javascript.js +342 -342
  342. package/index.d.ts +5 -5
  343. package/index.js +23 -23
  344. package/package.json +88 -88
@@ -1,343 +1,343 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TradutorReversoJavaScript = void 0;
4
- const esprima_1 = require("esprima");
5
- /**
6
- * Esse tradutor traduz de JavaScript para Delégua.
7
- */
8
- class TradutorReversoJavaScript {
9
- constructor() {
10
- this.indentacao = 0;
11
- this.dicionarioConstrutos = {
12
- AssignmentExpression: this.traduzirConstrutoAtribuir.bind(this),
13
- ArrayExpression: this.traduzirConstrutoVetor.bind(this),
14
- ArrowFunctionExpression: this.traduzirDeclaracaoFuncao.bind(this),
15
- // Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
16
- BinaryExpression: this.traduzirConstrutoBinario.bind(this),
17
- CallExpression: this.traduzirConstrutoChamada.bind(this),
18
- // DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
19
- // Isto: this.traduzirConstrutoIsto.bind(this),
20
- Identifier: this.traduzirIdentificador.bind(this),
21
- Literal: this.traduzirConstrutoLiteral.bind(this),
22
- LogicalExpression: this.traduzirConstrutoLogico.bind(this),
23
- MemberExpression: this.traduzirExpressao.bind(this),
24
- NewExpression: this.traduzirNovo.bind(this),
25
- ThisExpression: (expressao) => 'isto.',
26
- UpdateExpression: this.traduzirAtualizacaoVariavel.bind(this),
27
- // Variavel: this.traduzirConstrutoVariavel.bind(this),
28
- };
29
- // Qualquer coisa pro ESLint ficar feliz.
30
- }
31
- traduzirSimboloOperador(operador) {
32
- switch (operador) {
33
- case '===':
34
- return '==';
35
- case '&&':
36
- return 'e';
37
- case '||':
38
- return 'ou';
39
- default:
40
- return operador;
41
- }
42
- }
43
- traduzirConstrutoVetor(vetor) {
44
- if (!vetor.elements.length) {
45
- return '[]';
46
- }
47
- let resultado = '[';
48
- for (let elemento of vetor.elements) {
49
- resultado += this.dicionarioConstrutos[elemento.constructor.name](elemento) + ', ';
50
- }
51
- if (vetor.elements.length > 0) {
52
- resultado = resultado.slice(0, -2);
53
- }
54
- resultado += ']';
55
- return resultado;
56
- }
57
- traduzirIdentificador(identificador) {
58
- return identificador.name;
59
- }
60
- traduzirAtualizacaoVariavel(atualizarVariavel) {
61
- let resultado = '';
62
- resultado += this.dicionarioConstrutos[atualizarVariavel.argument.constructor.name](atualizarVariavel.argument);
63
- resultado += this.traduzirSimboloOperador(atualizarVariavel.operator);
64
- return resultado;
65
- }
66
- traduzirNovo(novo) {
67
- let identificador = novo.callee;
68
- let resultado = `${identificador.name}(`;
69
- for (let argumento of novo.arguments) {
70
- resultado += this.dicionarioConstrutos[argumento.type](argumento) + ', ';
71
- }
72
- if (novo.arguments.length > 0) {
73
- resultado = resultado.slice(0, -2);
74
- }
75
- resultado += ')';
76
- return resultado;
77
- }
78
- traduzirExpressao(expressao) {
79
- let objeto = this.dicionarioConstrutos[expressao.object.type](expressao.object);
80
- let propriedade = this.dicionarioConstrutos[expressao.property.type](expressao.property);
81
- if (objeto === 'console' && propriedade === 'log') {
82
- return 'escreva';
83
- }
84
- return `${objeto}${propriedade}`;
85
- }
86
- traduzirConstrutoLogico(logico) {
87
- return this.dicionarioConstrutos[logico.constructor.name](logico);
88
- }
89
- traduzirConstrutoChamada(chamada) {
90
- let resultado = '';
91
- resultado += this.dicionarioConstrutos[chamada.callee.type](chamada.callee) + '(';
92
- for (let parametro of chamada.arguments) {
93
- resultado += this.dicionarioConstrutos[parametro.type](parametro) + ', ';
94
- }
95
- if (chamada.arguments.length > 0) {
96
- resultado = resultado.slice(0, -2);
97
- }
98
- resultado += ')';
99
- return resultado;
100
- }
101
- traduzirConstrutoAtribuir(atribuir) {
102
- let resultado = '';
103
- const direita = this.dicionarioConstrutos[atribuir.right.type](atribuir.right);
104
- const esquerda = this.dicionarioConstrutos[atribuir.left.type](atribuir.left);
105
- resultado += `${esquerda} ${this.traduzirSimboloOperador(atribuir.operator)} ${direita}`;
106
- return resultado;
107
- }
108
- traduzirExpressaoDeclaracao(declaracao) {
109
- return this.dicionarioConstrutos[declaracao.expression.type](declaracao.expression);
110
- }
111
- traduzirConstrutoLiteral(literal) {
112
- if (literal.raw === 'true')
113
- return 'verdadeiro';
114
- else if (literal.raw === 'false')
115
- return 'falso';
116
- return `${literal.raw}`;
117
- }
118
- traduzirConstrutoBinario(binario) {
119
- let resultado = '';
120
- const direita = this.dicionarioConstrutos[binario.right.type](binario.right);
121
- const esquerda = this.dicionarioConstrutos[binario.left.type](binario.left);
122
- resultado += `${esquerda} ${this.traduzirSimboloOperador(binario.operator)} ${direita}`;
123
- return resultado;
124
- }
125
- traduzirDeclaracaoVariavel(declaracao) {
126
- let resultado = '';
127
- let informacoesDaVariavel = declaracao.declarations[0];
128
- const identificador = informacoesDaVariavel.id;
129
- if (identificador) {
130
- resultado += `var ${identificador.name} = ${this.dicionarioConstrutos[informacoesDaVariavel.init.type](informacoesDaVariavel.init)}`;
131
- }
132
- return resultado;
133
- }
134
- logicaComumBlocoEscopo(declaracoes) {
135
- let resultado = '{\n';
136
- this.indentacao += 4;
137
- const corpo = declaracoes.body.body || declaracoes.body;
138
- for (const declaracaoOuConstruto of corpo) {
139
- resultado += ' '.repeat(this.indentacao);
140
- const nomeConstrutor = declaracaoOuConstruto.constructor.name;
141
- if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
142
- resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
143
- }
144
- else {
145
- resultado += this.traduzirDeclaracao(declaracaoOuConstruto);
146
- }
147
- resultado += '\n';
148
- }
149
- this.indentacao -= 4;
150
- resultado += ' '.repeat(this.indentacao) + '}\n';
151
- return resultado;
152
- }
153
- traduzirDeclaracaoPara(declaracao) {
154
- let resultado = '';
155
- resultado += 'para (';
156
- resultado += this.traduzirDeclaracao(declaracao.init) + '; ';
157
- resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test) + '; ';
158
- resultado += this.dicionarioConstrutos[declaracao.update.type](declaracao.update) + ') ';
159
- resultado += this.logicaComumBlocoEscopo(declaracao);
160
- return resultado;
161
- }
162
- traduzirDeclaracaoFuncao(declaracao) {
163
- let resultado = '';
164
- const eFuncaoSeta = !declaracao.id;
165
- resultado += eFuncaoSeta ? '(' : `funcao ${declaracao.id.name}(`;
166
- for (let parametro of declaracao.params) {
167
- resultado += parametro.name + ', ';
168
- }
169
- if (declaracao.params.length > 0) {
170
- resultado = resultado.slice(0, -2);
171
- }
172
- resultado += eFuncaoSeta ? ') => ' : ') ';
173
- resultado += this.logicaComumBlocoEscopo(declaracao);
174
- return resultado;
175
- }
176
- //TODO: Refatorar esse método. @Samuel
177
- traduzirDeclaracaoClasse(declaracao) {
178
- let resultado = `classe ${declaracao.id.name} `;
179
- if (declaracao.superClass) {
180
- let identificador = declaracao.superClass;
181
- resultado += `herda ${identificador.name} `;
182
- }
183
- resultado += '{\n';
184
- this.indentacao += 4;
185
- resultado += ' '.repeat(this.indentacao);
186
- for (let corpo of declaracao.body.body) {
187
- if (corpo.type === 'MethodDefinition') {
188
- let _corpo = corpo;
189
- if (_corpo.kind === 'constructor') {
190
- resultado += 'construtor(';
191
- for (let valor of _corpo.value.params) {
192
- if (valor.type === 'Identifier') {
193
- resultado += `${valor.name}, `;
194
- }
195
- }
196
- if (_corpo.value.params.length > 0) {
197
- resultado = resultado.slice(0, -2);
198
- }
199
- resultado += ')';
200
- resultado += this.logicaComumBlocoEscopo(_corpo.value);
201
- }
202
- else if (_corpo.kind === 'method') {
203
- resultado += ' '.repeat(this.indentacao);
204
- let identificador = _corpo.key;
205
- resultado += identificador.name + '(';
206
- for (let valor of _corpo.value.params) {
207
- if (valor.type === 'Identifier') {
208
- resultado += `${valor.name}, `;
209
- }
210
- }
211
- if (_corpo.value.params.length > 0) {
212
- resultado = resultado.slice(0, -2);
213
- }
214
- resultado += ')';
215
- resultado += this.logicaComumBlocoEscopo(_corpo.value);
216
- }
217
- }
218
- else if (corpo.constructor.name === 'PropertyDefinition') {
219
- }
220
- else if (corpo.constructor.name === 'StaticBlock') {
221
- }
222
- }
223
- this.indentacao -= 4;
224
- resultado += ' '.repeat(this.indentacao) + '}\n';
225
- return resultado;
226
- }
227
- traduzirDeclaracaoRetorna(declaracao) {
228
- return `retorna ${this.dicionarioConstrutos[declaracao.argument.type](declaracao.argument)}`;
229
- }
230
- traduzirDeclaracaoEnquanto(declaracao) {
231
- let resultado = 'enquanto(';
232
- resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test);
233
- resultado += ')';
234
- resultado += this.logicaComumBlocoEscopo(declaracao);
235
- return resultado;
236
- }
237
- traduzirDeclaracaoFazerEnquanto(declaracao) {
238
- let resultado = 'fazer';
239
- resultado += this.logicaComumBlocoEscopo(declaracao);
240
- resultado += 'enquanto(';
241
- resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test);
242
- resultado += ')';
243
- return resultado;
244
- }
245
- traduzirDeclaracaoSe(declaracao) {
246
- let resultado = 'se (';
247
- resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test);
248
- resultado += ')';
249
- resultado += this.logicaComumBlocoEscopo(declaracao.consequent);
250
- if (declaracao === null || declaracao === void 0 ? void 0 : declaracao.alternate) {
251
- resultado += 'senao ';
252
- if (declaracao.alternate.constructor.name === 'BlockStatement') {
253
- const bloco = declaracao.alternate;
254
- resultado += this.logicaComumBlocoEscopo(bloco);
255
- return resultado;
256
- }
257
- const se = declaracao.alternate;
258
- resultado += this.traduzirDeclaracao(se);
259
- }
260
- return resultado;
261
- }
262
- traduzirDeclaracaoTente(declaracao) {
263
- let resultado = 'tente ';
264
- resultado += this.logicaComumBlocoEscopo(declaracao.block);
265
- if (declaracao.handler) {
266
- resultado += 'pegue';
267
- if (declaracao.handler.param) {
268
- const identificador = declaracao.handler.param;
269
- resultado += `(${identificador.name})`;
270
- }
271
- resultado += this.logicaComumBlocoEscopo(declaracao.block);
272
- }
273
- if (declaracao.finalizer) {
274
- resultado += 'finalmente';
275
- resultado += this.logicaComumBlocoEscopo(declaracao.finalizer);
276
- }
277
- return resultado;
278
- }
279
- traduzirDeclaracaoEscolha(declaracao) {
280
- let resultado = '';
281
- this.indentacao += 4;
282
- resultado += `escolha(${this.dicionarioConstrutos[declaracao.discriminant.type](declaracao.discriminant)}) {`;
283
- resultado += ' '.repeat(this.indentacao);
284
- for (let caso of declaracao.cases) {
285
- if (!caso.test) {
286
- resultado += 'padrao:';
287
- resultado += ' '.repeat(this.indentacao + 4);
288
- for (let bloco of caso.consequent) {
289
- if (bloco.type === 'BreakStatement')
290
- continue;
291
- resultado += this.traduzirDeclaracao(bloco) + '\n';
292
- }
293
- break;
294
- }
295
- resultado += `caso ${this.dicionarioConstrutos[caso.test.type](caso.test)}:`;
296
- resultado += ' '.repeat(this.indentacao + 4);
297
- for (let bloco of caso.consequent) {
298
- if (bloco.type === 'BreakStatement')
299
- continue;
300
- resultado += this.traduzirDeclaracao(bloco) + '\n';
301
- }
302
- }
303
- this.indentacao -= 4;
304
- resultado += ' '.repeat(this.indentacao) + '}\n';
305
- return resultado;
306
- }
307
- traduzirDeclaracao(declaracao) {
308
- switch (declaracao.type) {
309
- case 'ClassDeclaration':
310
- return this.traduzirDeclaracaoClasse(declaracao);
311
- case 'DoWhileStatement':
312
- return this.traduzirDeclaracaoFazerEnquanto(declaracao);
313
- case 'ExpressionStatement':
314
- return this.traduzirExpressaoDeclaracao(declaracao);
315
- case 'ForStatement':
316
- return this.traduzirDeclaracaoPara(declaracao);
317
- case 'FunctionDeclaration':
318
- return this.traduzirDeclaracaoFuncao(declaracao);
319
- case 'IfStatement':
320
- return this.traduzirDeclaracaoSe(declaracao);
321
- case 'ReturnStatement':
322
- return this.traduzirDeclaracaoRetorna(declaracao);
323
- case 'SwitchStatement':
324
- return this.traduzirDeclaracaoEscolha(declaracao);
325
- case 'TryStatement':
326
- return this.traduzirDeclaracaoTente(declaracao);
327
- case 'VariableDeclaration':
328
- return this.traduzirDeclaracaoVariavel(declaracao);
329
- case 'WhileStatement':
330
- return this.traduzirDeclaracaoEnquanto(declaracao);
331
- }
332
- }
333
- traduzir(codigo) {
334
- let resultado = '';
335
- const declaracoes = (0, esprima_1.parseScript)(codigo);
336
- for (let declaracao of declaracoes.body) {
337
- resultado += `${this.traduzirDeclaracao(declaracao)} \n`;
338
- }
339
- return resultado;
340
- }
341
- }
342
- exports.TradutorReversoJavaScript = TradutorReversoJavaScript;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TradutorReversoJavaScript = void 0;
4
+ const esprima_1 = require("esprima");
5
+ /**
6
+ * Esse tradutor traduz de JavaScript para Delégua.
7
+ */
8
+ class TradutorReversoJavaScript {
9
+ constructor() {
10
+ this.indentacao = 0;
11
+ this.dicionarioConstrutos = {
12
+ AssignmentExpression: this.traduzirConstrutoAtribuir.bind(this),
13
+ ArrayExpression: this.traduzirConstrutoVetor.bind(this),
14
+ ArrowFunctionExpression: this.traduzirDeclaracaoFuncao.bind(this),
15
+ // Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
16
+ BinaryExpression: this.traduzirConstrutoBinario.bind(this),
17
+ CallExpression: this.traduzirConstrutoChamada.bind(this),
18
+ // DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
19
+ // Isto: this.traduzirConstrutoIsto.bind(this),
20
+ Identifier: this.traduzirIdentificador.bind(this),
21
+ Literal: this.traduzirConstrutoLiteral.bind(this),
22
+ LogicalExpression: this.traduzirConstrutoLogico.bind(this),
23
+ MemberExpression: this.traduzirExpressao.bind(this),
24
+ NewExpression: this.traduzirNovo.bind(this),
25
+ ThisExpression: (expressao) => 'isto.',
26
+ UpdateExpression: this.traduzirAtualizacaoVariavel.bind(this),
27
+ // Variavel: this.traduzirConstrutoVariavel.bind(this),
28
+ };
29
+ // Qualquer coisa pro ESLint ficar feliz.
30
+ }
31
+ traduzirSimboloOperador(operador) {
32
+ switch (operador) {
33
+ case '===':
34
+ return '==';
35
+ case '&&':
36
+ return 'e';
37
+ case '||':
38
+ return 'ou';
39
+ default:
40
+ return operador;
41
+ }
42
+ }
43
+ traduzirConstrutoVetor(vetor) {
44
+ if (!vetor.elements.length) {
45
+ return '[]';
46
+ }
47
+ let resultado = '[';
48
+ for (let elemento of vetor.elements) {
49
+ resultado += this.dicionarioConstrutos[elemento.constructor.name](elemento) + ', ';
50
+ }
51
+ if (vetor.elements.length > 0) {
52
+ resultado = resultado.slice(0, -2);
53
+ }
54
+ resultado += ']';
55
+ return resultado;
56
+ }
57
+ traduzirIdentificador(identificador) {
58
+ return identificador.name;
59
+ }
60
+ traduzirAtualizacaoVariavel(atualizarVariavel) {
61
+ let resultado = '';
62
+ resultado += this.dicionarioConstrutos[atualizarVariavel.argument.constructor.name](atualizarVariavel.argument);
63
+ resultado += this.traduzirSimboloOperador(atualizarVariavel.operator);
64
+ return resultado;
65
+ }
66
+ traduzirNovo(novo) {
67
+ let identificador = novo.callee;
68
+ let resultado = `${identificador.name}(`;
69
+ for (let argumento of novo.arguments) {
70
+ resultado += this.dicionarioConstrutos[argumento.type](argumento) + ', ';
71
+ }
72
+ if (novo.arguments.length > 0) {
73
+ resultado = resultado.slice(0, -2);
74
+ }
75
+ resultado += ')';
76
+ return resultado;
77
+ }
78
+ traduzirExpressao(expressao) {
79
+ let objeto = this.dicionarioConstrutos[expressao.object.type](expressao.object);
80
+ let propriedade = this.dicionarioConstrutos[expressao.property.type](expressao.property);
81
+ if (objeto === 'console' && propriedade === 'log') {
82
+ return 'escreva';
83
+ }
84
+ return `${objeto}${propriedade}`;
85
+ }
86
+ traduzirConstrutoLogico(logico) {
87
+ return this.dicionarioConstrutos[logico.constructor.name](logico);
88
+ }
89
+ traduzirConstrutoChamada(chamada) {
90
+ let resultado = '';
91
+ resultado += this.dicionarioConstrutos[chamada.callee.type](chamada.callee) + '(';
92
+ for (let parametro of chamada.arguments) {
93
+ resultado += this.dicionarioConstrutos[parametro.type](parametro) + ', ';
94
+ }
95
+ if (chamada.arguments.length > 0) {
96
+ resultado = resultado.slice(0, -2);
97
+ }
98
+ resultado += ')';
99
+ return resultado;
100
+ }
101
+ traduzirConstrutoAtribuir(atribuir) {
102
+ let resultado = '';
103
+ const direita = this.dicionarioConstrutos[atribuir.right.type](atribuir.right);
104
+ const esquerda = this.dicionarioConstrutos[atribuir.left.type](atribuir.left);
105
+ resultado += `${esquerda} ${this.traduzirSimboloOperador(atribuir.operator)} ${direita}`;
106
+ return resultado;
107
+ }
108
+ traduzirExpressaoDeclaracao(declaracao) {
109
+ return this.dicionarioConstrutos[declaracao.expression.type](declaracao.expression);
110
+ }
111
+ traduzirConstrutoLiteral(literal) {
112
+ if (literal.raw === 'true')
113
+ return 'verdadeiro';
114
+ else if (literal.raw === 'false')
115
+ return 'falso';
116
+ return `${literal.raw}`;
117
+ }
118
+ traduzirConstrutoBinario(binario) {
119
+ let resultado = '';
120
+ const direita = this.dicionarioConstrutos[binario.right.type](binario.right);
121
+ const esquerda = this.dicionarioConstrutos[binario.left.type](binario.left);
122
+ resultado += `${esquerda} ${this.traduzirSimboloOperador(binario.operator)} ${direita}`;
123
+ return resultado;
124
+ }
125
+ traduzirDeclaracaoVariavel(declaracao) {
126
+ let resultado = '';
127
+ let informacoesDaVariavel = declaracao.declarations[0];
128
+ const identificador = informacoesDaVariavel.id;
129
+ if (identificador) {
130
+ resultado += `var ${identificador.name} = ${this.dicionarioConstrutos[informacoesDaVariavel.init.type](informacoesDaVariavel.init)}`;
131
+ }
132
+ return resultado;
133
+ }
134
+ logicaComumBlocoEscopo(declaracoes) {
135
+ let resultado = '{\n';
136
+ this.indentacao += 4;
137
+ const corpo = declaracoes.body.body || declaracoes.body;
138
+ for (const declaracaoOuConstruto of corpo) {
139
+ resultado += ' '.repeat(this.indentacao);
140
+ const nomeConstrutor = declaracaoOuConstruto.constructor.name;
141
+ if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
142
+ resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
143
+ }
144
+ else {
145
+ resultado += this.traduzirDeclaracao(declaracaoOuConstruto);
146
+ }
147
+ resultado += '\n';
148
+ }
149
+ this.indentacao -= 4;
150
+ resultado += ' '.repeat(this.indentacao) + '}\n';
151
+ return resultado;
152
+ }
153
+ traduzirDeclaracaoPara(declaracao) {
154
+ let resultado = '';
155
+ resultado += 'para (';
156
+ resultado += this.traduzirDeclaracao(declaracao.init) + '; ';
157
+ resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test) + '; ';
158
+ resultado += this.dicionarioConstrutos[declaracao.update.type](declaracao.update) + ') ';
159
+ resultado += this.logicaComumBlocoEscopo(declaracao);
160
+ return resultado;
161
+ }
162
+ traduzirDeclaracaoFuncao(declaracao) {
163
+ let resultado = '';
164
+ const eFuncaoSeta = !declaracao.id;
165
+ resultado += eFuncaoSeta ? '(' : `funcao ${declaracao.id.name}(`;
166
+ for (let parametro of declaracao.params) {
167
+ resultado += parametro.name + ', ';
168
+ }
169
+ if (declaracao.params.length > 0) {
170
+ resultado = resultado.slice(0, -2);
171
+ }
172
+ resultado += eFuncaoSeta ? ') => ' : ') ';
173
+ resultado += this.logicaComumBlocoEscopo(declaracao);
174
+ return resultado;
175
+ }
176
+ //TODO: Refatorar esse método. @Samuel
177
+ traduzirDeclaracaoClasse(declaracao) {
178
+ let resultado = `classe ${declaracao.id.name} `;
179
+ if (declaracao.superClass) {
180
+ let identificador = declaracao.superClass;
181
+ resultado += `herda ${identificador.name} `;
182
+ }
183
+ resultado += '{\n';
184
+ this.indentacao += 4;
185
+ resultado += ' '.repeat(this.indentacao);
186
+ for (let corpo of declaracao.body.body) {
187
+ if (corpo.type === 'MethodDefinition') {
188
+ let _corpo = corpo;
189
+ if (_corpo.kind === 'constructor') {
190
+ resultado += 'construtor(';
191
+ for (let valor of _corpo.value.params) {
192
+ if (valor.type === 'Identifier') {
193
+ resultado += `${valor.name}, `;
194
+ }
195
+ }
196
+ if (_corpo.value.params.length > 0) {
197
+ resultado = resultado.slice(0, -2);
198
+ }
199
+ resultado += ')';
200
+ resultado += this.logicaComumBlocoEscopo(_corpo.value);
201
+ }
202
+ else if (_corpo.kind === 'method') {
203
+ resultado += ' '.repeat(this.indentacao);
204
+ let identificador = _corpo.key;
205
+ resultado += identificador.name + '(';
206
+ for (let valor of _corpo.value.params) {
207
+ if (valor.type === 'Identifier') {
208
+ resultado += `${valor.name}, `;
209
+ }
210
+ }
211
+ if (_corpo.value.params.length > 0) {
212
+ resultado = resultado.slice(0, -2);
213
+ }
214
+ resultado += ')';
215
+ resultado += this.logicaComumBlocoEscopo(_corpo.value);
216
+ }
217
+ }
218
+ else if (corpo.constructor.name === 'PropertyDefinition') {
219
+ }
220
+ else if (corpo.constructor.name === 'StaticBlock') {
221
+ }
222
+ }
223
+ this.indentacao -= 4;
224
+ resultado += ' '.repeat(this.indentacao) + '}\n';
225
+ return resultado;
226
+ }
227
+ traduzirDeclaracaoRetorna(declaracao) {
228
+ return `retorna ${this.dicionarioConstrutos[declaracao.argument.type](declaracao.argument)}`;
229
+ }
230
+ traduzirDeclaracaoEnquanto(declaracao) {
231
+ let resultado = 'enquanto(';
232
+ resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test);
233
+ resultado += ')';
234
+ resultado += this.logicaComumBlocoEscopo(declaracao);
235
+ return resultado;
236
+ }
237
+ traduzirDeclaracaoFazerEnquanto(declaracao) {
238
+ let resultado = 'fazer';
239
+ resultado += this.logicaComumBlocoEscopo(declaracao);
240
+ resultado += 'enquanto(';
241
+ resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test);
242
+ resultado += ')';
243
+ return resultado;
244
+ }
245
+ traduzirDeclaracaoSe(declaracao) {
246
+ let resultado = 'se (';
247
+ resultado += this.dicionarioConstrutos[declaracao.test.type](declaracao.test);
248
+ resultado += ')';
249
+ resultado += this.logicaComumBlocoEscopo(declaracao.consequent);
250
+ if (declaracao === null || declaracao === void 0 ? void 0 : declaracao.alternate) {
251
+ resultado += 'senao ';
252
+ if (declaracao.alternate.constructor.name === 'BlockStatement') {
253
+ const bloco = declaracao.alternate;
254
+ resultado += this.logicaComumBlocoEscopo(bloco);
255
+ return resultado;
256
+ }
257
+ const se = declaracao.alternate;
258
+ resultado += this.traduzirDeclaracao(se);
259
+ }
260
+ return resultado;
261
+ }
262
+ traduzirDeclaracaoTente(declaracao) {
263
+ let resultado = 'tente ';
264
+ resultado += this.logicaComumBlocoEscopo(declaracao.block);
265
+ if (declaracao.handler) {
266
+ resultado += 'pegue';
267
+ if (declaracao.handler.param) {
268
+ const identificador = declaracao.handler.param;
269
+ resultado += `(${identificador.name})`;
270
+ }
271
+ resultado += this.logicaComumBlocoEscopo(declaracao.block);
272
+ }
273
+ if (declaracao.finalizer) {
274
+ resultado += 'finalmente';
275
+ resultado += this.logicaComumBlocoEscopo(declaracao.finalizer);
276
+ }
277
+ return resultado;
278
+ }
279
+ traduzirDeclaracaoEscolha(declaracao) {
280
+ let resultado = '';
281
+ this.indentacao += 4;
282
+ resultado += `escolha(${this.dicionarioConstrutos[declaracao.discriminant.type](declaracao.discriminant)}) {`;
283
+ resultado += ' '.repeat(this.indentacao);
284
+ for (let caso of declaracao.cases) {
285
+ if (!caso.test) {
286
+ resultado += 'padrao:';
287
+ resultado += ' '.repeat(this.indentacao + 4);
288
+ for (let bloco of caso.consequent) {
289
+ if (bloco.type === 'BreakStatement')
290
+ continue;
291
+ resultado += this.traduzirDeclaracao(bloco) + '\n';
292
+ }
293
+ break;
294
+ }
295
+ resultado += `caso ${this.dicionarioConstrutos[caso.test.type](caso.test)}:`;
296
+ resultado += ' '.repeat(this.indentacao + 4);
297
+ for (let bloco of caso.consequent) {
298
+ if (bloco.type === 'BreakStatement')
299
+ continue;
300
+ resultado += this.traduzirDeclaracao(bloco) + '\n';
301
+ }
302
+ }
303
+ this.indentacao -= 4;
304
+ resultado += ' '.repeat(this.indentacao) + '}\n';
305
+ return resultado;
306
+ }
307
+ traduzirDeclaracao(declaracao) {
308
+ switch (declaracao.type) {
309
+ case 'ClassDeclaration':
310
+ return this.traduzirDeclaracaoClasse(declaracao);
311
+ case 'DoWhileStatement':
312
+ return this.traduzirDeclaracaoFazerEnquanto(declaracao);
313
+ case 'ExpressionStatement':
314
+ return this.traduzirExpressaoDeclaracao(declaracao);
315
+ case 'ForStatement':
316
+ return this.traduzirDeclaracaoPara(declaracao);
317
+ case 'FunctionDeclaration':
318
+ return this.traduzirDeclaracaoFuncao(declaracao);
319
+ case 'IfStatement':
320
+ return this.traduzirDeclaracaoSe(declaracao);
321
+ case 'ReturnStatement':
322
+ return this.traduzirDeclaracaoRetorna(declaracao);
323
+ case 'SwitchStatement':
324
+ return this.traduzirDeclaracaoEscolha(declaracao);
325
+ case 'TryStatement':
326
+ return this.traduzirDeclaracaoTente(declaracao);
327
+ case 'VariableDeclaration':
328
+ return this.traduzirDeclaracaoVariavel(declaracao);
329
+ case 'WhileStatement':
330
+ return this.traduzirDeclaracaoEnquanto(declaracao);
331
+ }
332
+ }
333
+ traduzir(codigo) {
334
+ let resultado = '';
335
+ const declaracoes = (0, esprima_1.parseScript)(codigo);
336
+ for (let declaracao of declaracoes.body) {
337
+ resultado += `${this.traduzirDeclaracao(declaracao)} \n`;
338
+ }
339
+ return resultado;
340
+ }
341
+ }
342
+ exports.TradutorReversoJavaScript = TradutorReversoJavaScript;
343
343
  //# sourceMappingURL=tradutor-reverso-javascript.js.map