@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,578 +1,578 @@
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.TradutorJavaScript = 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
- /**
11
- * Esse tradutor traduz para JavaScript sem módulos, o que significa que
12
- * instruções em Delégua como `leia()` e `importar()` não são suportadas.
13
- * O tradutor levantará mensagem de alerta toda vez que essas instruções são encontradas.
14
- */
15
- class TradutorJavaScript {
16
- constructor() {
17
- this.indentacao = 0;
18
- this.dicionarioConstrutos = {
19
- AcessoIndiceVariavel: this.traduzirAcessoIndiceVariavel.bind(this),
20
- AcessoMetodoOuPropriedade: this.traduzirConstrutoAcessoMetodo.bind(this),
21
- Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
22
- AtribuicaoPorIndice: this.traduzirConstrutoAtribuicaoPorIndice.bind(this),
23
- Atribuir: this.traduzirConstrutoAtribuir.bind(this),
24
- Binario: this.traduzirConstrutoBinario.bind(this),
25
- Chamada: this.traduzirConstrutoChamada.bind(this),
26
- Comentario: this.traduzirConstrutoComentario.bind(this),
27
- DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
28
- FuncaoConstruto: this.traduzirFuncaoConstruto.bind(this),
29
- Isto: () => 'this',
30
- Literal: this.traduzirConstrutoLiteral.bind(this),
31
- Logico: this.traduzirConstrutoLogico.bind(this),
32
- TipoDe: this.traduzirConstrutoTipoDe.bind(this),
33
- Unario: this.traduzirConstrutoUnario.bind(this),
34
- Variavel: this.traduzirConstrutoVariavel.bind(this),
35
- Vetor: this.traduzirConstrutoVetor.bind(this),
36
- };
37
- this.dicionarioDeclaracoes = {
38
- Bloco: this.traduzirDeclaracaoBloco.bind(this),
39
- Classe: this.traduzirDeclaracaoClasse.bind(this),
40
- Const: this.traduzirDeclaracaoConst.bind(this),
41
- Comentario: this.traduzirConstrutoComentario.bind(this),
42
- Continua: () => 'continue',
43
- Enquanto: this.traduzirDeclaracaoEnquanto.bind(this),
44
- Escolha: this.traduzirDeclaracaoEscolha.bind(this),
45
- Escreva: this.traduzirDeclaracaoEscreva.bind(this),
46
- Expressao: this.traduzirDeclaracaoExpressao.bind(this),
47
- Fazer: this.traduzirDeclaracaoFazer.bind(this),
48
- Falhar: this.traduzirDeclaracaoFalhar.bind(this),
49
- FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
50
- Importar: this.traduzirDeclaracaoImportar.bind(this),
51
- Leia: this.traduzirDeclaracaoLeia.bind(this),
52
- Para: this.traduzirDeclaracaoPara.bind(this),
53
- ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
54
- Retorna: this.traduzirDeclaracaoRetorna.bind(this),
55
- Se: this.traduzirDeclaracaoSe.bind(this),
56
- Sustar: () => 'break',
57
- Tente: this.traduzirDeclaracaoTente.bind(this),
58
- Var: this.traduzirDeclaracaoVar.bind(this),
59
- };
60
- }
61
- traduzirSimboloOperador(operador) {
62
- switch (operador.tipo) {
63
- case delegua_1.default.ADICAO:
64
- return '+';
65
- case delegua_1.default.BIT_AND:
66
- return '&';
67
- case delegua_1.default.BIT_OR:
68
- return '|';
69
- case delegua_1.default.BIT_XOR:
70
- return '^';
71
- case delegua_1.default.BIT_NOT:
72
- return '~';
73
- case delegua_1.default.DIFERENTE:
74
- return '!==';
75
- case delegua_1.default.DIVISAO:
76
- return '/';
77
- case delegua_1.default.E:
78
- return '&&';
79
- case delegua_1.default.EXPONENCIACAO:
80
- return '**';
81
- case delegua_1.default.IGUAL:
82
- return '=';
83
- case delegua_1.default.IGUAL_IGUAL:
84
- return '===';
85
- case delegua_1.default.MAIOR:
86
- return '>';
87
- case delegua_1.default.MAIOR_IGUAL:
88
- return '>=';
89
- case delegua_1.default.MENOR:
90
- return '<';
91
- case delegua_1.default.MENOR_IGUAL:
92
- return '<=';
93
- case delegua_1.default.MODULO:
94
- return '%';
95
- case delegua_1.default.MULTIPLICACAO:
96
- return '*';
97
- case delegua_1.default.OU:
98
- return '||';
99
- case delegua_1.default.SUBTRACAO:
100
- return '-';
101
- }
102
- }
103
- //TODO: @Samuel
104
- traduzirFuncoesNativas(metodo) {
105
- switch (metodo.toLowerCase()) {
106
- case 'adicionar':
107
- case 'empilhar':
108
- return 'push';
109
- case 'concatenar':
110
- return 'concat';
111
- case 'fatiar':
112
- return 'slice';
113
- case 'inclui':
114
- return 'includes';
115
- case 'inverter':
116
- return 'reverse';
117
- case 'juntar':
118
- return 'join';
119
- case 'ordenar':
120
- return 'sort';
121
- case 'removerprimeiro':
122
- return 'shift';
123
- case 'removerultimo':
124
- return 'pop';
125
- case 'tamanho':
126
- return 'length';
127
- case 'maiusculo':
128
- return 'toUpperCase';
129
- case 'minusculo':
130
- return 'toLowerCase';
131
- case 'substituir':
132
- return 'replace';
133
- default:
134
- return metodo;
135
- }
136
- }
137
- traduzirConstrutoAgrupamento(agrupamento) {
138
- return this.dicionarioConstrutos[agrupamento.constructor.name](agrupamento.expressao || agrupamento);
139
- }
140
- traduzirConstrutoAtribuir(atribuir) {
141
- let resultado = atribuir.simbolo.lexema;
142
- resultado += ' = ' + this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
143
- return resultado;
144
- }
145
- traduzirConstrutoBinario(binario) {
146
- let resultado = '';
147
- if (binario.esquerda.constructor.name === 'Agrupamento')
148
- resultado += '(' + this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda) + ')';
149
- else
150
- resultado += this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
151
- let operador = this.traduzirSimboloOperador(binario.operador);
152
- resultado += ` ${operador} `;
153
- if (binario.direita.constructor.name === 'Agrupamento')
154
- resultado += '(' + this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita) + ')';
155
- else
156
- resultado += this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
157
- return resultado;
158
- }
159
- traduzirConstrutoDefinirValor(definirValor) {
160
- let resultado = '';
161
- if (definirValor.objeto instanceof construtos_1.Isto) {
162
- resultado = 'this.' + definirValor.nome.lexema + ' = ';
163
- }
164
- resultado += definirValor.valor.simbolo.lexema;
165
- return resultado;
166
- }
167
- traduzirConstrutoLiteral(literal) {
168
- if (typeof literal.valor === 'string')
169
- return `'${literal.valor}'`;
170
- return literal.valor;
171
- }
172
- traduzirConstrutoVariavel(variavel) {
173
- return variavel.simbolo.lexema;
174
- }
175
- traduzirConstrutoChamada(chamada) {
176
- let resultado = '';
177
- const retorno = `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada)}`;
178
- const instanciaClasse = this.declaracoesDeClasses.some((declaracao) => { var _a; return ((_a = declaracao === null || declaracao === void 0 ? void 0 : declaracao.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) === retorno; });
179
- if (instanciaClasse) {
180
- const classe = this.declaracoesDeClasses.find((declaracao) => { var _a; return ((_a = declaracao === null || declaracao === void 0 ? void 0 : declaracao.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) === retorno; });
181
- if (classe.simbolo.lexema === retorno)
182
- resultado += `new ${retorno}`;
183
- }
184
- else {
185
- resultado += retorno;
186
- }
187
- if (!retorno.endsWith('length')) {
188
- resultado += '(';
189
- }
190
- for (let parametro of chamada.argumentos) {
191
- resultado += this.dicionarioConstrutos[parametro.constructor.name](parametro) + ', ';
192
- }
193
- if (chamada.argumentos.length > 0) {
194
- resultado = resultado.slice(0, -2);
195
- }
196
- if (!retorno.endsWith('length')) {
197
- resultado += ')';
198
- }
199
- return resultado;
200
- }
201
- traduzirConstrutoComentario(comentario) {
202
- let resultado = '';
203
- if (comentario.multilinha) {
204
- resultado += `/*`;
205
- for (let linhaComentario of comentario.conteudo) {
206
- resultado += `${linhaComentario}\n`;
207
- }
208
- resultado += `*/`;
209
- }
210
- else {
211
- resultado += `// ${comentario.conteudo}`;
212
- }
213
- return resultado;
214
- }
215
- logicaComumBlocoEscopo(declaracoes) {
216
- let resultado = '{\n';
217
- this.indentacao += 4;
218
- if (typeof declaracoes[Symbol.iterator] === 'function') {
219
- for (const declaracaoOuConstruto of declaracoes) {
220
- resultado += ' '.repeat(this.indentacao);
221
- const nomeConstrutor = declaracaoOuConstruto.constructor.name;
222
- if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
223
- resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
224
- }
225
- else {
226
- resultado += this.dicionarioDeclaracoes[nomeConstrutor](declaracaoOuConstruto);
227
- }
228
- resultado += '\n';
229
- }
230
- }
231
- this.indentacao -= 4;
232
- resultado += ' '.repeat(this.indentacao) + '}\n';
233
- return resultado;
234
- }
235
- traduzirDeclaracaoBloco(declaracaoBloco) {
236
- return this.logicaComumBlocoEscopo(declaracaoBloco.declaracoes);
237
- }
238
- logicaTraducaoMetodoClasse(metodoClasse) {
239
- this.indentacao += 4;
240
- let resultado = ' '.repeat(this.indentacao);
241
- resultado += metodoClasse.simbolo.lexema === 'construtor' ? 'constructor(' : metodoClasse.simbolo.lexema + '(';
242
- for (let parametro of metodoClasse.funcao.parametros) {
243
- resultado += parametro.nome.lexema + ', ';
244
- }
245
- if (metodoClasse.funcao.parametros.length > 0) {
246
- resultado = resultado.slice(0, -2);
247
- }
248
- resultado += ') ';
249
- resultado += this.logicaComumBlocoEscopo(metodoClasse.funcao.corpo);
250
- resultado += ' '.repeat(this.indentacao) + '\n';
251
- this.indentacao -= 4;
252
- return resultado;
253
- }
254
- traduzirDeclaracaoClasse(declaracaoClasse) {
255
- let resultado = 'export class ';
256
- if (declaracaoClasse.superClasse)
257
- resultado += `${declaracaoClasse.simbolo.lexema} extends ${declaracaoClasse.superClasse.simbolo.lexema} {\n`;
258
- else
259
- resultado += declaracaoClasse.simbolo.lexema + ' {\n';
260
- for (let metodo of declaracaoClasse.metodos) {
261
- resultado += this.logicaTraducaoMetodoClasse(metodo);
262
- }
263
- resultado += '}';
264
- return resultado;
265
- }
266
- traduzirDeclaracaoEnquanto(declaracaoEnquanto) {
267
- let resultado = 'while (';
268
- resultado +=
269
- this.dicionarioConstrutos[declaracaoEnquanto.condicao.constructor.name](declaracaoEnquanto.condicao) + ') ';
270
- resultado += this.dicionarioDeclaracoes[declaracaoEnquanto.corpo.constructor.name](declaracaoEnquanto.corpo);
271
- return resultado;
272
- }
273
- logicaComumCaminhosEscolha(caminho) {
274
- var _a, _b, _c;
275
- let resultado = '';
276
- this.indentacao += 4;
277
- resultado += ' '.repeat(this.indentacao);
278
- if ((_a = caminho === null || caminho === void 0 ? void 0 : caminho.condicoes) === null || _a === void 0 ? void 0 : _a.length) {
279
- for (let condicao of caminho.condicoes) {
280
- resultado += 'case ' + this.dicionarioConstrutos[condicao.constructor.name](condicao) + ':\n';
281
- resultado += ' '.repeat(this.indentacao);
282
- }
283
- }
284
- if ((_b = caminho === null || caminho === void 0 ? void 0 : caminho.declaracoes) === null || _b === void 0 ? void 0 : _b.length) {
285
- for (let declaracao of caminho.declaracoes) {
286
- resultado += ' '.repeat(this.indentacao + 4);
287
- if (((_c = declaracao === null || declaracao === void 0 ? void 0 : declaracao.simboloChave) === null || _c === void 0 ? void 0 : _c.lexema) === 'retorna') {
288
- resultado +=
289
- 'return ' + this.dicionarioConstrutos[declaracao.valor.constructor.name](declaracao.valor);
290
- }
291
- resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
292
- }
293
- resultado += ' '.repeat(this.indentacao + 4);
294
- resultado += 'break' + '\n';
295
- }
296
- this.indentacao -= 4;
297
- return resultado;
298
- }
299
- traduzirDeclaracaoEscolha(declaracaoEscolha) {
300
- let resultado = 'switch (';
301
- resultado +=
302
- this.dicionarioConstrutos[declaracaoEscolha.identificadorOuLiteral.constructor.name](declaracaoEscolha.identificadorOuLiteral) + ') {\n';
303
- for (let caminho of declaracaoEscolha.caminhos) {
304
- resultado += this.logicaComumCaminhosEscolha(caminho);
305
- }
306
- if (declaracaoEscolha.caminhoPadrao) {
307
- resultado += ' '.repeat(4);
308
- resultado += 'default:\n';
309
- resultado += this.logicaComumCaminhosEscolha(declaracaoEscolha.caminhoPadrao);
310
- }
311
- resultado += '}\n';
312
- return resultado;
313
- }
314
- traduzirDeclaracaoEscreva(declaracaoEscreva) {
315
- let resultado = 'console.log(';
316
- for (const argumento of declaracaoEscreva.argumentos) {
317
- const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
318
- resultado += valor + ', ';
319
- }
320
- resultado = resultado.slice(0, -2);
321
- resultado += ')';
322
- return resultado;
323
- }
324
- traduzirDeclaracaoExpressao(declaracaoExpressao) {
325
- return this.dicionarioConstrutos[declaracaoExpressao.expressao.constructor.name](declaracaoExpressao.expressao);
326
- }
327
- traduzirDeclaracaoFazer(declaracaoFazer) {
328
- let resultado = 'do ';
329
- resultado += this.dicionarioDeclaracoes[declaracaoFazer.caminhoFazer.constructor.name](declaracaoFazer.caminhoFazer);
330
- resultado +=
331
- 'while (' +
332
- this.dicionarioConstrutos[declaracaoFazer.condicaoEnquanto.constructor.name](declaracaoFazer.condicaoEnquanto) +
333
- ') ';
334
- return resultado;
335
- }
336
- traduzirDeclaracaoFuncao(declaracaoFuncao) {
337
- let resultado = 'function ';
338
- resultado += declaracaoFuncao.simbolo.lexema + ' (';
339
- for (const parametro of declaracaoFuncao.funcao.parametros) {
340
- resultado += parametro.nome.lexema + ', ';
341
- }
342
- if (declaracaoFuncao.funcao.parametros.length > 0) {
343
- resultado = resultado.slice(0, -2);
344
- }
345
- resultado += ') ';
346
- resultado += this.logicaComumBlocoEscopo(declaracaoFuncao.funcao.corpo);
347
- return resultado;
348
- }
349
- traduzirDeclaracaoImportar(declaracaoImportar) {
350
- return `'importar() não é suportado por este padrão de JavaScript'`;
351
- }
352
- traduzirDeclaracaoLeia(declaracaoLeia) {
353
- return `'leia() não é suportado por este padrão de JavaScript.'`;
354
- }
355
- traduzirDeclaracaoParaCada(declaracaoParaCada) {
356
- let resultado = `for (let ${declaracaoParaCada.nomeVariavelIteracao} of `;
357
- resultado +=
358
- this.dicionarioConstrutos[declaracaoParaCada.vetor.constructor.name](declaracaoParaCada.vetor) + ') ';
359
- resultado += this.dicionarioDeclaracoes[declaracaoParaCada.corpo.constructor.name](declaracaoParaCada.corpo);
360
- return resultado;
361
- }
362
- traduzirDeclaracaoPara(declaracaoPara) {
363
- let resultado = 'for (';
364
- if (declaracaoPara.inicializador.constructor.name === 'Array') {
365
- resultado +=
366
- this.dicionarioDeclaracoes[declaracaoPara.inicializador[0].constructor.name](declaracaoPara.inicializador[0]) + ' ';
367
- }
368
- else {
369
- resultado +=
370
- this.dicionarioDeclaracoes[declaracaoPara.inicializador.constructor.name](declaracaoPara.inicializador) + ' ';
371
- }
372
- resultado += !resultado.includes(';') ? ';' : '';
373
- resultado +=
374
- this.dicionarioConstrutos[declaracaoPara.condicao.constructor.name](declaracaoPara.condicao) + '; ';
375
- resultado +=
376
- this.dicionarioConstrutos[declaracaoPara.incrementar.constructor.name](declaracaoPara.incrementar) + ') ';
377
- resultado += this.dicionarioDeclaracoes[declaracaoPara.corpo.constructor.name](declaracaoPara.corpo);
378
- return resultado;
379
- }
380
- traduzirDeclaracaoRetorna(declaracaoRetorna) {
381
- let resultado = 'return ';
382
- const nomeConstrutor = declaracaoRetorna.valor.constructor.name;
383
- return (resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoRetorna === null || declaracaoRetorna === void 0 ? void 0 : declaracaoRetorna.valor));
384
- }
385
- traduzirDeclaracaoSe(declaracaoSe) {
386
- let resultado = 'if (';
387
- const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
388
- resultado += condicao;
389
- resultado += ')';
390
- resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
391
- if (declaracaoSe.caminhoSenao !== null) {
392
- resultado += ' '.repeat(this.indentacao);
393
- resultado += 'else ';
394
- const se = declaracaoSe === null || declaracaoSe === void 0 ? void 0 : declaracaoSe.caminhoSenao;
395
- if (se === null || se === void 0 ? void 0 : se.caminhoEntao) {
396
- resultado += 'if (';
397
- resultado += this.dicionarioConstrutos[se.condicao.constructor.name](se.condicao);
398
- resultado += ')';
399
- resultado += this.dicionarioDeclaracoes[se.caminhoEntao.constructor.name](se.caminhoEntao);
400
- resultado += ' '.repeat(this.indentacao);
401
- if (se === null || se === void 0 ? void 0 : se.caminhoSenao) {
402
- resultado += 'else ';
403
- resultado += this.dicionarioDeclaracoes[se.caminhoSenao.constructor.name](se.caminhoSenao);
404
- return resultado;
405
- }
406
- }
407
- resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
408
- }
409
- return resultado;
410
- }
411
- traduzirDeclaracaoTente(declaracaoTente) {
412
- let resultado = 'try {\n';
413
- this.indentacao += 4;
414
- resultado += ' '.repeat(this.indentacao);
415
- for (let condicao of declaracaoTente.caminhoTente) {
416
- resultado += this.dicionarioDeclaracoes[condicao.constructor.name](condicao) + '\n';
417
- resultado += ' '.repeat(this.indentacao);
418
- }
419
- resultado += '}';
420
- if (declaracaoTente.caminhoPegue !== null) {
421
- resultado += '\ncatch {\n';
422
- resultado += ' '.repeat(this.indentacao);
423
- if (Array.isArray(declaracaoTente.caminhoPegue)) {
424
- for (let declaracao of declaracaoTente.caminhoPegue) {
425
- resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
426
- }
427
- }
428
- else {
429
- for (let corpo of declaracaoTente.caminhoPegue.corpo) {
430
- resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
431
- }
432
- }
433
- resultado += ' '.repeat(this.indentacao);
434
- resultado += '}';
435
- }
436
- if (declaracaoTente.caminhoFinalmente !== null) {
437
- resultado += '\nfinally {\n';
438
- for (let finalmente of declaracaoTente.caminhoFinalmente) {
439
- resultado += this.dicionarioDeclaracoes[finalmente.constructor.name](finalmente) + '\n';
440
- }
441
- resultado += ' '.repeat(this.indentacao);
442
- resultado += '}';
443
- }
444
- return resultado;
445
- }
446
- traduzirDeclaracaoConst(declaracaoConst) {
447
- let resultado = 'const ';
448
- resultado += declaracaoConst.simbolo.lexema;
449
- if (!(declaracaoConst === null || declaracaoConst === void 0 ? void 0 : declaracaoConst.inicializador))
450
- resultado += ';';
451
- else {
452
- resultado += ' = ';
453
- if (this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name]) {
454
- resultado += this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
455
- }
456
- else {
457
- resultado += this.dicionarioDeclaracoes[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
458
- }
459
- resultado += ';';
460
- }
461
- return resultado;
462
- }
463
- traduzirDeclaracaoVar(declaracaoVar) {
464
- let resultado = 'let ';
465
- resultado += declaracaoVar.simbolo.lexema;
466
- if (!(declaracaoVar === null || declaracaoVar === void 0 ? void 0 : declaracaoVar.inicializador))
467
- resultado += ';';
468
- else {
469
- resultado += ' = ';
470
- if (this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name]) {
471
- resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
472
- }
473
- else {
474
- resultado += this.dicionarioDeclaracoes[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
475
- }
476
- resultado += ';';
477
- }
478
- return resultado;
479
- }
480
- traduzirConstrutoAcessoMetodo(acessoMetodo) {
481
- if (acessoMetodo.objeto instanceof construtos_1.Variavel) {
482
- let objetoVariavel = acessoMetodo.objeto;
483
- return `${objetoVariavel.simbolo.lexema}.${this.traduzirFuncoesNativas(acessoMetodo.simbolo.lexema)}`;
484
- }
485
- return `this.${acessoMetodo.simbolo.lexema}`;
486
- }
487
- traduzirFuncaoConstruto(funcaoConstruto) {
488
- let resultado = 'function(';
489
- for (const parametro of funcaoConstruto.parametros) {
490
- resultado += parametro.nome.lexema + ', ';
491
- }
492
- if (funcaoConstruto.parametros.length > 0) {
493
- resultado = resultado.slice(0, -2);
494
- }
495
- resultado += ') ';
496
- resultado += this.logicaComumBlocoEscopo(funcaoConstruto.corpo);
497
- return resultado;
498
- }
499
- traduzirConstrutoLogico(logico) {
500
- let direita = this.dicionarioConstrutos[logico.direita.constructor.name](logico.direita);
501
- let operador = this.traduzirSimboloOperador(logico.operador);
502
- let esquerda = this.dicionarioConstrutos[logico.esquerda.constructor.name](logico.esquerda);
503
- return `${direita} ${operador} ${esquerda}`;
504
- }
505
- traduzirConstrutoAtribuicaoPorIndice(AtribuicaoPorIndice) {
506
- var _a, _b;
507
- let resultado = '';
508
- resultado += AtribuicaoPorIndice.objeto.simbolo.lexema + '[';
509
- resultado +=
510
- this.dicionarioConstrutos[AtribuicaoPorIndice.indice.constructor.name](AtribuicaoPorIndice.indice) + ']';
511
- resultado += ' = ';
512
- if ((_b = (_a = AtribuicaoPorIndice === null || AtribuicaoPorIndice === void 0 ? void 0 : AtribuicaoPorIndice.valor) === null || _a === void 0 ? void 0 : _a.simbolo) === null || _b === void 0 ? void 0 : _b.lexema) {
513
- resultado += `${AtribuicaoPorIndice.valor.simbolo.lexema}`;
514
- }
515
- else {
516
- resultado += this.dicionarioConstrutos[AtribuicaoPorIndice.valor.constructor.name](AtribuicaoPorIndice.valor);
517
- }
518
- return resultado;
519
- }
520
- traduzirAcessoIndiceVariavel(acessoIndiceVariavel) {
521
- let resultado = '';
522
- resultado += this.dicionarioConstrutos[acessoIndiceVariavel.entidadeChamada.constructor.name](acessoIndiceVariavel.entidadeChamada);
523
- resultado += `[${this.dicionarioConstrutos[acessoIndiceVariavel.indice.constructor.name](acessoIndiceVariavel.indice)}]`;
524
- return resultado;
525
- }
526
- traduzirConstrutoVetor(vetor) {
527
- if (!vetor.valores.length) {
528
- return '[]';
529
- }
530
- let resultado = '[';
531
- for (let valor of vetor.valores) {
532
- resultado += `${this.dicionarioConstrutos[valor.constructor.name](valor)}, `;
533
- }
534
- if (vetor.valores.length > 0) {
535
- resultado = resultado.slice(0, -2);
536
- }
537
- resultado += ']';
538
- return resultado;
539
- }
540
- traduzirConstrutoTipoDe(tipoDe) {
541
- let resultado = 'typeof ';
542
- if (!tipoDe.valor)
543
- resultado += tipoDe.valor;
544
- else if (typeof tipoDe.valor === 'string')
545
- resultado += `'${tipoDe.valor}'`;
546
- else if (typeof tipoDe.valor === 'number')
547
- resultado += tipoDe.valor;
548
- else
549
- resultado += `${this.dicionarioConstrutos[tipoDe.valor.constructor.name](tipoDe.valor)}`;
550
- return resultado;
551
- }
552
- traduzirDeclaracaoFalhar(falhar) {
553
- return `throw '${falhar.explicacao.valor}'`;
554
- }
555
- traduzirConstrutoUnario(unario) {
556
- var _a, _b;
557
- let resultado = '';
558
- if ([delegua_1.default.INCREMENTAR, delegua_1.default.DECREMENTAR].includes(unario.operador.tipo)) {
559
- resultado += (_a = unario.operando.valor) !== null && _a !== void 0 ? _a : unario.operando.simbolo.lexema;
560
- resultado += unario.operador.tipo === delegua_1.default.INCREMENTAR ? '++' : '--';
561
- }
562
- else {
563
- resultado += this.traduzirSimboloOperador(unario.operador);
564
- resultado += (_b = unario.operando.valor) !== null && _b !== void 0 ? _b : unario.operando.simbolo.lexema;
565
- }
566
- return resultado;
567
- }
568
- traduzir(declaracoes) {
569
- let resultado = '';
570
- this.declaracoesDeClasses = declaracoes.filter((declaracao) => declaracao instanceof declaracoes_1.Classe);
571
- for (const declaracao of declaracoes) {
572
- resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`;
573
- }
574
- return resultado;
575
- }
576
- }
577
- exports.TradutorJavaScript = TradutorJavaScript;
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.TradutorJavaScript = 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
+ /**
11
+ * Esse tradutor traduz para JavaScript sem módulos, o que significa que
12
+ * instruções em Delégua como `leia()` e `importar()` não são suportadas.
13
+ * O tradutor levantará mensagem de alerta toda vez que essas instruções são encontradas.
14
+ */
15
+ class TradutorJavaScript {
16
+ constructor() {
17
+ this.indentacao = 0;
18
+ this.dicionarioConstrutos = {
19
+ AcessoIndiceVariavel: this.traduzirAcessoIndiceVariavel.bind(this),
20
+ AcessoMetodoOuPropriedade: this.traduzirConstrutoAcessoMetodo.bind(this),
21
+ Agrupamento: this.traduzirConstrutoAgrupamento.bind(this),
22
+ AtribuicaoPorIndice: this.traduzirConstrutoAtribuicaoPorIndice.bind(this),
23
+ Atribuir: this.traduzirConstrutoAtribuir.bind(this),
24
+ Binario: this.traduzirConstrutoBinario.bind(this),
25
+ Chamada: this.traduzirConstrutoChamada.bind(this),
26
+ Comentario: this.traduzirConstrutoComentario.bind(this),
27
+ DefinirValor: this.traduzirConstrutoDefinirValor.bind(this),
28
+ FuncaoConstruto: this.traduzirFuncaoConstruto.bind(this),
29
+ Isto: () => 'this',
30
+ Literal: this.traduzirConstrutoLiteral.bind(this),
31
+ Logico: this.traduzirConstrutoLogico.bind(this),
32
+ TipoDe: this.traduzirConstrutoTipoDe.bind(this),
33
+ Unario: this.traduzirConstrutoUnario.bind(this),
34
+ Variavel: this.traduzirConstrutoVariavel.bind(this),
35
+ Vetor: this.traduzirConstrutoVetor.bind(this),
36
+ };
37
+ this.dicionarioDeclaracoes = {
38
+ Bloco: this.traduzirDeclaracaoBloco.bind(this),
39
+ Classe: this.traduzirDeclaracaoClasse.bind(this),
40
+ Const: this.traduzirDeclaracaoConst.bind(this),
41
+ Comentario: this.traduzirConstrutoComentario.bind(this),
42
+ Continua: () => 'continue',
43
+ Enquanto: this.traduzirDeclaracaoEnquanto.bind(this),
44
+ Escolha: this.traduzirDeclaracaoEscolha.bind(this),
45
+ Escreva: this.traduzirDeclaracaoEscreva.bind(this),
46
+ Expressao: this.traduzirDeclaracaoExpressao.bind(this),
47
+ Fazer: this.traduzirDeclaracaoFazer.bind(this),
48
+ Falhar: this.traduzirDeclaracaoFalhar.bind(this),
49
+ FuncaoDeclaracao: this.traduzirDeclaracaoFuncao.bind(this),
50
+ Importar: this.traduzirDeclaracaoImportar.bind(this),
51
+ Leia: this.traduzirDeclaracaoLeia.bind(this),
52
+ Para: this.traduzirDeclaracaoPara.bind(this),
53
+ ParaCada: this.traduzirDeclaracaoParaCada.bind(this),
54
+ Retorna: this.traduzirDeclaracaoRetorna.bind(this),
55
+ Se: this.traduzirDeclaracaoSe.bind(this),
56
+ Sustar: () => 'break',
57
+ Tente: this.traduzirDeclaracaoTente.bind(this),
58
+ Var: this.traduzirDeclaracaoVar.bind(this),
59
+ };
60
+ }
61
+ traduzirSimboloOperador(operador) {
62
+ switch (operador.tipo) {
63
+ case delegua_1.default.ADICAO:
64
+ return '+';
65
+ case delegua_1.default.BIT_AND:
66
+ return '&';
67
+ case delegua_1.default.BIT_OR:
68
+ return '|';
69
+ case delegua_1.default.BIT_XOR:
70
+ return '^';
71
+ case delegua_1.default.BIT_NOT:
72
+ return '~';
73
+ case delegua_1.default.DIFERENTE:
74
+ return '!==';
75
+ case delegua_1.default.DIVISAO:
76
+ return '/';
77
+ case delegua_1.default.E:
78
+ return '&&';
79
+ case delegua_1.default.EXPONENCIACAO:
80
+ return '**';
81
+ case delegua_1.default.IGUAL:
82
+ return '=';
83
+ case delegua_1.default.IGUAL_IGUAL:
84
+ return '===';
85
+ case delegua_1.default.MAIOR:
86
+ return '>';
87
+ case delegua_1.default.MAIOR_IGUAL:
88
+ return '>=';
89
+ case delegua_1.default.MENOR:
90
+ return '<';
91
+ case delegua_1.default.MENOR_IGUAL:
92
+ return '<=';
93
+ case delegua_1.default.MODULO:
94
+ return '%';
95
+ case delegua_1.default.MULTIPLICACAO:
96
+ return '*';
97
+ case delegua_1.default.OU:
98
+ return '||';
99
+ case delegua_1.default.SUBTRACAO:
100
+ return '-';
101
+ }
102
+ }
103
+ //TODO: @Samuel
104
+ traduzirFuncoesNativas(metodo) {
105
+ switch (metodo.toLowerCase()) {
106
+ case 'adicionar':
107
+ case 'empilhar':
108
+ return 'push';
109
+ case 'concatenar':
110
+ return 'concat';
111
+ case 'fatiar':
112
+ return 'slice';
113
+ case 'inclui':
114
+ return 'includes';
115
+ case 'inverter':
116
+ return 'reverse';
117
+ case 'juntar':
118
+ return 'join';
119
+ case 'ordenar':
120
+ return 'sort';
121
+ case 'removerprimeiro':
122
+ return 'shift';
123
+ case 'removerultimo':
124
+ return 'pop';
125
+ case 'tamanho':
126
+ return 'length';
127
+ case 'maiusculo':
128
+ return 'toUpperCase';
129
+ case 'minusculo':
130
+ return 'toLowerCase';
131
+ case 'substituir':
132
+ return 'replace';
133
+ default:
134
+ return metodo;
135
+ }
136
+ }
137
+ traduzirConstrutoAgrupamento(agrupamento) {
138
+ return this.dicionarioConstrutos[agrupamento.constructor.name](agrupamento.expressao || agrupamento);
139
+ }
140
+ traduzirConstrutoAtribuir(atribuir) {
141
+ let resultado = atribuir.simbolo.lexema;
142
+ resultado += ' = ' + this.dicionarioConstrutos[atribuir.valor.constructor.name](atribuir.valor);
143
+ return resultado;
144
+ }
145
+ traduzirConstrutoBinario(binario) {
146
+ let resultado = '';
147
+ if (binario.esquerda.constructor.name === 'Agrupamento')
148
+ resultado += '(' + this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda) + ')';
149
+ else
150
+ resultado += this.dicionarioConstrutos[binario.esquerda.constructor.name](binario.esquerda);
151
+ let operador = this.traduzirSimboloOperador(binario.operador);
152
+ resultado += ` ${operador} `;
153
+ if (binario.direita.constructor.name === 'Agrupamento')
154
+ resultado += '(' + this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita) + ')';
155
+ else
156
+ resultado += this.dicionarioConstrutos[binario.direita.constructor.name](binario.direita);
157
+ return resultado;
158
+ }
159
+ traduzirConstrutoDefinirValor(definirValor) {
160
+ let resultado = '';
161
+ if (definirValor.objeto instanceof construtos_1.Isto) {
162
+ resultado = 'this.' + definirValor.nome.lexema + ' = ';
163
+ }
164
+ resultado += definirValor.valor.simbolo.lexema;
165
+ return resultado;
166
+ }
167
+ traduzirConstrutoLiteral(literal) {
168
+ if (typeof literal.valor === 'string')
169
+ return `'${literal.valor}'`;
170
+ return literal.valor;
171
+ }
172
+ traduzirConstrutoVariavel(variavel) {
173
+ return variavel.simbolo.lexema;
174
+ }
175
+ traduzirConstrutoChamada(chamada) {
176
+ let resultado = '';
177
+ const retorno = `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada)}`;
178
+ const instanciaClasse = this.declaracoesDeClasses.some((declaracao) => { var _a; return ((_a = declaracao === null || declaracao === void 0 ? void 0 : declaracao.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) === retorno; });
179
+ if (instanciaClasse) {
180
+ const classe = this.declaracoesDeClasses.find((declaracao) => { var _a; return ((_a = declaracao === null || declaracao === void 0 ? void 0 : declaracao.simbolo) === null || _a === void 0 ? void 0 : _a.lexema) === retorno; });
181
+ if (classe.simbolo.lexema === retorno)
182
+ resultado += `new ${retorno}`;
183
+ }
184
+ else {
185
+ resultado += retorno;
186
+ }
187
+ if (!retorno.endsWith('length')) {
188
+ resultado += '(';
189
+ }
190
+ for (let parametro of chamada.argumentos) {
191
+ resultado += this.dicionarioConstrutos[parametro.constructor.name](parametro) + ', ';
192
+ }
193
+ if (chamada.argumentos.length > 0) {
194
+ resultado = resultado.slice(0, -2);
195
+ }
196
+ if (!retorno.endsWith('length')) {
197
+ resultado += ')';
198
+ }
199
+ return resultado;
200
+ }
201
+ traduzirConstrutoComentario(comentario) {
202
+ let resultado = '';
203
+ if (comentario.multilinha) {
204
+ resultado += `/*`;
205
+ for (let linhaComentario of comentario.conteudo) {
206
+ resultado += `${linhaComentario}\n`;
207
+ }
208
+ resultado += `*/`;
209
+ }
210
+ else {
211
+ resultado += `// ${comentario.conteudo}`;
212
+ }
213
+ return resultado;
214
+ }
215
+ logicaComumBlocoEscopo(declaracoes) {
216
+ let resultado = '{\n';
217
+ this.indentacao += 4;
218
+ if (typeof declaracoes[Symbol.iterator] === 'function') {
219
+ for (const declaracaoOuConstruto of declaracoes) {
220
+ resultado += ' '.repeat(this.indentacao);
221
+ const nomeConstrutor = declaracaoOuConstruto.constructor.name;
222
+ if (this.dicionarioConstrutos.hasOwnProperty(nomeConstrutor)) {
223
+ resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoOuConstruto);
224
+ }
225
+ else {
226
+ resultado += this.dicionarioDeclaracoes[nomeConstrutor](declaracaoOuConstruto);
227
+ }
228
+ resultado += '\n';
229
+ }
230
+ }
231
+ this.indentacao -= 4;
232
+ resultado += ' '.repeat(this.indentacao) + '}\n';
233
+ return resultado;
234
+ }
235
+ traduzirDeclaracaoBloco(declaracaoBloco) {
236
+ return this.logicaComumBlocoEscopo(declaracaoBloco.declaracoes);
237
+ }
238
+ logicaTraducaoMetodoClasse(metodoClasse) {
239
+ this.indentacao += 4;
240
+ let resultado = ' '.repeat(this.indentacao);
241
+ resultado += metodoClasse.simbolo.lexema === 'construtor' ? 'constructor(' : metodoClasse.simbolo.lexema + '(';
242
+ for (let parametro of metodoClasse.funcao.parametros) {
243
+ resultado += parametro.nome.lexema + ', ';
244
+ }
245
+ if (metodoClasse.funcao.parametros.length > 0) {
246
+ resultado = resultado.slice(0, -2);
247
+ }
248
+ resultado += ') ';
249
+ resultado += this.logicaComumBlocoEscopo(metodoClasse.funcao.corpo);
250
+ resultado += ' '.repeat(this.indentacao) + '\n';
251
+ this.indentacao -= 4;
252
+ return resultado;
253
+ }
254
+ traduzirDeclaracaoClasse(declaracaoClasse) {
255
+ let resultado = 'export class ';
256
+ if (declaracaoClasse.superClasse)
257
+ resultado += `${declaracaoClasse.simbolo.lexema} extends ${declaracaoClasse.superClasse.simbolo.lexema} {\n`;
258
+ else
259
+ resultado += declaracaoClasse.simbolo.lexema + ' {\n';
260
+ for (let metodo of declaracaoClasse.metodos) {
261
+ resultado += this.logicaTraducaoMetodoClasse(metodo);
262
+ }
263
+ resultado += '}';
264
+ return resultado;
265
+ }
266
+ traduzirDeclaracaoEnquanto(declaracaoEnquanto) {
267
+ let resultado = 'while (';
268
+ resultado +=
269
+ this.dicionarioConstrutos[declaracaoEnquanto.condicao.constructor.name](declaracaoEnquanto.condicao) + ') ';
270
+ resultado += this.dicionarioDeclaracoes[declaracaoEnquanto.corpo.constructor.name](declaracaoEnquanto.corpo);
271
+ return resultado;
272
+ }
273
+ logicaComumCaminhosEscolha(caminho) {
274
+ var _a, _b, _c;
275
+ let resultado = '';
276
+ this.indentacao += 4;
277
+ resultado += ' '.repeat(this.indentacao);
278
+ if ((_a = caminho === null || caminho === void 0 ? void 0 : caminho.condicoes) === null || _a === void 0 ? void 0 : _a.length) {
279
+ for (let condicao of caminho.condicoes) {
280
+ resultado += 'case ' + this.dicionarioConstrutos[condicao.constructor.name](condicao) + ':\n';
281
+ resultado += ' '.repeat(this.indentacao);
282
+ }
283
+ }
284
+ if ((_b = caminho === null || caminho === void 0 ? void 0 : caminho.declaracoes) === null || _b === void 0 ? void 0 : _b.length) {
285
+ for (let declaracao of caminho.declaracoes) {
286
+ resultado += ' '.repeat(this.indentacao + 4);
287
+ if (((_c = declaracao === null || declaracao === void 0 ? void 0 : declaracao.simboloChave) === null || _c === void 0 ? void 0 : _c.lexema) === 'retorna') {
288
+ resultado +=
289
+ 'return ' + this.dicionarioConstrutos[declaracao.valor.constructor.name](declaracao.valor);
290
+ }
291
+ resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
292
+ }
293
+ resultado += ' '.repeat(this.indentacao + 4);
294
+ resultado += 'break' + '\n';
295
+ }
296
+ this.indentacao -= 4;
297
+ return resultado;
298
+ }
299
+ traduzirDeclaracaoEscolha(declaracaoEscolha) {
300
+ let resultado = 'switch (';
301
+ resultado +=
302
+ this.dicionarioConstrutos[declaracaoEscolha.identificadorOuLiteral.constructor.name](declaracaoEscolha.identificadorOuLiteral) + ') {\n';
303
+ for (let caminho of declaracaoEscolha.caminhos) {
304
+ resultado += this.logicaComumCaminhosEscolha(caminho);
305
+ }
306
+ if (declaracaoEscolha.caminhoPadrao) {
307
+ resultado += ' '.repeat(4);
308
+ resultado += 'default:\n';
309
+ resultado += this.logicaComumCaminhosEscolha(declaracaoEscolha.caminhoPadrao);
310
+ }
311
+ resultado += '}\n';
312
+ return resultado;
313
+ }
314
+ traduzirDeclaracaoEscreva(declaracaoEscreva) {
315
+ let resultado = 'console.log(';
316
+ for (const argumento of declaracaoEscreva.argumentos) {
317
+ const valor = this.dicionarioConstrutos[argumento.constructor.name](argumento);
318
+ resultado += valor + ', ';
319
+ }
320
+ resultado = resultado.slice(0, -2);
321
+ resultado += ')';
322
+ return resultado;
323
+ }
324
+ traduzirDeclaracaoExpressao(declaracaoExpressao) {
325
+ return this.dicionarioConstrutos[declaracaoExpressao.expressao.constructor.name](declaracaoExpressao.expressao);
326
+ }
327
+ traduzirDeclaracaoFazer(declaracaoFazer) {
328
+ let resultado = 'do ';
329
+ resultado += this.dicionarioDeclaracoes[declaracaoFazer.caminhoFazer.constructor.name](declaracaoFazer.caminhoFazer);
330
+ resultado +=
331
+ 'while (' +
332
+ this.dicionarioConstrutos[declaracaoFazer.condicaoEnquanto.constructor.name](declaracaoFazer.condicaoEnquanto) +
333
+ ') ';
334
+ return resultado;
335
+ }
336
+ traduzirDeclaracaoFuncao(declaracaoFuncao) {
337
+ let resultado = 'function ';
338
+ resultado += declaracaoFuncao.simbolo.lexema + ' (';
339
+ for (const parametro of declaracaoFuncao.funcao.parametros) {
340
+ resultado += parametro.nome.lexema + ', ';
341
+ }
342
+ if (declaracaoFuncao.funcao.parametros.length > 0) {
343
+ resultado = resultado.slice(0, -2);
344
+ }
345
+ resultado += ') ';
346
+ resultado += this.logicaComumBlocoEscopo(declaracaoFuncao.funcao.corpo);
347
+ return resultado;
348
+ }
349
+ traduzirDeclaracaoImportar(declaracaoImportar) {
350
+ return `'importar() não é suportado por este padrão de JavaScript'`;
351
+ }
352
+ traduzirDeclaracaoLeia(declaracaoLeia) {
353
+ return `'leia() não é suportado por este padrão de JavaScript.'`;
354
+ }
355
+ traduzirDeclaracaoParaCada(declaracaoParaCada) {
356
+ let resultado = `for (let ${declaracaoParaCada.nomeVariavelIteracao} of `;
357
+ resultado +=
358
+ this.dicionarioConstrutos[declaracaoParaCada.vetor.constructor.name](declaracaoParaCada.vetor) + ') ';
359
+ resultado += this.dicionarioDeclaracoes[declaracaoParaCada.corpo.constructor.name](declaracaoParaCada.corpo);
360
+ return resultado;
361
+ }
362
+ traduzirDeclaracaoPara(declaracaoPara) {
363
+ let resultado = 'for (';
364
+ if (declaracaoPara.inicializador.constructor.name === 'Array') {
365
+ resultado +=
366
+ this.dicionarioDeclaracoes[declaracaoPara.inicializador[0].constructor.name](declaracaoPara.inicializador[0]) + ' ';
367
+ }
368
+ else {
369
+ resultado +=
370
+ this.dicionarioDeclaracoes[declaracaoPara.inicializador.constructor.name](declaracaoPara.inicializador) + ' ';
371
+ }
372
+ resultado += !resultado.includes(';') ? ';' : '';
373
+ resultado +=
374
+ this.dicionarioConstrutos[declaracaoPara.condicao.constructor.name](declaracaoPara.condicao) + '; ';
375
+ resultado +=
376
+ this.dicionarioConstrutos[declaracaoPara.incrementar.constructor.name](declaracaoPara.incrementar) + ') ';
377
+ resultado += this.dicionarioDeclaracoes[declaracaoPara.corpo.constructor.name](declaracaoPara.corpo);
378
+ return resultado;
379
+ }
380
+ traduzirDeclaracaoRetorna(declaracaoRetorna) {
381
+ let resultado = 'return ';
382
+ const nomeConstrutor = declaracaoRetorna.valor.constructor.name;
383
+ return (resultado += this.dicionarioConstrutos[nomeConstrutor](declaracaoRetorna === null || declaracaoRetorna === void 0 ? void 0 : declaracaoRetorna.valor));
384
+ }
385
+ traduzirDeclaracaoSe(declaracaoSe) {
386
+ let resultado = 'if (';
387
+ const condicao = this.dicionarioConstrutos[declaracaoSe.condicao.constructor.name](declaracaoSe.condicao);
388
+ resultado += condicao;
389
+ resultado += ')';
390
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoEntao.constructor.name](declaracaoSe.caminhoEntao);
391
+ if (declaracaoSe.caminhoSenao !== null) {
392
+ resultado += ' '.repeat(this.indentacao);
393
+ resultado += 'else ';
394
+ const se = declaracaoSe === null || declaracaoSe === void 0 ? void 0 : declaracaoSe.caminhoSenao;
395
+ if (se === null || se === void 0 ? void 0 : se.caminhoEntao) {
396
+ resultado += 'if (';
397
+ resultado += this.dicionarioConstrutos[se.condicao.constructor.name](se.condicao);
398
+ resultado += ')';
399
+ resultado += this.dicionarioDeclaracoes[se.caminhoEntao.constructor.name](se.caminhoEntao);
400
+ resultado += ' '.repeat(this.indentacao);
401
+ if (se === null || se === void 0 ? void 0 : se.caminhoSenao) {
402
+ resultado += 'else ';
403
+ resultado += this.dicionarioDeclaracoes[se.caminhoSenao.constructor.name](se.caminhoSenao);
404
+ return resultado;
405
+ }
406
+ }
407
+ resultado += this.dicionarioDeclaracoes[declaracaoSe.caminhoSenao.constructor.name](declaracaoSe.caminhoSenao);
408
+ }
409
+ return resultado;
410
+ }
411
+ traduzirDeclaracaoTente(declaracaoTente) {
412
+ let resultado = 'try {\n';
413
+ this.indentacao += 4;
414
+ resultado += ' '.repeat(this.indentacao);
415
+ for (let condicao of declaracaoTente.caminhoTente) {
416
+ resultado += this.dicionarioDeclaracoes[condicao.constructor.name](condicao) + '\n';
417
+ resultado += ' '.repeat(this.indentacao);
418
+ }
419
+ resultado += '}';
420
+ if (declaracaoTente.caminhoPegue !== null) {
421
+ resultado += '\ncatch {\n';
422
+ resultado += ' '.repeat(this.indentacao);
423
+ if (Array.isArray(declaracaoTente.caminhoPegue)) {
424
+ for (let declaracao of declaracaoTente.caminhoPegue) {
425
+ resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
426
+ }
427
+ }
428
+ else {
429
+ for (let corpo of declaracaoTente.caminhoPegue.corpo) {
430
+ resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
431
+ }
432
+ }
433
+ resultado += ' '.repeat(this.indentacao);
434
+ resultado += '}';
435
+ }
436
+ if (declaracaoTente.caminhoFinalmente !== null) {
437
+ resultado += '\nfinally {\n';
438
+ for (let finalmente of declaracaoTente.caminhoFinalmente) {
439
+ resultado += this.dicionarioDeclaracoes[finalmente.constructor.name](finalmente) + '\n';
440
+ }
441
+ resultado += ' '.repeat(this.indentacao);
442
+ resultado += '}';
443
+ }
444
+ return resultado;
445
+ }
446
+ traduzirDeclaracaoConst(declaracaoConst) {
447
+ let resultado = 'const ';
448
+ resultado += declaracaoConst.simbolo.lexema;
449
+ if (!(declaracaoConst === null || declaracaoConst === void 0 ? void 0 : declaracaoConst.inicializador))
450
+ resultado += ';';
451
+ else {
452
+ resultado += ' = ';
453
+ if (this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name]) {
454
+ resultado += this.dicionarioConstrutos[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
455
+ }
456
+ else {
457
+ resultado += this.dicionarioDeclaracoes[declaracaoConst.inicializador.constructor.name](declaracaoConst.inicializador);
458
+ }
459
+ resultado += ';';
460
+ }
461
+ return resultado;
462
+ }
463
+ traduzirDeclaracaoVar(declaracaoVar) {
464
+ let resultado = 'let ';
465
+ resultado += declaracaoVar.simbolo.lexema;
466
+ if (!(declaracaoVar === null || declaracaoVar === void 0 ? void 0 : declaracaoVar.inicializador))
467
+ resultado += ';';
468
+ else {
469
+ resultado += ' = ';
470
+ if (this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name]) {
471
+ resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
472
+ }
473
+ else {
474
+ resultado += this.dicionarioDeclaracoes[declaracaoVar.inicializador.constructor.name](declaracaoVar.inicializador);
475
+ }
476
+ resultado += ';';
477
+ }
478
+ return resultado;
479
+ }
480
+ traduzirConstrutoAcessoMetodo(acessoMetodo) {
481
+ if (acessoMetodo.objeto instanceof construtos_1.Variavel) {
482
+ let objetoVariavel = acessoMetodo.objeto;
483
+ return `${objetoVariavel.simbolo.lexema}.${this.traduzirFuncoesNativas(acessoMetodo.simbolo.lexema)}`;
484
+ }
485
+ return `this.${acessoMetodo.simbolo.lexema}`;
486
+ }
487
+ traduzirFuncaoConstruto(funcaoConstruto) {
488
+ let resultado = 'function(';
489
+ for (const parametro of funcaoConstruto.parametros) {
490
+ resultado += parametro.nome.lexema + ', ';
491
+ }
492
+ if (funcaoConstruto.parametros.length > 0) {
493
+ resultado = resultado.slice(0, -2);
494
+ }
495
+ resultado += ') ';
496
+ resultado += this.logicaComumBlocoEscopo(funcaoConstruto.corpo);
497
+ return resultado;
498
+ }
499
+ traduzirConstrutoLogico(logico) {
500
+ let direita = this.dicionarioConstrutos[logico.direita.constructor.name](logico.direita);
501
+ let operador = this.traduzirSimboloOperador(logico.operador);
502
+ let esquerda = this.dicionarioConstrutos[logico.esquerda.constructor.name](logico.esquerda);
503
+ return `${direita} ${operador} ${esquerda}`;
504
+ }
505
+ traduzirConstrutoAtribuicaoPorIndice(AtribuicaoPorIndice) {
506
+ var _a, _b;
507
+ let resultado = '';
508
+ resultado += AtribuicaoPorIndice.objeto.simbolo.lexema + '[';
509
+ resultado +=
510
+ this.dicionarioConstrutos[AtribuicaoPorIndice.indice.constructor.name](AtribuicaoPorIndice.indice) + ']';
511
+ resultado += ' = ';
512
+ if ((_b = (_a = AtribuicaoPorIndice === null || AtribuicaoPorIndice === void 0 ? void 0 : AtribuicaoPorIndice.valor) === null || _a === void 0 ? void 0 : _a.simbolo) === null || _b === void 0 ? void 0 : _b.lexema) {
513
+ resultado += `${AtribuicaoPorIndice.valor.simbolo.lexema}`;
514
+ }
515
+ else {
516
+ resultado += this.dicionarioConstrutos[AtribuicaoPorIndice.valor.constructor.name](AtribuicaoPorIndice.valor);
517
+ }
518
+ return resultado;
519
+ }
520
+ traduzirAcessoIndiceVariavel(acessoIndiceVariavel) {
521
+ let resultado = '';
522
+ resultado += this.dicionarioConstrutos[acessoIndiceVariavel.entidadeChamada.constructor.name](acessoIndiceVariavel.entidadeChamada);
523
+ resultado += `[${this.dicionarioConstrutos[acessoIndiceVariavel.indice.constructor.name](acessoIndiceVariavel.indice)}]`;
524
+ return resultado;
525
+ }
526
+ traduzirConstrutoVetor(vetor) {
527
+ if (!vetor.valores.length) {
528
+ return '[]';
529
+ }
530
+ let resultado = '[';
531
+ for (let valor of vetor.valores) {
532
+ resultado += `${this.dicionarioConstrutos[valor.constructor.name](valor)}, `;
533
+ }
534
+ if (vetor.valores.length > 0) {
535
+ resultado = resultado.slice(0, -2);
536
+ }
537
+ resultado += ']';
538
+ return resultado;
539
+ }
540
+ traduzirConstrutoTipoDe(tipoDe) {
541
+ let resultado = 'typeof ';
542
+ if (!tipoDe.valor)
543
+ resultado += tipoDe.valor;
544
+ else if (typeof tipoDe.valor === 'string')
545
+ resultado += `'${tipoDe.valor}'`;
546
+ else if (typeof tipoDe.valor === 'number')
547
+ resultado += tipoDe.valor;
548
+ else
549
+ resultado += `${this.dicionarioConstrutos[tipoDe.valor.constructor.name](tipoDe.valor)}`;
550
+ return resultado;
551
+ }
552
+ traduzirDeclaracaoFalhar(falhar) {
553
+ return `throw '${falhar.explicacao.valor}'`;
554
+ }
555
+ traduzirConstrutoUnario(unario) {
556
+ var _a, _b;
557
+ let resultado = '';
558
+ if ([delegua_1.default.INCREMENTAR, delegua_1.default.DECREMENTAR].includes(unario.operador.tipo)) {
559
+ resultado += (_a = unario.operando.valor) !== null && _a !== void 0 ? _a : unario.operando.simbolo.lexema;
560
+ resultado += unario.operador.tipo === delegua_1.default.INCREMENTAR ? '++' : '--';
561
+ }
562
+ else {
563
+ resultado += this.traduzirSimboloOperador(unario.operador);
564
+ resultado += (_b = unario.operando.valor) !== null && _b !== void 0 ? _b : unario.operando.simbolo.lexema;
565
+ }
566
+ return resultado;
567
+ }
568
+ traduzir(declaracoes) {
569
+ let resultado = '';
570
+ this.declaracoesDeClasses = declaracoes.filter((declaracao) => declaracao instanceof declaracoes_1.Classe);
571
+ for (const declaracao of declaracoes) {
572
+ resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`;
573
+ }
574
+ return resultado;
575
+ }
576
+ }
577
+ exports.TradutorJavaScript = TradutorJavaScript;
578
578
  //# sourceMappingURL=tradutor-javascript.js.map