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