@designliquido/delegua 0.36.1 → 0.36.2

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 (490) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +69 -69
  2. package/analisador-semantico/analisador-semantico-base.js +180 -180
  3. package/analisador-semantico/analisador-semantico.d.ts +59 -59
  4. package/analisador-semantico/analisador-semantico.js +442 -442
  5. package/analisador-semantico/analisador-semantico.js.map +1 -1
  6. package/analisador-semantico/index.d.ts +3 -3
  7. package/analisador-semantico/index.js +19 -19
  8. package/analisador-semantico/pilha-variaveis.d.ts +20 -20
  9. package/analisador-semantico/pilha-variaveis.js +25 -25
  10. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +69 -69
  11. package/avaliador-sintatico/avaliador-sintatico-base.js +223 -223
  12. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  13. package/avaliador-sintatico/avaliador-sintatico.d.ts +126 -126
  14. package/avaliador-sintatico/avaliador-sintatico.js +1093 -1093
  15. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +73 -73
  17. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +648 -648
  18. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  19. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +21 -21
  20. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +149 -149
  21. package/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
  22. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +87 -87
  23. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +770 -770
  24. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  25. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +34 -34
  26. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +168 -168
  27. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  28. package/avaliador-sintatico/dialetos/index.d.ts +3 -3
  29. package/avaliador-sintatico/dialetos/index.js +19 -19
  30. package/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -5
  31. package/avaliador-sintatico/erro-avaliador-sintatico.js +11 -11
  32. package/avaliador-sintatico/index.d.ts +6 -6
  33. package/avaliador-sintatico/index.js +22 -22
  34. package/avaliador-sintatico/micro-avaliador-sintatico-base.d.ts +27 -27
  35. package/avaliador-sintatico/micro-avaliador-sintatico-base.js +116 -116
  36. package/avaliador-sintatico/micro-avaliador-sintatico-base.js.map +1 -1
  37. package/avaliador-sintatico/micro-avaliador-sintatico.d.ts +33 -33
  38. package/avaliador-sintatico/micro-avaliador-sintatico.js +287 -287
  39. package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
  40. package/avaliador-sintatico/retornos/index.d.ts +3 -3
  41. package/avaliador-sintatico/retornos/index.js +19 -19
  42. package/avaliador-sintatico/retornos/retorno-declaracao.d.ts +3 -3
  43. package/avaliador-sintatico/retornos/retorno-declaracao.js +2 -2
  44. package/avaliador-sintatico/retornos/retorno-primario.d.ts +3 -3
  45. package/avaliador-sintatico/retornos/retorno-primario.js +2 -2
  46. package/avaliador-sintatico/retornos/retorno-resolver-declaracao.d.ts +2 -2
  47. package/avaliador-sintatico/retornos/retorno-resolver-declaracao.js +2 -2
  48. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.d.ts +59 -59
  49. package/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js +150 -150
  50. package/bibliotecas/biblioteca-global.d.ts +157 -157
  51. package/bibliotecas/biblioteca-global.js +497 -498
  52. package/bibliotecas/biblioteca-global.js.map +1 -1
  53. package/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts +1 -1
  54. package/bibliotecas/dialetos/egua-classico/biblioteca-global.js +236 -236
  55. package/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
  56. package/bibliotecas/dialetos/egua-classico/index.d.ts +2 -2
  57. package/bibliotecas/dialetos/egua-classico/index.js +32 -32
  58. package/bibliotecas/dialetos/egua-classico/index.js.map +1 -1
  59. package/bibliotecas/dialetos/egua-classico/matematica.d.ts +1 -1
  60. package/bibliotecas/dialetos/egua-classico/matematica.js +541 -541
  61. package/bibliotecas/dialetos/egua-classico/matematica.js.map +1 -1
  62. package/bibliotecas/dialetos/egua-classico/tempo.d.ts +1 -1
  63. package/bibliotecas/dialetos/egua-classico/tempo.js +39 -39
  64. package/bibliotecas/dialetos/egua-classico/tempo.js.map +1 -1
  65. package/bibliotecas/dialetos/egua-classico/textos.d.ts +8 -8
  66. package/bibliotecas/dialetos/egua-classico/textos.js +201 -201
  67. package/bibliotecas/dialetos/egua-classico/textos.js.map +1 -1
  68. package/bibliotecas/primitivas-dicionario.d.ts +6 -6
  69. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  70. package/bibliotecas/primitivas-dicionario.js +10 -10
  71. package/bibliotecas/primitivas-numero.d.ts +6 -6
  72. package/bibliotecas/primitivas-numero.d.ts.map +1 -1
  73. package/bibliotecas/primitivas-numero.js +10 -10
  74. package/bibliotecas/primitivas-texto.d.ts +17 -17
  75. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  76. package/bibliotecas/primitivas-texto.js +22 -22
  77. package/bibliotecas/primitivas-texto.js.map +1 -1
  78. package/bibliotecas/primitivas-vetor.d.ts +21 -21
  79. package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
  80. package/bibliotecas/primitivas-vetor.js +90 -90
  81. package/bibliotecas/primitivas-vetor.js.map +1 -1
  82. package/bin/package.json +5 -4
  83. package/construtos/acesso-elemento-matriz.d.ts +12 -12
  84. package/construtos/acesso-elemento-matriz.js +17 -17
  85. package/construtos/acesso-indice-variavel.d.ts +15 -15
  86. package/construtos/acesso-indice-variavel.js +20 -20
  87. package/construtos/acesso-metodo-ou-propriedade.d.ts +14 -14
  88. package/construtos/acesso-metodo-ou-propriedade.js +19 -19
  89. package/construtos/agrupamento.d.ts +14 -14
  90. package/construtos/agrupamento.js +19 -19
  91. package/construtos/atribuicao-por-indice.d.ts +11 -11
  92. package/construtos/atribuicao-por-indice.js +16 -16
  93. package/construtos/atribuicao-por-indices-matriz.d.ts +12 -12
  94. package/construtos/atribuicao-por-indices-matriz.js +17 -17
  95. package/construtos/atribuir.d.ts +15 -15
  96. package/construtos/atribuir.js +24 -24
  97. package/construtos/atribuir.js.map +1 -1
  98. package/construtos/binario.d.ts +33 -33
  99. package/construtos/binario.js +38 -38
  100. package/construtos/chamada.d.ts +15 -15
  101. package/construtos/chamada.js +21 -21
  102. package/construtos/comentario.d.ts +15 -15
  103. package/construtos/comentario.js +20 -20
  104. package/construtos/constante.d.ts +12 -12
  105. package/construtos/constante.js +17 -17
  106. package/construtos/construto.d.ts +7 -7
  107. package/construtos/construto.js +2 -2
  108. package/construtos/decorador.d.ts +14 -14
  109. package/construtos/decorador.js +19 -19
  110. package/construtos/definir-valor.d.ts +11 -11
  111. package/construtos/definir-valor.js +16 -16
  112. package/construtos/dicionario.d.ts +10 -10
  113. package/construtos/dicionario.js +15 -15
  114. package/construtos/expressao-regular.d.ts +10 -10
  115. package/construtos/expressao-regular.js +15 -15
  116. package/construtos/fim-para.d.ts +22 -22
  117. package/construtos/fim-para.js +25 -25
  118. package/construtos/formatacao-escrita.d.ts +16 -16
  119. package/construtos/formatacao-escrita.js +21 -21
  120. package/construtos/funcao.d.ts +12 -12
  121. package/construtos/funcao.js +16 -16
  122. package/construtos/index.d.ts +29 -29
  123. package/construtos/index.js +45 -45
  124. package/construtos/isto.d.ts +9 -9
  125. package/construtos/isto.js +14 -14
  126. package/construtos/literal.d.ts +10 -10
  127. package/construtos/literal.js +14 -14
  128. package/construtos/logico.d.ts +11 -11
  129. package/construtos/logico.js +16 -16
  130. package/construtos/qual-tipo.d.ts +11 -11
  131. package/construtos/qual-tipo.js +16 -16
  132. package/construtos/super.d.ts +10 -10
  133. package/construtos/super.js +15 -15
  134. package/construtos/tipo-de.d.ts +10 -10
  135. package/construtos/tipo-de.js +15 -15
  136. package/construtos/tuplas/deceto.d.ts +18 -18
  137. package/construtos/tuplas/deceto.js +32 -32
  138. package/construtos/tuplas/dupla.d.ts +6 -6
  139. package/construtos/tuplas/dupla.js +12 -12
  140. package/construtos/tuplas/index.d.ts +13 -13
  141. package/construtos/tuplas/index.js +67 -67
  142. package/construtos/tuplas/index.js.map +1 -1
  143. package/construtos/tuplas/noneto.d.ts +15 -15
  144. package/construtos/tuplas/noneto.js +25 -25
  145. package/construtos/tuplas/octeto.d.ts +14 -14
  146. package/construtos/tuplas/octeto.js +24 -24
  147. package/construtos/tuplas/quarteto.d.ts +8 -8
  148. package/construtos/tuplas/quarteto.js +14 -14
  149. package/construtos/tuplas/quinteto.d.ts +9 -9
  150. package/construtos/tuplas/quinteto.js +15 -15
  151. package/construtos/tuplas/septeto.d.ts +13 -13
  152. package/construtos/tuplas/septeto.js +23 -23
  153. package/construtos/tuplas/sexteto.d.ts +10 -10
  154. package/construtos/tuplas/sexteto.js +16 -16
  155. package/construtos/tuplas/trio.d.ts +7 -7
  156. package/construtos/tuplas/trio.js +13 -13
  157. package/construtos/tuplas/tupla.d.ts +8 -8
  158. package/construtos/tuplas/tupla.js +9 -9
  159. package/construtos/unario.d.ts +11 -11
  160. package/construtos/unario.js +16 -16
  161. package/construtos/variavel.d.ts +9 -9
  162. package/construtos/variavel.js +14 -14
  163. package/construtos/vetor.d.ts +11 -11
  164. package/construtos/vetor.js +21 -21
  165. package/construtos/vetor.js.map +1 -1
  166. package/declaracoes/aleatorio.d.ts +15 -15
  167. package/declaracoes/aleatorio.js +15 -15
  168. package/declaracoes/bloco.d.ts +7 -7
  169. package/declaracoes/bloco.js +14 -14
  170. package/declaracoes/cabecalho-programa.d.ts +7 -7
  171. package/declaracoes/cabecalho-programa.js +14 -14
  172. package/declaracoes/classe.d.ts +14 -14
  173. package/declaracoes/classe.js +18 -18
  174. package/declaracoes/const-multiplo.d.ts +14 -14
  175. package/declaracoes/const-multiplo.js +19 -19
  176. package/declaracoes/const.d.ts +14 -14
  177. package/declaracoes/const.js +19 -19
  178. package/declaracoes/continua.d.ts +6 -6
  179. package/declaracoes/continua.js +13 -13
  180. package/declaracoes/declaracao.d.ts +8 -8
  181. package/declaracoes/declaracao.js +17 -17
  182. package/declaracoes/enquanto.d.ts +10 -10
  183. package/declaracoes/enquanto.js +15 -15
  184. package/declaracoes/escolha.d.ts +14 -14
  185. package/declaracoes/escolha.js +19 -19
  186. package/declaracoes/escreva-mesma-linha.d.ts +8 -8
  187. package/declaracoes/escreva-mesma-linha.js +14 -14
  188. package/declaracoes/escreva.d.ts +8 -8
  189. package/declaracoes/escreva.js +14 -14
  190. package/declaracoes/expressao.d.ts +8 -8
  191. package/declaracoes/expressao.js +14 -14
  192. package/declaracoes/falhar.d.ts +8 -8
  193. package/declaracoes/falhar.js +15 -15
  194. package/declaracoes/fazer.d.ts +10 -10
  195. package/declaracoes/fazer.js +15 -15
  196. package/declaracoes/funcao.d.ts +11 -11
  197. package/declaracoes/funcao.js +17 -17
  198. package/declaracoes/importar.d.ts +9 -9
  199. package/declaracoes/importar.js +15 -15
  200. package/declaracoes/index.d.ts +31 -31
  201. package/declaracoes/index.js +47 -47
  202. package/declaracoes/inicio-algoritmo.d.ts +6 -6
  203. package/declaracoes/inicio-algoritmo.js +13 -13
  204. package/declaracoes/leia-multiplo.d.ts +14 -14
  205. package/declaracoes/leia-multiplo.js +21 -21
  206. package/declaracoes/leia.d.ts +17 -17
  207. package/declaracoes/leia.js +21 -21
  208. package/declaracoes/para-cada.d.ts +11 -11
  209. package/declaracoes/para-cada.js +17 -17
  210. package/declaracoes/para.d.ts +19 -19
  211. package/declaracoes/para.js +24 -24
  212. package/declaracoes/propriedade-classe.d.ts +10 -10
  213. package/declaracoes/propriedade-classe.js +16 -16
  214. package/declaracoes/retorna.d.ts +8 -8
  215. package/declaracoes/retorna.js +15 -15
  216. package/declaracoes/se.d.ts +11 -11
  217. package/declaracoes/se.js +17 -17
  218. package/declaracoes/sustar.d.ts +6 -6
  219. package/declaracoes/sustar.js +13 -13
  220. package/declaracoes/tendo-como.d.ts +16 -16
  221. package/declaracoes/tendo-como.js +21 -21
  222. package/declaracoes/tente.d.ts +14 -14
  223. package/declaracoes/tente.js +20 -20
  224. package/declaracoes/var-multiplo.d.ts +15 -15
  225. package/declaracoes/var-multiplo.js +20 -20
  226. package/declaracoes/var.d.ts +16 -16
  227. package/declaracoes/var.js +21 -21
  228. package/depuracao/cyrb53.d.ts +9 -9
  229. package/depuracao/cyrb53.js +22 -22
  230. package/depuracao/cyrb53.js.map +1 -1
  231. package/depuracao/index.d.ts +2 -2
  232. package/depuracao/index.js +23 -23
  233. package/depuracao/ponto-parada.d.ts +4 -4
  234. package/depuracao/ponto-parada.js +2 -2
  235. package/espaco-variaveis.d.ts +19 -19
  236. package/espaco-variaveis.js +19 -19
  237. package/estruturas/chamavel.d.ts +7 -7
  238. package/estruturas/chamavel.js +12 -12
  239. package/estruturas/classe-padrao.d.ts +31 -31
  240. package/estruturas/classe-padrao.js +39 -39
  241. package/estruturas/delegua-funcao.d.ts +29 -29
  242. package/estruturas/delegua-funcao.js +141 -141
  243. package/estruturas/delegua-funcao.js.map +1 -1
  244. package/estruturas/descritor-tipo-classe.d.ts +37 -37
  245. package/estruturas/descritor-tipo-classe.js +79 -79
  246. package/estruturas/descritor-tipo-classe.js.map +1 -1
  247. package/estruturas/funcao-padrao.d.ts +23 -23
  248. package/estruturas/funcao-padrao.js +34 -34
  249. package/estruturas/index.d.ts +9 -9
  250. package/estruturas/index.js +25 -25
  251. package/estruturas/metodo-primitiva.d.ts +28 -28
  252. package/estruturas/metodo-primitiva.js +40 -40
  253. package/estruturas/modulo.d.ts +18 -18
  254. package/estruturas/modulo.js +24 -24
  255. package/estruturas/objeto-delegua-classe.d.ts +26 -26
  256. package/estruturas/objeto-delegua-classe.js +53 -53
  257. package/estruturas/objeto-delegua-classe.js.map +1 -1
  258. package/estruturas/objeto-padrao.d.ts +18 -18
  259. package/estruturas/objeto-padrao.js +32 -32
  260. package/estruturas/objeto-padrao.js.map +1 -1
  261. package/excecoes/erro-em-tempo-de-execucao.d.ts +7 -7
  262. package/excecoes/erro-em-tempo-de-execucao.js +13 -13
  263. package/excecoes/index.d.ts +1 -1
  264. package/excecoes/index.js +17 -17
  265. package/formatadores/formatador-delegua.d.ts +79 -79
  266. package/formatadores/formatador-delegua.js +676 -676
  267. package/formatadores/formatador-delegua.js.map +1 -1
  268. package/formatadores/index.d.ts +1 -1
  269. package/formatadores/index.js +17 -17
  270. package/geracao-identificadores/index.d.ts +1 -1
  271. package/geracao-identificadores/index.js +22 -23
  272. package/geracao-identificadores/index.js.map +1 -1
  273. package/index.d.ts +9 -9
  274. package/index.js +27 -27
  275. package/interfaces/analisador-semantico-interface.d.ts +6 -6
  276. package/interfaces/analisador-semantico-interface.js +2 -2
  277. package/interfaces/avaliador-sintatico-interface.d.ts +55 -55
  278. package/interfaces/avaliador-sintatico-interface.js +2 -2
  279. package/interfaces/construtos/index.d.ts +4 -4
  280. package/interfaces/construtos/index.js +2 -2
  281. package/interfaces/erros/diagnostico-analisador-semantico.d.ts +14 -14
  282. package/interfaces/erros/diagnostico-analisador-semantico.js +10 -10
  283. package/interfaces/erros/diagnostico-analisador-semantico.js.map +1 -1
  284. package/interfaces/erros/erro-interpretador.d.ts +8 -8
  285. package/interfaces/erros/erro-interpretador.js +2 -2
  286. package/interfaces/erros/index.d.ts +1 -1
  287. package/interfaces/erros/index.js +17 -17
  288. package/interfaces/escopo-execucao.d.ts +12 -12
  289. package/interfaces/escopo-execucao.js +2 -2
  290. package/interfaces/formatador-comum-interface.d.ts +11 -11
  291. package/interfaces/formatador-comum-interface.js +2 -2
  292. package/interfaces/funcao-hipotetica-interface.d.ts +3 -3
  293. package/interfaces/funcao-hipotetica-interface.js +2 -2
  294. package/interfaces/index.d.ts +16 -16
  295. package/interfaces/index.js +32 -32
  296. package/interfaces/interpretador-com-depuracao-interface.d.ts +17 -17
  297. package/interfaces/interpretador-com-depuracao-interface.js +2 -2
  298. package/interfaces/interpretador-interface-potigol.d.ts +5 -5
  299. package/interfaces/interpretador-interface-potigol.js +2 -2
  300. package/interfaces/interpretador-interface.d.ts +20 -20
  301. package/interfaces/interpretador-interface.js +2 -2
  302. package/interfaces/lexador-interface.d.ts +23 -23
  303. package/interfaces/lexador-interface.js +2 -2
  304. package/interfaces/parametro-interface.d.ts +15 -15
  305. package/interfaces/parametro-interface.js +2 -2
  306. package/interfaces/pilha-escopos-execucao-interface.d.ts +26 -26
  307. package/interfaces/pilha-escopos-execucao-interface.js +2 -2
  308. package/interfaces/pilha-interface.d.ts +7 -7
  309. package/interfaces/pilha-interface.js +2 -2
  310. package/interfaces/resolvedor-interface.d.ts +41 -41
  311. package/interfaces/resolvedor-interface.js +2 -2
  312. package/interfaces/retornos/index.d.ts +4 -4
  313. package/interfaces/retornos/index.js +20 -20
  314. package/interfaces/retornos/retorno-analisador-semantico.d.ts +4 -4
  315. package/interfaces/retornos/retorno-analisador-semantico.js +2 -2
  316. package/interfaces/retornos/retorno-avaliador-sintatico.d.ts +5 -5
  317. package/interfaces/retornos/retorno-avaliador-sintatico.js +2 -2
  318. package/interfaces/retornos/retorno-execucao-interface.d.ts +5 -5
  319. package/interfaces/retornos/retorno-execucao-interface.js +2 -2
  320. package/interfaces/retornos/retorno-interpretador.d.ts +5 -5
  321. package/interfaces/retornos/retorno-interpretador.js +2 -2
  322. package/interfaces/retornos/retorno-lexador.d.ts +9 -9
  323. package/interfaces/retornos/retorno-lexador.js +2 -2
  324. package/interfaces/simbolo-interface.d.ts +7 -7
  325. package/interfaces/simbolo-interface.js +2 -2
  326. package/interfaces/tradutor-interface.d.ts +3 -3
  327. package/interfaces/tradutor-interface.js +2 -2
  328. package/interfaces/variavel-hipotetica-interface.d.ts +8 -8
  329. package/interfaces/variavel-hipotetica-interface.js +2 -2
  330. package/interfaces/variavel-interface.d.ts +8 -8
  331. package/interfaces/variavel-interface.js +2 -2
  332. package/interfaces/visitante-comum-interface.d.ts +58 -58
  333. package/interfaces/visitante-comum-interface.js +2 -2
  334. package/interpretador/argumento-interface.d.ts +4 -4
  335. package/interpretador/argumento-interface.js +2 -2
  336. package/interpretador/comum.d.ts +2 -2
  337. package/interpretador/comum.js +51 -52
  338. package/interpretador/comum.js.map +1 -1
  339. package/interpretador/dialetos/egua-classico/index.d.ts +1 -1
  340. package/interpretador/dialetos/egua-classico/index.js +17 -17
  341. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +119 -119
  342. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +815 -815
  343. package/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  344. package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.d.ts +5 -5
  345. package/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.js +11 -11
  346. package/interpretador/dialetos/egua-classico/resolvedor/index.d.ts +3 -3
  347. package/interpretador/dialetos/egua-classico/resolvedor/index.js +19 -19
  348. package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.d.ts +9 -9
  349. package/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.js +25 -25
  350. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +106 -106
  351. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +441 -441
  352. package/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  353. package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.d.ts +6 -6
  354. package/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.js +2 -2
  355. package/interpretador/dialetos/index.d.ts +2 -2
  356. package/interpretador/dialetos/index.js +18 -18
  357. package/interpretador/dialetos/portugol-ipt/index.d.ts +1 -1
  358. package/interpretador/dialetos/portugol-ipt/index.js +17 -17
  359. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +133 -133
  360. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +501 -501
  361. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  362. package/interpretador/index.d.ts +3 -3
  363. package/interpretador/index.js +19 -19
  364. package/interpretador/inferenciador.d.ts +15 -15
  365. package/interpretador/inferenciador.d.ts.map +1 -1
  366. package/interpretador/inferenciador.js +80 -80
  367. package/interpretador/inferenciador.js.map +1 -1
  368. package/interpretador/interpretador-base.d.ts +268 -268
  369. package/interpretador/interpretador-base.js +1399 -1399
  370. package/interpretador/interpretador-base.js.map +1 -1
  371. package/interpretador/interpretador-com-depuracao.d.ts +190 -190
  372. package/interpretador/interpretador-com-depuracao.js +568 -568
  373. package/interpretador/interpretador-com-depuracao.js.map +1 -1
  374. package/interpretador/pilha-escopos-execucao.d.ts +39 -39
  375. package/interpretador/pilha-escopos-execucao.js +243 -243
  376. package/interpretador/pilha-escopos-execucao.js.map +1 -1
  377. package/lexador/dialetos/index.d.ts +4 -4
  378. package/lexador/dialetos/index.js +20 -20
  379. package/lexador/dialetos/lexador-egua-classico.d.ts +36 -36
  380. package/lexador/dialetos/lexador-egua-classico.js +286 -286
  381. package/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  382. package/lexador/dialetos/lexador-guarani.d.ts +10 -10
  383. package/lexador/dialetos/lexador-guarani.js +113 -113
  384. package/lexador/dialetos/lexador-guarani.js.map +1 -1
  385. package/lexador/dialetos/lexador-pitugues.d.ts +51 -51
  386. package/lexador/dialetos/lexador-pitugues.js +398 -398
  387. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  388. package/lexador/dialetos/lexador-portugol-ipt.d.ts +33 -33
  389. package/lexador/dialetos/lexador-portugol-ipt.js +237 -237
  390. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  391. package/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +32 -32
  392. package/lexador/dialetos/palavras-reservadas/egua-classico.js +39 -39
  393. package/lexador/dialetos/palavras-reservadas/guarani.d.ts +3 -3
  394. package/lexador/dialetos/palavras-reservadas/guarani.js +10 -10
  395. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +13 -13
  396. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +20 -20
  397. package/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +1 -1
  398. package/lexador/dialetos/palavras-reservadas/rantiaquin.js +4 -4
  399. package/lexador/dialetos/pragma.d.ts +8 -8
  400. package/lexador/dialetos/pragma.js +2 -2
  401. package/lexador/erro-lexador.d.ts +5 -5
  402. package/lexador/erro-lexador.js +2 -2
  403. package/lexador/index.d.ts +4 -4
  404. package/lexador/index.js +20 -20
  405. package/lexador/lexador-base-linha-unica.d.ts +28 -28
  406. package/lexador/lexador-base-linha-unica.js +82 -82
  407. package/lexador/lexador-base-linha-unica.js.map +1 -1
  408. package/lexador/lexador-base.d.ts +41 -41
  409. package/lexador/lexador-base.js +112 -112
  410. package/lexador/lexador-base.js.map +1 -1
  411. package/lexador/lexador.d.ts +43 -43
  412. package/lexador/lexador.js +440 -440
  413. package/lexador/lexador.js.map +1 -1
  414. package/lexador/micro-lexador.d.ts +29 -29
  415. package/lexador/micro-lexador.js +207 -207
  416. package/lexador/micro-lexador.js.map +1 -1
  417. package/lexador/palavras-reservadas.d.ts +54 -54
  418. package/lexador/palavras-reservadas.js +61 -61
  419. package/lexador/simbolo.d.ts +10 -10
  420. package/lexador/simbolo.js +16 -16
  421. package/lexador/traducao/lexador-javascript.d.ts +28 -28
  422. package/lexador/traducao/lexador-javascript.js +58 -58
  423. package/package.json +5 -4
  424. package/quebras/index.d.ts +10 -10
  425. package/quebras/index.js +19 -19
  426. package/tipo-dados-elementar.d.ts +1 -1
  427. package/tipo-dados-elementar.js +2 -2
  428. package/tipos-de-dados/delegua.d.ts +18 -18
  429. package/tipos-de-dados/delegua.js +19 -19
  430. package/tipos-de-dados/listas-delegua.d.ts +6 -6
  431. package/tipos-de-dados/listas-delegua.js +7 -7
  432. package/tipos-de-dados/listas-primitivos.d.ts +5 -5
  433. package/tipos-de-dados/listas-primitivos.js +6 -6
  434. package/tipos-de-dados/primitivos.d.ts +16 -16
  435. package/tipos-de-dados/primitivos.js +17 -17
  436. package/tipos-de-simbolos/comum.d.ts +23 -23
  437. package/tipos-de-simbolos/comum.js +24 -24
  438. package/tipos-de-simbolos/delegua.d.ts +91 -91
  439. package/tipos-de-simbolos/delegua.js +92 -92
  440. package/tipos-de-simbolos/egua-classico.d.ts +75 -75
  441. package/tipos-de-simbolos/egua-classico.js +76 -76
  442. package/tipos-de-simbolos/guarani.d.ts +14 -14
  443. package/tipos-de-simbolos/guarani.js +15 -15
  444. package/tipos-de-simbolos/guarani.js.map +1 -1
  445. package/tipos-de-simbolos/microgramaticas/delegua.d.ts +46 -46
  446. package/tipos-de-simbolos/microgramaticas/delegua.js +47 -47
  447. package/tipos-de-simbolos/pitugues.d.ts +75 -75
  448. package/tipos-de-simbolos/pitugues.js +76 -76
  449. package/tipos-de-simbolos/portugol-ipt.d.ts +36 -36
  450. package/tipos-de-simbolos/portugol-ipt.js +37 -37
  451. package/tipos-de-simbolos/rantiaquin.d.ts +2 -2
  452. package/tipos-de-simbolos/rantiaquin.js +3 -3
  453. package/tradutores/dicionarios/dicionario-delegua-javascript.d.ts +2 -2
  454. package/tradutores/dicionarios/dicionario-delegua-javascript.js +10 -10
  455. package/tradutores/dicionarios/index.d.ts +1 -1
  456. package/tradutores/dicionarios/index.js +17 -17
  457. package/tradutores/index.d.ts +6 -6
  458. package/tradutores/index.js +22 -22
  459. package/tradutores/python/python3-lexer.d.ts +152 -152
  460. package/tradutores/python/python3-lexer.js +1227 -1227
  461. package/tradutores/python/python3-lexer.js.map +1 -1
  462. package/tradutores/python/python3-listener.d.ts +964 -964
  463. package/tradutores/python/python3-listener.js +3 -3
  464. package/tradutores/python/python3-parser.d.ts +1342 -1342
  465. package/tradutores/python/python3-parser.js +11226 -11226
  466. package/tradutores/python/python3-parser.js.map +1 -1
  467. package/tradutores/python/python3-visitor.d.ts +619 -619
  468. package/tradutores/python/python3-visitor.js +3 -3
  469. package/tradutores/tradutor-assembly-x64.d.ts +19 -19
  470. package/tradutores/tradutor-assembly-x64.js +128 -128
  471. package/tradutores/tradutor-assembly-x64.js.map +1 -1
  472. package/tradutores/tradutor-assemblyscript.d.ts +91 -91
  473. package/tradutores/tradutor-assemblyscript.js +590 -590
  474. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  475. package/tradutores/tradutor-javascript.d.ts +95 -95
  476. package/tradutores/tradutor-javascript.js +577 -577
  477. package/tradutores/tradutor-javascript.js.map +1 -1
  478. package/tradutores/tradutor-portugol-ipt.d.ts +21 -21
  479. package/tradutores/tradutor-portugol-ipt.js +60 -60
  480. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  481. package/tradutores/tradutor-python.d.ts +65 -65
  482. package/tradutores/tradutor-python.js +461 -461
  483. package/tradutores/tradutor-python.js.map +1 -1
  484. package/tradutores/tradutor-reverso-javascript.d.ts +50 -50
  485. package/tradutores/tradutor-reverso-javascript.js +392 -392
  486. package/tradutores/tradutor-reverso-javascript.js.map +1 -1
  487. package/tradutores/tradutor-reverso-python.d.ts +32 -32
  488. package/tradutores/tradutor-reverso-python.js +71 -71
  489. package/tradutores/tradutor-reverso-python.js.map +1 -1
  490. package/umd/delegua.js +26337 -26340
@@ -1,462 +1,462 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TradutorPython = void 0;
7
- const construtos_1 = require("../construtos");
8
- const declaracoes_1 = require("../declaracoes");
9
- const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
10
- class TradutorPython {
11
- constructor() {
12
- this.indentacao = 0;
13
- this.dicionarioConstrutos = {
14
- AcessoMetodoOuPropriedade: this.trazudirConstrutoAcessoMetodo.bind(this),
15
- Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
16
- Atribuir: this.traduzirConstrutoAtribuir.bind(this),
17
- Binario: this.traduzirConstrutoBinario.bind(this),
18
- Chamada: this.traduzirConstrutoChamada.bind(this),
19
- Comentario: this.traduzirConstrutoComentario.bind(this),
20
- DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
21
- Literal: this.traduzirConstrutoLiteral.bind(this),
22
- Logico: this.traduzirConstrutoLogico.bind(this),
23
- Variavel: this.traduzirConstrutoVariavel.bind(this),
24
- Vetor: this.traduzirConstrutoVetor.bind(this),
25
- };
26
- this.dicionarioDeclaracoes = {
27
- Bloco: this.traduzirDeclaracaoBloco.bind(this),
28
- Classe: this.traduzirDeclaracaoClasse.bind(this),
29
- Comentario: this.traduzirConstrutoComentario.bind(this),
30
- Const: this.traduzirDeclaracaoConst.bind(this),
31
- Continua: () => 'continue',
32
- Escreva: this.traduzirDeclaracaoEscreva.bind(this),
33
- Expressao: this.traduzirDeclaracaoExpressao.bind(this),
34
- FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
35
- Leia: this.traduzirDeclaracaoLeia.bind(this),
36
- ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
37
- Retorna: this.traduzirDeclaracaoRetorna.bind(this),
38
- Se: this.traduzirDeclaracaoSe.bind(this),
39
- Sustar: () => 'break',
40
- Tente: this.traduzirDeclaracaoTente.bind(this),
41
- Var: this.traduzirDeclaracaoVar.bind(this),
42
- };
43
- }
44
- traduzirNomeVariavel(variavel) {
45
- return variavel.replace(/\.?([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '');
46
- }
47
- traduzirSimboloOperador(operador) {
48
- switch (operador.tipo) {
49
- case delegua_1.default.ADICAO:
50
- return '+';
51
- case delegua_1.default.BIT_AND:
52
- return '&';
53
- case delegua_1.default.BIT_OR:
54
- return '|';
55
- case delegua_1.default.BIT_XOR:
56
- return '^';
57
- case delegua_1.default.BIT_NOT:
58
- return '~';
59
- case delegua_1.default.DIFERENTE:
60
- return '!=';
61
- case delegua_1.default.DIVISAO:
62
- return '/';
63
- case delegua_1.default.E:
64
- return 'and';
65
- case delegua_1.default.EXPONENCIACAO:
66
- return '**';
67
- case delegua_1.default.IGUAL:
68
- return '=';
69
- case delegua_1.default.IGUAL_IGUAL:
70
- return '==';
71
- case delegua_1.default.MAIOR:
72
- return '>';
73
- case delegua_1.default.MAIOR_IGUAL:
74
- return '>=';
75
- case delegua_1.default.MENOR:
76
- return '<';
77
- case delegua_1.default.MENOR_IGUAL:
78
- return '<=';
79
- case delegua_1.default.MODULO:
80
- return '%';
81
- case delegua_1.default.MULTIPLICACAO:
82
- return '*';
83
- case delegua_1.default.OU:
84
- return 'or';
85
- case delegua_1.default.SUBTRACAO:
86
- return '-';
87
- }
88
- }
89
- traduzirFuncoesNativas(metodo) {
90
- switch (metodo.toLowerCase()) {
91
- case 'adicionar':
92
- case 'empilhar':
93
- return 'append';
94
- case 'fatiar':
95
- return 'slice';
96
- case 'inclui':
97
- return 'in';
98
- case 'inverter':
99
- return 'reverse';
100
- case 'juntar':
101
- return 'join';
102
- case 'ordenar':
103
- return 'sort';
104
- case 'removerprimeiro':
105
- return 'pop(0)';
106
- case 'removerultimo':
107
- return 'pop';
108
- case 'tamanho':
109
- return 'len';
110
- case 'maiusculo':
111
- return 'upper';
112
- case 'minusculo':
113
- return 'lower';
114
- case 'substituir':
115
- return 'replace';
116
- default:
117
- return metodo;
118
- }
119
- }
120
- logicaComumBlocoEscopo(declaracoes) {
121
- let resultado = '';
122
- this.indentacao += 4;
123
- if (typeof declaracoes[Symbol.iterator] === 'function') {
124
- for (const declaracaoOuConstruto of declaracoes) {
125
- resultado += ' '.repeat(this.indentacao);
126
- const nomeConstrutor = declaracaoOuConstruto.constructor.name;
127
- if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
128
- resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
129
- }
130
- else {
131
- resultado += this.dicionarioDeclaracoes[nomeConstrutor](declaracaoOuConstruto);
132
- }
133
- resultado += '\n';
134
- }
135
- }
136
- this.indentacao -= 4;
137
- resultado += ' '.repeat(this.indentacao) + '\n';
138
- return resultado;
139
- }
140
- trazudirConstrutoAcessoMetodo(acessoMetodo) {
141
- if (acessoMetodo.objeto instanceof construtos_1.Variavel) {
142
- let objetoVariavel = acessoMetodo.objeto;
143
- let funcaoTraduzida = this.traduzirFuncoesNativas(acessoMetodo.simbolo.lexema);
144
- if (funcaoTraduzida === 'in') {
145
- return `in ${objetoVariavel.simbolo.lexema}`;
146
- }
147
- else if (funcaoTraduzida === 'len') {
148
- return `len(${objetoVariavel.simbolo.lexema})`;
149
- }
150
- return `${objetoVariavel.simbolo.lexema}.${funcaoTraduzida}`;
151
- }
152
- return `self.${acessoMetodo.simbolo.lexema}`;
153
- }
154
- traduzirConstrutoAgrupamento(agrupamento) {
155
- return this.dicionarioConstrutos[agrupamento.constructor.name](agrupamento.expressao || agrupamento);
156
- }
157
- traduzirConstrutoAtribuir(atribuir) {
158
- let resultado = atribuir.simbolo.lexema;
159
- resultado += ' = ' + this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
160
- return resultado;
161
- }
162
- traduzirConstrutoBinario(binario) {
163
- let resultado = '';
164
- if (binario.esquerda.constructor.name === 'Agrupamento')
165
- resultado += '(' + this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda) + ')';
166
- else
167
- resultado += this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
168
- let operador = this.traduzirSimboloOperador(binario.operador);
169
- resultado += ` ${operador} `;
170
- if (binario.direita.constructor.name === 'Agrupamento')
171
- resultado += '(' + this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita) + ')';
172
- else
173
- resultado += this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
174
- return resultado;
175
- }
176
- traduzirConstrutoChamada(chamada) {
177
- let resultado = '';
178
- const retorno = `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada)}`;
179
- resultado += retorno;
180
- if (!resultado.includes('in ') && !resultado.includes('len') && !resultado.includes('pop(')) {
181
- resultado += '(';
182
- }
183
- if (!resultado.includes('len(')) {
184
- for (let parametro of chamada.argumentos) {
185
- const parametroTratado = this.dicionarioConstrutos[parametro.constructor.name](parametro);
186
- if (resultado.includes('in ') || resultado.includes('len')) {
187
- resultado = `${parametroTratado} ${resultado}`;
188
- }
189
- else {
190
- resultado += parametroTratado + ', ';
191
- }
192
- }
193
- if (chamada.argumentos.length > 0 && !resultado.includes('in ') && !resultado.includes('len')) {
194
- resultado = resultado.slice(0, -2);
195
- }
196
- if (!resultado.includes(')') && !resultado.includes('in ')) {
197
- resultado += ')';
198
- }
199
- }
200
- return resultado;
201
- }
202
- traduzirConstrutoComentario(comentario) {
203
- let resultado = '';
204
- if (comentario.multilinha) {
205
- resultado += `'''`;
206
- for (let linhaComentario of comentario.conteudo) {
207
- resultado += `${linhaComentario}\n`;
208
- }
209
- resultado += `'''`;
210
- }
211
- else {
212
- resultado += `# ${comentario.conteudo}`;
213
- }
214
- return resultado;
215
- }
216
- traduzirConstrutoDefinirValor(definirValor) {
217
- let resultado = '';
218
- if (definirValor.objeto instanceof construtos_1.Isto) {
219
- resultado = 'self.' + definirValor.nome.lexema + ' = ';
220
- }
221
- resultado += definirValor.valor.simbolo.lexema;
222
- return resultado;
223
- }
224
- traduzirConstrutoLiteral(literal) {
225
- if (typeof literal.valor === 'string')
226
- return `'${literal.valor}'`;
227
- if (typeof literal.valor === 'boolean') {
228
- return literal.valor ? 'True' : 'False';
229
- }
230
- if (!literal.valor)
231
- return 'None';
232
- return literal.valor;
233
- }
234
- traduzirConstrutoLogico(logico) {
235
- let direita = this.dicionarioConstrutos[logico.direita.constructor.name](logico.direita);
236
- let operador = this.traduzirSimboloOperador(logico.operador);
237
- let esquerda = this.dicionarioConstrutos[logico.esquerda.constructor.name](logico.esquerda);
238
- return `${esquerda} ${operador} ${direita}`;
239
- }
240
- traduzirConstrutoVariavel(variavel) {
241
- return variavel.simbolo.lexema;
242
- }
243
- traduzirConstrutoVetor(vetor) {
244
- if (!vetor.valores.length) {
245
- return '[]';
246
- }
247
- let resultado = '[';
248
- for (let valor of vetor.valores) {
249
- resultado += `${this.dicionarioConstrutos[valor.constructor.name](valor)}, `;
250
- }
251
- if (vetor.valores.length > 0) {
252
- resultado = resultado.slice(0, -2);
253
- }
254
- resultado += ']';
255
- return resultado;
256
- }
257
- traduzirDeclaracaoSe(declaracaoSe, iniciarComIf = true) {
258
- let resultado = '';
259
- if (iniciarComIf) {
260
- resultado += 'if ';
261
- }
262
- else {
263
- resultado += 'elif ';
264
- }
265
- const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
266
- resultado += condicao;
267
- resultado += ':\n';
268
- resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
269
- if (declaracaoSe.caminhoSenao !== null) {
270
- resultado += ' '.repeat(this.indentacao);
271
- const se = declaracaoSe === null || declaracaoSe === void 0 ? void 0 : declaracaoSe.caminhoSenao;
272
- if (se === null || se === void 0 ? void 0 : se.caminhoEntao) {
273
- resultado += 'elif ';
274
- resultado += this.dicionarioConstrutos[se.condicao.constructor.name](se.condicao, false);
275
- resultado += ':\n';
276
- resultado += this.dicionarioDeclaracoes[se.caminhoEntao.constructor.name](se.caminhoEntao);
277
- resultado += ' '.repeat(this.indentacao);
278
- if (se === null || se === void 0 ? void 0 : se.caminhoSenao) {
279
- if (se.caminhoSenao instanceof declaracoes_1.Bloco) {
280
- resultado += 'else:\n';
281
- resultado += this.dicionarioDeclaracoes[se.caminhoSenao.constructor.name](se.caminhoSenao, false);
282
- return resultado;
283
- }
284
- else {
285
- resultado += this.dicionarioDeclaracoes[se.caminhoSenao.constructor.name](se.caminhoSenao, false);
286
- return resultado;
287
- }
288
- }
289
- }
290
- resultado += 'else:\n';
291
- resultado += ' '.repeat(this.indentacao);
292
- resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
293
- }
294
- return resultado;
295
- }
296
- logicaTraducaoMetodoClasse(metodoClasse) {
297
- this.indentacao += 4;
298
- let resultado = ' '.repeat(this.indentacao);
299
- let temContrutor = metodoClasse.simbolo.lexema === 'construtor';
300
- resultado += temContrutor ? 'def __init__(' : 'def ' + metodoClasse.simbolo.lexema + '(';
301
- let temParametros = metodoClasse.funcao.parametros.length;
302
- resultado += temParametros ? 'self, ' : 'self';
303
- for (let parametro of metodoClasse.funcao.parametros) {
304
- resultado += parametro.nome.lexema + ', ';
305
- }
306
- if (metodoClasse.funcao.parametros.length > 0) {
307
- resultado = resultado.slice(0, -2);
308
- }
309
- resultado += '):\n';
310
- if (metodoClasse.funcao.corpo.length === 0) {
311
- resultado += ' '.repeat(this.indentacao + 4);
312
- resultado += 'pass\n';
313
- this.indentacao -= 4;
314
- return resultado;
315
- }
316
- resultado += this.logicaComumBlocoEscopo(metodoClasse.funcao.corpo);
317
- resultado += ' '.repeat(this.indentacao) + '\n';
318
- this.indentacao -= 4;
319
- return resultado;
320
- }
321
- traduzirDeclaracaoBloco(declaracaoBloco) {
322
- return this.logicaComumBlocoEscopo(declaracaoBloco.declaracoes);
323
- }
324
- traduzirDeclaracaoClasse(declaracaoClasse) {
325
- let resultado = 'class ';
326
- if (declaracaoClasse.superClasse)
327
- resultado += `${declaracaoClasse.simbolo.lexema}(${declaracaoClasse.superClasse.simbolo.lexema}):\n`;
328
- else
329
- resultado += declaracaoClasse.simbolo.lexema + ':\n';
330
- if (declaracaoClasse.metodos.length === 0)
331
- return (resultado += ' pass\n');
332
- for (let metodo of declaracaoClasse.metodos) {
333
- resultado += this.logicaTraducaoMetodoClasse(metodo);
334
- }
335
- return resultado;
336
- }
337
- traduzirDeclaracaoConst(declaracaoConst) {
338
- let resultado = '';
339
- resultado += this.traduzirNomeVariavel(declaracaoConst.simbolo.lexema);
340
- resultado += ' = ';
341
- const inicializador = declaracaoConst.inicializador;
342
- if (inicializador) {
343
- if (this.dicionarioConstrutos[inicializador.constructor.name]) {
344
- resultado += this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
345
- }
346
- else {
347
- resultado += this.dicionarioDeclaracoes[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
348
- }
349
- }
350
- else {
351
- resultado += 'None';
352
- }
353
- return resultado;
354
- }
355
- traduzirDeclaracaoEscreva(declaracaoEscreva) {
356
- let resultado = 'print(';
357
- for (const argumento of declaracaoEscreva.argumentos) {
358
- const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
359
- resultado += valor + ', ';
360
- }
361
- resultado = resultado.slice(0, -2);
362
- resultado += ')';
363
- return resultado;
364
- }
365
- traduzirDeclaracaoExpressao(declaracaoExpressao) {
366
- return this.dicionarioConstrutos[declaracaoExpressao.expressao.constructor.name](declaracaoExpressao.expressao);
367
- }
368
- traduzirDeclaracaoFuncao(declaracaoFuncao) {
369
- let resultado = 'def ';
370
- resultado += declaracaoFuncao.simbolo.lexema + '(';
371
- for (const parametro of declaracaoFuncao.funcao.parametros) {
372
- resultado += parametro.nome.lexema + ', ';
373
- }
374
- if (declaracaoFuncao.funcao.parametros.length > 0) {
375
- resultado = resultado.slice(0, -2);
376
- }
377
- resultado += '):';
378
- resultado += this.logicaComumBlocoEscopo(declaracaoFuncao.funcao.corpo);
379
- return resultado;
380
- }
381
- traduzirDeclaracaoLeia(declaracaoLeia) {
382
- let resultado = 'input(';
383
- for (const argumento of declaracaoLeia.argumentos) {
384
- const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
385
- resultado += valor + ', ';
386
- }
387
- resultado = resultado.slice(0, -2);
388
- resultado += ')';
389
- return resultado;
390
- }
391
- traduzirDeclaracaoParaCada(declaracaoParaCada) {
392
- let resultado = `for ${declaracaoParaCada.nomeVariavelIteracao} in `;
393
- resultado +=
394
- this.dicionarioConstrutos[declaracaoParaCada.vetor.constructor.name](declaracaoParaCada.vetor) + ':\n';
395
- resultado += this.dicionarioDeclaracoes[declaracaoParaCada.corpo.constructor.name](declaracaoParaCada.corpo);
396
- return resultado;
397
- }
398
- traduzirDeclaracaoRetorna(declaracaoRetorna) {
399
- let resultado = 'return ';
400
- const nomeConstrutor = declaracaoRetorna.valor.constructor.name;
401
- return (resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoRetorna === null || declaracaoRetorna === void 0 ? void 0 : declaracaoRetorna.valor));
402
- }
403
- traduzirDeclaracaoTente(declaracaoTente) {
404
- let resultado = 'try:\n';
405
- this.indentacao += 4;
406
- resultado += ' '.repeat(this.indentacao);
407
- for (let condicao of declaracaoTente.caminhoTente) {
408
- resultado += this.dicionarioDeclaracoes[condicao.constructor.name](condicao) + '\n';
409
- resultado += ' '.repeat(this.indentacao);
410
- }
411
- if (declaracaoTente.caminhoPegue !== null) {
412
- resultado += '\nexcept:\n';
413
- resultado += ' '.repeat(this.indentacao);
414
- if (Array.isArray(declaracaoTente.caminhoPegue)) {
415
- for (let declaracao of declaracaoTente.caminhoPegue) {
416
- resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
417
- }
418
- }
419
- else {
420
- for (let corpo of declaracaoTente.caminhoPegue.corpo) {
421
- resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
422
- }
423
- }
424
- resultado += ' '.repeat(this.indentacao);
425
- }
426
- if (declaracaoTente.caminhoFinalmente !== null) {
427
- resultado += '\nfinally:\n';
428
- resultado += ' '.repeat(this.indentacao);
429
- for (let finalmente of declaracaoTente.caminhoFinalmente) {
430
- resultado += this.dicionarioDeclaracoes[finalmente.constructor.name](finalmente) + '\n';
431
- }
432
- }
433
- return resultado;
434
- }
435
- traduzirDeclaracaoVar(declaracaoVar) {
436
- let resultado = '';
437
- resultado += this.traduzirNomeVariavel(declaracaoVar.simbolo.lexema);
438
- resultado += ' = ';
439
- const inicializador = declaracaoVar.inicializador;
440
- if (inicializador) {
441
- if (this.dicionarioConstrutos[inicializador.constructor.name]) {
442
- resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
443
- }
444
- else {
445
- resultado += this.dicionarioDeclaracoes[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
446
- }
447
- }
448
- else {
449
- resultado += 'None';
450
- }
451
- return resultado;
452
- }
453
- traduzir(declaracoes) {
454
- let resultado = '';
455
- for (const declaracao of declaracoes) {
456
- resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`;
457
- }
458
- return resultado.replace(/\n{2,}/g, '\n');
459
- }
460
- }
461
- exports.TradutorPython = TradutorPython;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TradutorPython = void 0;
7
+ const construtos_1 = require("../construtos");
8
+ const declaracoes_1 = require("../declaracoes");
9
+ const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
10
+ class TradutorPython {
11
+ constructor() {
12
+ this.indentacao = 0;
13
+ this.dicionarioConstrutos = {
14
+ AcessoMetodoOuPropriedade: this.trazudirConstrutoAcessoMetodo.bind(this),
15
+ Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
16
+ Atribuir: this.traduzirConstrutoAtribuir.bind(this),
17
+ Binario: this.traduzirConstrutoBinario.bind(this),
18
+ Chamada: this.traduzirConstrutoChamada.bind(this),
19
+ Comentario: this.traduzirConstrutoComentario.bind(this),
20
+ DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
21
+ Literal: this.traduzirConstrutoLiteral.bind(this),
22
+ Logico: this.traduzirConstrutoLogico.bind(this),
23
+ Variavel: this.traduzirConstrutoVariavel.bind(this),
24
+ Vetor: this.traduzirConstrutoVetor.bind(this),
25
+ };
26
+ this.dicionarioDeclaracoes = {
27
+ Bloco: this.traduzirDeclaracaoBloco.bind(this),
28
+ Classe: this.traduzirDeclaracaoClasse.bind(this),
29
+ Comentario: this.traduzirConstrutoComentario.bind(this),
30
+ Const: this.traduzirDeclaracaoConst.bind(this),
31
+ Continua: () => 'continue',
32
+ Escreva: this.traduzirDeclaracaoEscreva.bind(this),
33
+ Expressao: this.traduzirDeclaracaoExpressao.bind(this),
34
+ FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
35
+ Leia: this.traduzirDeclaracaoLeia.bind(this),
36
+ ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
37
+ Retorna: this.traduzirDeclaracaoRetorna.bind(this),
38
+ Se: this.traduzirDeclaracaoSe.bind(this),
39
+ Sustar: () => 'break',
40
+ Tente: this.traduzirDeclaracaoTente.bind(this),
41
+ Var: this.traduzirDeclaracaoVar.bind(this),
42
+ };
43
+ }
44
+ traduzirNomeVariavel(variavel) {
45
+ return variavel.replace(/\.?([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '');
46
+ }
47
+ traduzirSimboloOperador(operador) {
48
+ switch (operador.tipo) {
49
+ case delegua_1.default.ADICAO:
50
+ return '+';
51
+ case delegua_1.default.BIT_AND:
52
+ return '&';
53
+ case delegua_1.default.BIT_OR:
54
+ return '|';
55
+ case delegua_1.default.BIT_XOR:
56
+ return '^';
57
+ case delegua_1.default.BIT_NOT:
58
+ return '~';
59
+ case delegua_1.default.DIFERENTE:
60
+ return '!=';
61
+ case delegua_1.default.DIVISAO:
62
+ return '/';
63
+ case delegua_1.default.E:
64
+ return 'and';
65
+ case delegua_1.default.EXPONENCIACAO:
66
+ return '**';
67
+ case delegua_1.default.IGUAL:
68
+ return '=';
69
+ case delegua_1.default.IGUAL_IGUAL:
70
+ return '==';
71
+ case delegua_1.default.MAIOR:
72
+ return '>';
73
+ case delegua_1.default.MAIOR_IGUAL:
74
+ return '>=';
75
+ case delegua_1.default.MENOR:
76
+ return '<';
77
+ case delegua_1.default.MENOR_IGUAL:
78
+ return '<=';
79
+ case delegua_1.default.MODULO:
80
+ return '%';
81
+ case delegua_1.default.MULTIPLICACAO:
82
+ return '*';
83
+ case delegua_1.default.OU:
84
+ return 'or';
85
+ case delegua_1.default.SUBTRACAO:
86
+ return '-';
87
+ }
88
+ }
89
+ traduzirFuncoesNativas(metodo) {
90
+ switch (metodo.toLowerCase()) {
91
+ case 'adicionar':
92
+ case 'empilhar':
93
+ return 'append';
94
+ case 'fatiar':
95
+ return 'slice';
96
+ case 'inclui':
97
+ return 'in';
98
+ case 'inverter':
99
+ return 'reverse';
100
+ case 'juntar':
101
+ return 'join';
102
+ case 'ordenar':
103
+ return 'sort';
104
+ case 'removerprimeiro':
105
+ return 'pop(0)';
106
+ case 'removerultimo':
107
+ return 'pop';
108
+ case 'tamanho':
109
+ return 'len';
110
+ case 'maiusculo':
111
+ return 'upper';
112
+ case 'minusculo':
113
+ return 'lower';
114
+ case 'substituir':
115
+ return 'replace';
116
+ default:
117
+ return metodo;
118
+ }
119
+ }
120
+ logicaComumBlocoEscopo(declaracoes) {
121
+ let resultado = '';
122
+ this.indentacao += 4;
123
+ if (typeof declaracoes[Symbol.iterator] === 'function') {
124
+ for (const declaracaoOuConstruto of declaracoes) {
125
+ resultado += ' '.repeat(this.indentacao);
126
+ const nomeConstrutor = declaracaoOuConstruto.constructor.name;
127
+ if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
128
+ resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
129
+ }
130
+ else {
131
+ resultado += this.dicionarioDeclaracoes[nomeConstrutor](declaracaoOuConstruto);
132
+ }
133
+ resultado += '\n';
134
+ }
135
+ }
136
+ this.indentacao -= 4;
137
+ resultado += ' '.repeat(this.indentacao) + '\n';
138
+ return resultado;
139
+ }
140
+ trazudirConstrutoAcessoMetodo(acessoMetodo) {
141
+ if (acessoMetodo.objeto instanceof construtos_1.Variavel) {
142
+ let objetoVariavel = acessoMetodo.objeto;
143
+ let funcaoTraduzida = this.traduzirFuncoesNativas(acessoMetodo.simbolo.lexema);
144
+ if (funcaoTraduzida === 'in') {
145
+ return `in ${objetoVariavel.simbolo.lexema}`;
146
+ }
147
+ else if (funcaoTraduzida === 'len') {
148
+ return `len(${objetoVariavel.simbolo.lexema})`;
149
+ }
150
+ return `${objetoVariavel.simbolo.lexema}.${funcaoTraduzida}`;
151
+ }
152
+ return `self.${acessoMetodo.simbolo.lexema}`;
153
+ }
154
+ traduzirConstrutoAgrupamento(agrupamento) {
155
+ return this.dicionarioConstrutos[agrupamento.constructor.name](agrupamento.expressao || agrupamento);
156
+ }
157
+ traduzirConstrutoAtribuir(atribuir) {
158
+ let resultado = atribuir.simbolo.lexema;
159
+ resultado += ' = ' + this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
160
+ return resultado;
161
+ }
162
+ traduzirConstrutoBinario(binario) {
163
+ let resultado = '';
164
+ if (binario.esquerda.constructor.name === 'Agrupamento')
165
+ resultado += '(' + this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda) + ')';
166
+ else
167
+ resultado += this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
168
+ let operador = this.traduzirSimboloOperador(binario.operador);
169
+ resultado += ` ${operador} `;
170
+ if (binario.direita.constructor.name === 'Agrupamento')
171
+ resultado += '(' + this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita) + ')';
172
+ else
173
+ resultado += this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
174
+ return resultado;
175
+ }
176
+ traduzirConstrutoChamada(chamada) {
177
+ let resultado = '';
178
+ const retorno = `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada)}`;
179
+ resultado += retorno;
180
+ if (!resultado.includes('in ') && !resultado.includes('len') && !resultado.includes('pop(')) {
181
+ resultado += '(';
182
+ }
183
+ if (!resultado.includes('len(')) {
184
+ for (let parametro of chamada.argumentos) {
185
+ const parametroTratado = this.dicionarioConstrutos[parametro.constructor.name](parametro);
186
+ if (resultado.includes('in ') || resultado.includes('len')) {
187
+ resultado = `${parametroTratado} ${resultado}`;
188
+ }
189
+ else {
190
+ resultado += parametroTratado + ', ';
191
+ }
192
+ }
193
+ if (chamada.argumentos.length > 0 && !resultado.includes('in ') && !resultado.includes('len')) {
194
+ resultado = resultado.slice(0, -2);
195
+ }
196
+ if (!resultado.includes(')') && !resultado.includes('in ')) {
197
+ resultado += ')';
198
+ }
199
+ }
200
+ return resultado;
201
+ }
202
+ traduzirConstrutoComentario(comentario) {
203
+ let resultado = '';
204
+ if (comentario.multilinha) {
205
+ resultado += `'''`;
206
+ for (let linhaComentario of comentario.conteudo) {
207
+ resultado += `${linhaComentario}\n`;
208
+ }
209
+ resultado += `'''`;
210
+ }
211
+ else {
212
+ resultado += `# ${comentario.conteudo}`;
213
+ }
214
+ return resultado;
215
+ }
216
+ traduzirConstrutoDefinirValor(definirValor) {
217
+ let resultado = '';
218
+ if (definirValor.objeto instanceof construtos_1.Isto) {
219
+ resultado = 'self.' + definirValor.nome.lexema + ' = ';
220
+ }
221
+ resultado += definirValor.valor.simbolo.lexema;
222
+ return resultado;
223
+ }
224
+ traduzirConstrutoLiteral(literal) {
225
+ if (typeof literal.valor === 'string')
226
+ return `'${literal.valor}'`;
227
+ if (typeof literal.valor === 'boolean') {
228
+ return literal.valor ? 'True' : 'False';
229
+ }
230
+ if (!literal.valor)
231
+ return 'None';
232
+ return literal.valor;
233
+ }
234
+ traduzirConstrutoLogico(logico) {
235
+ let direita = this.dicionarioConstrutos[logico.direita.constructor.name](logico.direita);
236
+ let operador = this.traduzirSimboloOperador(logico.operador);
237
+ let esquerda = this.dicionarioConstrutos[logico.esquerda.constructor.name](logico.esquerda);
238
+ return `${esquerda} ${operador} ${direita}`;
239
+ }
240
+ traduzirConstrutoVariavel(variavel) {
241
+ return variavel.simbolo.lexema;
242
+ }
243
+ traduzirConstrutoVetor(vetor) {
244
+ if (!vetor.valores.length) {
245
+ return '[]';
246
+ }
247
+ let resultado = '[';
248
+ for (let valor of vetor.valores) {
249
+ resultado += `${this.dicionarioConstrutos[valor.constructor.name](valor)}, `;
250
+ }
251
+ if (vetor.valores.length > 0) {
252
+ resultado = resultado.slice(0, -2);
253
+ }
254
+ resultado += ']';
255
+ return resultado;
256
+ }
257
+ traduzirDeclaracaoSe(declaracaoSe, iniciarComIf = true) {
258
+ let resultado = '';
259
+ if (iniciarComIf) {
260
+ resultado += 'if ';
261
+ }
262
+ else {
263
+ resultado += 'elif ';
264
+ }
265
+ const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
266
+ resultado += condicao;
267
+ resultado += ':\n';
268
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
269
+ if (declaracaoSe.caminhoSenao !== null) {
270
+ resultado += ' '.repeat(this.indentacao);
271
+ const se = declaracaoSe === null || declaracaoSe === void 0 ? void 0 : declaracaoSe.caminhoSenao;
272
+ if (se === null || se === void 0 ? void 0 : se.caminhoEntao) {
273
+ resultado += 'elif ';
274
+ resultado += this.dicionarioConstrutos[se.condicao.constructor.name](se.condicao, false);
275
+ resultado += ':\n';
276
+ resultado += this.dicionarioDeclaracoes[se.caminhoEntao.constructor.name](se.caminhoEntao);
277
+ resultado += ' '.repeat(this.indentacao);
278
+ if (se === null || se === void 0 ? void 0 : se.caminhoSenao) {
279
+ if (se.caminhoSenao instanceof declaracoes_1.Bloco) {
280
+ resultado += 'else:\n';
281
+ resultado += this.dicionarioDeclaracoes[se.caminhoSenao.constructor.name](se.caminhoSenao, false);
282
+ return resultado;
283
+ }
284
+ else {
285
+ resultado += this.dicionarioDeclaracoes[se.caminhoSenao.constructor.name](se.caminhoSenao, false);
286
+ return resultado;
287
+ }
288
+ }
289
+ }
290
+ resultado += 'else:\n';
291
+ resultado += ' '.repeat(this.indentacao);
292
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
293
+ }
294
+ return resultado;
295
+ }
296
+ logicaTraducaoMetodoClasse(metodoClasse) {
297
+ this.indentacao += 4;
298
+ let resultado = ' '.repeat(this.indentacao);
299
+ let temContrutor = metodoClasse.simbolo.lexema === 'construtor';
300
+ resultado += temContrutor ? 'def __init__(' : 'def ' + metodoClasse.simbolo.lexema + '(';
301
+ let temParametros = metodoClasse.funcao.parametros.length;
302
+ resultado += temParametros ? 'self, ' : 'self';
303
+ for (let parametro of metodoClasse.funcao.parametros) {
304
+ resultado += parametro.nome.lexema + ', ';
305
+ }
306
+ if (metodoClasse.funcao.parametros.length > 0) {
307
+ resultado = resultado.slice(0, -2);
308
+ }
309
+ resultado += '):\n';
310
+ if (metodoClasse.funcao.corpo.length === 0) {
311
+ resultado += ' '.repeat(this.indentacao + 4);
312
+ resultado += 'pass\n';
313
+ this.indentacao -= 4;
314
+ return resultado;
315
+ }
316
+ resultado += this.logicaComumBlocoEscopo(metodoClasse.funcao.corpo);
317
+ resultado += ' '.repeat(this.indentacao) + '\n';
318
+ this.indentacao -= 4;
319
+ return resultado;
320
+ }
321
+ traduzirDeclaracaoBloco(declaracaoBloco) {
322
+ return this.logicaComumBlocoEscopo(declaracaoBloco.declaracoes);
323
+ }
324
+ traduzirDeclaracaoClasse(declaracaoClasse) {
325
+ let resultado = 'class ';
326
+ if (declaracaoClasse.superClasse)
327
+ resultado += `${declaracaoClasse.simbolo.lexema}(${declaracaoClasse.superClasse.simbolo.lexema}):\n`;
328
+ else
329
+ resultado += declaracaoClasse.simbolo.lexema + ':\n';
330
+ if (declaracaoClasse.metodos.length === 0)
331
+ return (resultado += ' pass\n');
332
+ for (let metodo of declaracaoClasse.metodos) {
333
+ resultado += this.logicaTraducaoMetodoClasse(metodo);
334
+ }
335
+ return resultado;
336
+ }
337
+ traduzirDeclaracaoConst(declaracaoConst) {
338
+ let resultado = '';
339
+ resultado += this.traduzirNomeVariavel(declaracaoConst.simbolo.lexema);
340
+ resultado += ' = ';
341
+ const inicializador = declaracaoConst.inicializador;
342
+ if (inicializador) {
343
+ if (this.dicionarioConstrutos[inicializador.constructor.name]) {
344
+ resultado += this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
345
+ }
346
+ else {
347
+ resultado += this.dicionarioDeclaracoes[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
348
+ }
349
+ }
350
+ else {
351
+ resultado += 'None';
352
+ }
353
+ return resultado;
354
+ }
355
+ traduzirDeclaracaoEscreva(declaracaoEscreva) {
356
+ let resultado = 'print(';
357
+ for (const argumento of declaracaoEscreva.argumentos) {
358
+ const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
359
+ resultado += valor + ', ';
360
+ }
361
+ resultado = resultado.slice(0, -2);
362
+ resultado += ')';
363
+ return resultado;
364
+ }
365
+ traduzirDeclaracaoExpressao(declaracaoExpressao) {
366
+ return this.dicionarioConstrutos[declaracaoExpressao.expressao.constructor.name](declaracaoExpressao.expressao);
367
+ }
368
+ traduzirDeclaracaoFuncao(declaracaoFuncao) {
369
+ let resultado = 'def ';
370
+ resultado += declaracaoFuncao.simbolo.lexema + '(';
371
+ for (const parametro of declaracaoFuncao.funcao.parametros) {
372
+ resultado += parametro.nome.lexema + ', ';
373
+ }
374
+ if (declaracaoFuncao.funcao.parametros.length > 0) {
375
+ resultado = resultado.slice(0, -2);
376
+ }
377
+ resultado += '):';
378
+ resultado += this.logicaComumBlocoEscopo(declaracaoFuncao.funcao.corpo);
379
+ return resultado;
380
+ }
381
+ traduzirDeclaracaoLeia(declaracaoLeia) {
382
+ let resultado = 'input(';
383
+ for (const argumento of declaracaoLeia.argumentos) {
384
+ const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
385
+ resultado += valor + ', ';
386
+ }
387
+ resultado = resultado.slice(0, -2);
388
+ resultado += ')';
389
+ return resultado;
390
+ }
391
+ traduzirDeclaracaoParaCada(declaracaoParaCada) {
392
+ let resultado = `for ${declaracaoParaCada.nomeVariavelIteracao} in `;
393
+ resultado +=
394
+ this.dicionarioConstrutos[declaracaoParaCada.vetor.constructor.name](declaracaoParaCada.vetor) + ':\n';
395
+ resultado += this.dicionarioDeclaracoes[declaracaoParaCada.corpo.constructor.name](declaracaoParaCada.corpo);
396
+ return resultado;
397
+ }
398
+ traduzirDeclaracaoRetorna(declaracaoRetorna) {
399
+ let resultado = 'return ';
400
+ const nomeConstrutor = declaracaoRetorna.valor.constructor.name;
401
+ return (resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoRetorna === null || declaracaoRetorna === void 0 ? void 0 : declaracaoRetorna.valor));
402
+ }
403
+ traduzirDeclaracaoTente(declaracaoTente) {
404
+ let resultado = 'try:\n';
405
+ this.indentacao += 4;
406
+ resultado += ' '.repeat(this.indentacao);
407
+ for (let condicao of declaracaoTente.caminhoTente) {
408
+ resultado += this.dicionarioDeclaracoes[condicao.constructor.name](condicao) + '\n';
409
+ resultado += ' '.repeat(this.indentacao);
410
+ }
411
+ if (declaracaoTente.caminhoPegue !== null) {
412
+ resultado += '\nexcept:\n';
413
+ resultado += ' '.repeat(this.indentacao);
414
+ if (Array.isArray(declaracaoTente.caminhoPegue)) {
415
+ for (let declaracao of declaracaoTente.caminhoPegue) {
416
+ resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
417
+ }
418
+ }
419
+ else {
420
+ for (let corpo of declaracaoTente.caminhoPegue.corpo) {
421
+ resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
422
+ }
423
+ }
424
+ resultado += ' '.repeat(this.indentacao);
425
+ }
426
+ if (declaracaoTente.caminhoFinalmente !== null) {
427
+ resultado += '\nfinally:\n';
428
+ resultado += ' '.repeat(this.indentacao);
429
+ for (let finalmente of declaracaoTente.caminhoFinalmente) {
430
+ resultado += this.dicionarioDeclaracoes[finalmente.constructor.name](finalmente) + '\n';
431
+ }
432
+ }
433
+ return resultado;
434
+ }
435
+ traduzirDeclaracaoVar(declaracaoVar) {
436
+ let resultado = '';
437
+ resultado += this.traduzirNomeVariavel(declaracaoVar.simbolo.lexema);
438
+ resultado += ' = ';
439
+ const inicializador = declaracaoVar.inicializador;
440
+ if (inicializador) {
441
+ if (this.dicionarioConstrutos[inicializador.constructor.name]) {
442
+ resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
443
+ }
444
+ else {
445
+ resultado += this.dicionarioDeclaracoes[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
446
+ }
447
+ }
448
+ else {
449
+ resultado += 'None';
450
+ }
451
+ return resultado;
452
+ }
453
+ traduzir(declaracoes) {
454
+ let resultado = '';
455
+ for (const declaracao of declaracoes) {
456
+ resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`;
457
+ }
458
+ return resultado.replace(/\n{2,}/g, '\n');
459
+ }
460
+ }
461
+ exports.TradutorPython = TradutorPython;
462
462
  //# sourceMappingURL=tradutor-python.js.map