@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,677 +1,677 @@
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.FormatadorDelegua = void 0;
7
- const construtos_1 = require("../construtos");
8
- const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
9
- /**
10
- * O formatador de código Delégua.
11
- * Normalmente usado por IDEs, mas pode ser usado por linha de comando ou programaticamente.
12
- */
13
- class FormatadorDelegua {
14
- constructor(quebraLinha, tamanhoIndentacao = 4) {
15
- this.quebraLinha = quebraLinha;
16
- this.tamanhoIndentacao = tamanhoIndentacao;
17
- this.indentacaoAtual = 0;
18
- this.codigoFormatado = '';
19
- this.devePularLinha = true;
20
- this.deveIndentar = true;
21
- }
22
- visitarDeclaracaoComentario(declaracao) {
23
- if (declaracao.multilinha) {
24
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}/* `;
25
- for (let linhaConteudo of declaracao.conteudo) {
26
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)} ${linhaConteudo.replace(/\s+/g, " ")}${this.quebraLinha}`;
27
- }
28
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)} */${this.quebraLinha}`;
29
- }
30
- else {
31
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}// `;
32
- this.codigoFormatado += declaracao.conteudo.replace(/\s+/g, " ");
33
- this.codigoFormatado += `${this.quebraLinha}`;
34
- }
35
- }
36
- visitarDeclaracaoTendoComo(declaracao) {
37
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}tendo `;
38
- this.formatarDeclaracaoOuConstruto(declaracao.inicializacaoVariavel);
39
- this.codigoFormatado += ` como ${declaracao.simboloVariavel.lexema} `;
40
- this.formatarDeclaracaoOuConstruto(declaracao.corpo);
41
- }
42
- visitarDeclaracaoInicioAlgoritmo(declaracao) {
43
- throw new Error('Método não implementado.');
44
- }
45
- visitarDeclaracaoCabecalhoPrograma(declaracao) {
46
- throw new Error('Método não implementado.');
47
- }
48
- visitarExpressaoTupla(expressao) {
49
- return '';
50
- }
51
- visitarDeclaracaoClasse(declaracao) {
52
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}classe ${declaracao.simbolo.lexema} {${this.quebraLinha}`;
53
- this.indentacaoAtual += this.tamanhoIndentacao;
54
- for (let propriedade of declaracao.propriedades) {
55
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}${propriedade.nome.lexema}: ${propriedade.tipo || 'qualquer'}${this.quebraLinha}`;
56
- }
57
- this.codigoFormatado += `${this.quebraLinha}`;
58
- for (let metodo of declaracao.metodos) {
59
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}${metodo.simbolo.lexema}`;
60
- this.visitarExpressaoFuncaoConstruto(metodo.funcao);
61
- }
62
- this.indentacaoAtual -= this.tamanhoIndentacao;
63
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
64
- }
65
- visitarDeclaracaoConst(declaracao) {
66
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}constante ${declaracao.simbolo.lexema}`;
67
- if (declaracao.inicializador) {
68
- this.codigoFormatado += ` = `;
69
- this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
70
- }
71
- if (this.devePularLinha) {
72
- this.codigoFormatado += this.quebraLinha;
73
- }
74
- }
75
- visitarDeclaracaoConstMultiplo(declaracao) {
76
- // TODO: Até então o código nunca passa por aqui, porque o avaliador sintático
77
- // converte `ConstMultiplo` em várias declarações `const`.
78
- // Talvez mudar a avaliação sintática para não fazer mais isso.
79
- console.log(declaracao);
80
- }
81
- visitarExpressaoDeAtribuicao(expressao) {
82
- if (expressao.valor instanceof construtos_1.Binario &&
83
- [
84
- delegua_1.default.MAIS_IGUAL,
85
- delegua_1.default.MENOS_IGUAL,
86
- delegua_1.default.MULTIPLICACAO_IGUAL,
87
- delegua_1.default.DIVISAO_IGUAL,
88
- delegua_1.default.DIVISAO_INTEIRA_IGUAL,
89
- delegua_1.default.MODULO_IGUAL,
90
- ].includes(expressao.valor.operador.tipo)) {
91
- this.visitarExpressaoBinaria(expressao.valor);
92
- }
93
- else {
94
- this.codigoFormatado += `${expressao.simbolo.lexema} = `;
95
- this.formatarDeclaracaoOuConstruto(expressao.valor);
96
- }
97
- this.codigoFormatado += `${this.quebraLinha}`;
98
- }
99
- visitarDeclaracaoDeExpressao(declaracao) {
100
- this.codigoFormatado += ' '.repeat(this.indentacaoAtual);
101
- this.formatarDeclaracaoOuConstruto(declaracao.expressao);
102
- }
103
- visitarDeclaracaoDefinicaoFuncao(declaracao) {
104
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}função `;
105
- if (declaracao.simbolo) {
106
- this.codigoFormatado += `${declaracao.simbolo.lexema}`;
107
- }
108
- this.formatarDeclaracaoOuConstruto(declaracao.funcao);
109
- }
110
- visitarDeclaracaoEnquanto(declaracao) {
111
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}enquanto `;
112
- this.formatarDeclaracaoOuConstruto(declaracao.condicao);
113
- this.formatarDeclaracaoOuConstruto(declaracao.corpo);
114
- }
115
- visitarDeclaracaoEscolha(declaracao) {
116
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}escolha `;
117
- this.formatarDeclaracaoOuConstruto(declaracao.identificadorOuLiteral);
118
- this.codigoFormatado += ` {${this.quebraLinha}`;
119
- this.indentacaoAtual += this.tamanhoIndentacao;
120
- for (let caminho of declaracao.caminhos) {
121
- for (let declaracoes of caminho.condicoes) {
122
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}caso `;
123
- this.formatarDeclaracaoOuConstruto(declaracoes);
124
- this.codigoFormatado += ':';
125
- this.codigoFormatado += this.quebraLinha;
126
- }
127
- for (let declaracoes of caminho.declaracoes) {
128
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
129
- this.formatarDeclaracaoOuConstruto(declaracoes);
130
- }
131
- }
132
- for (let padrao of declaracao.caminhoPadrao.declaracoes) {
133
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}padrao:`;
134
- this.codigoFormatado += this.quebraLinha;
135
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
136
- this.formatarDeclaracaoOuConstruto(padrao);
137
- }
138
- this.indentacaoAtual -= this.tamanhoIndentacao;
139
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
140
- }
141
- visitarDeclaracaoEscreva(declaracao) {
142
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}escreva(`;
143
- for (let argumento of declaracao.argumentos) {
144
- this.formatarDeclaracaoOuConstruto(argumento);
145
- }
146
- this.codigoFormatado += `)${this.quebraLinha}`;
147
- }
148
- visitarDeclaracaoFazer(declaracao) {
149
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}fazer {${this.quebraLinha}`;
150
- this.indentacaoAtual += this.tamanhoIndentacao;
151
- for (let declaracaoBloco of declaracao.caminhoFazer.declaracoes) {
152
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
153
- }
154
- this.indentacaoAtual -= this.tamanhoIndentacao;
155
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}} enquanto `;
156
- this.formatarDeclaracaoOuConstruto(declaracao.condicaoEnquanto);
157
- this.codigoFormatado += `${this.quebraLinha}`;
158
- }
159
- visitarDeclaracaoImportar(declaracao) {
160
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}importar(`;
161
- this.formatarDeclaracaoOuConstruto(declaracao.caminho);
162
- this.codigoFormatado += `)`;
163
- }
164
- visitarDeclaracaoPara(declaracao) {
165
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}para `;
166
- this.devePularLinha = false;
167
- if (declaracao.inicializador) {
168
- if (Array.isArray(declaracao.inicializador)) {
169
- this.deveIndentar = false;
170
- for (let declaracaoInicializador of declaracao.inicializador) {
171
- this.formatarDeclaracaoOuConstruto(declaracaoInicializador);
172
- }
173
- this.deveIndentar = true;
174
- }
175
- else {
176
- this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
177
- }
178
- }
179
- this.codigoFormatado += `; `;
180
- this.formatarDeclaracaoOuConstruto(declaracao.condicao);
181
- this.codigoFormatado += `; `;
182
- this.formatarDeclaracaoOuConstruto(declaracao.incrementar);
183
- this.devePularLinha = true;
184
- this.codigoFormatado += ` {${this.quebraLinha}`;
185
- this.indentacaoAtual += this.tamanhoIndentacao;
186
- for (let declaracaoBloco of declaracao.corpo.declaracoes) {
187
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
188
- }
189
- this.indentacaoAtual -= this.tamanhoIndentacao;
190
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
191
- }
192
- visitarDeclaracaoParaCada(declaracao) {
193
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}para cada ${declaracao.nomeVariavelIteracao} de ${declaracao.vetor.simbolo.lexema}`;
194
- this.visitarExpressaoBloco(declaracao.corpo);
195
- }
196
- visitarDeclaracaoSe(declaracao) {
197
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}se `;
198
- this.formatarDeclaracaoOuConstruto(declaracao.condicao);
199
- this.codigoFormatado += ` {${this.quebraLinha}`;
200
- this.indentacaoAtual += this.tamanhoIndentacao;
201
- for (let declaracaoBloco of declaracao.caminhoEntao.declaracoes) {
202
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
203
- }
204
- this.indentacaoAtual -= this.tamanhoIndentacao;
205
- if (declaracao.caminhoSenao) {
206
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}} senão `;
207
- this.formatarDeclaracaoOuConstruto(declaracao.caminhoSenao);
208
- }
209
- else {
210
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
211
- }
212
- }
213
- visitarDeclaracaoTente(declaracao) {
214
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}tente {${this.quebraLinha}`;
215
- this.indentacaoAtual += this.tamanhoIndentacao;
216
- for (let declaracaoBloco of declaracao.caminhoTente) {
217
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
218
- }
219
- this.indentacaoAtual -= this.tamanhoIndentacao;
220
- if (declaracao.caminhoPegue) {
221
- this.codigoFormatado += `} pegue {${this.quebraLinha}`;
222
- if (declaracao.caminhoPegue instanceof construtos_1.FuncaoConstruto) {
223
- // Se tem um parâmetro de erro.
224
- }
225
- else {
226
- // Se não tem um parâmetro de erro.
227
- this.indentacaoAtual += this.tamanhoIndentacao;
228
- for (let declaracaoBloco of declaracao.caminhoPegue) {
229
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
230
- }
231
- }
232
- }
233
- this.indentacaoAtual -= this.tamanhoIndentacao;
234
- if (declaracao.caminhoFinalmente) {
235
- this.codigoFormatado += `} finalmente {${this.quebraLinha}`;
236
- this.indentacaoAtual += this.tamanhoIndentacao;
237
- for (let declaracaoBloco of declaracao.caminhoFinalmente) {
238
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
239
- }
240
- }
241
- this.indentacaoAtual -= this.tamanhoIndentacao;
242
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
243
- }
244
- visitarDeclaracaoVar(declaracao) {
245
- if (this.deveIndentar) {
246
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
247
- }
248
- this.codigoFormatado += `var ${declaracao.simbolo.lexema}`;
249
- if (declaracao.inicializador) {
250
- this.codigoFormatado += ` = `;
251
- this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
252
- }
253
- if (this.devePularLinha) {
254
- this.codigoFormatado += this.quebraLinha;
255
- }
256
- }
257
- visitarDeclaracaoVarMultiplo(declaracao) {
258
- // TODO: Até então o código nunca passa por aqui, porque o avaliador sintático
259
- // converte `VarMultiplo` em várias declarações `var`.
260
- // Talvez mudar a avaliação sintática para não fazer mais isso.
261
- console.log(declaracao);
262
- }
263
- visitarExpressaoAcessoIndiceVariavel(expressao) {
264
- this.formatarDeclaracaoOuConstruto(expressao.entidadeChamada);
265
- this.codigoFormatado += `[`;
266
- this.formatarDeclaracaoOuConstruto(expressao.indice);
267
- this.codigoFormatado += `]`;
268
- }
269
- visitarExpressaoAcessoMetodo(expressao) {
270
- this.formatarDeclaracaoOuConstruto(expressao.objeto);
271
- this.codigoFormatado += '.';
272
- this.codigoFormatado += expressao.simbolo.lexema;
273
- }
274
- visitarExpressaoAgrupamento(expressao) {
275
- this.codigoFormatado += '(';
276
- this.formatarDeclaracaoOuConstruto(expressao.expressao);
277
- this.codigoFormatado += ')';
278
- }
279
- visitarExpressaoAtribuicaoPorIndice(expressao) {
280
- this.formatarDeclaracaoOuConstruto(expressao.objeto);
281
- this.codigoFormatado += '[';
282
- this.formatarDeclaracaoOuConstruto(expressao.indice);
283
- this.codigoFormatado += '] = ';
284
- this.formatarDeclaracaoOuConstruto(expressao.valor);
285
- this.codigoFormatado += this.quebraLinha;
286
- }
287
- visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
288
- // Implementar somente para VisuAlg que tem atribuição diferente de Delégua - matriz[1, 2] = 1
289
- throw new Error('Método não implementado.');
290
- }
291
- visitarExpressaoAcessoElementoMatriz(expressao) {
292
- // Implementar somente para VisuAlg que tem acesso ao elemento da matriz diferente de Delégua - var valor = matriz[1, 2]
293
- throw new Error('Método não implementado.');
294
- }
295
- visitarExpressaoBinaria(expressao) {
296
- this.formatarDeclaracaoOuConstruto(expressao.esquerda);
297
- switch (expressao.operador.tipo) {
298
- case delegua_1.default.ADICAO:
299
- this.codigoFormatado += ` + `;
300
- break;
301
- case delegua_1.default.DIVISAO:
302
- this.codigoFormatado += ` / `;
303
- break;
304
- case delegua_1.default.DIVISAO_IGUAL:
305
- this.codigoFormatado += ` /= `;
306
- break;
307
- case delegua_1.default.DIVISAO_INTEIRA:
308
- this.codigoFormatado += ` \\ `;
309
- break;
310
- case delegua_1.default.DIVISAO_INTEIRA_IGUAL:
311
- this.codigoFormatado += ` \\= `;
312
- break;
313
- case delegua_1.default.EXPONENCIACAO:
314
- this.codigoFormatado += ` ** `;
315
- break;
316
- case delegua_1.default.IGUAL_IGUAL:
317
- this.codigoFormatado += ` == `;
318
- break;
319
- case delegua_1.default.MAIOR:
320
- this.codigoFormatado += ` > `;
321
- break;
322
- case delegua_1.default.MAIOR_IGUAL:
323
- this.codigoFormatado += ` >= `;
324
- break;
325
- case delegua_1.default.MAIS_IGUAL:
326
- this.codigoFormatado += ` += `;
327
- break;
328
- case delegua_1.default.MENOR:
329
- this.codigoFormatado += ` < `;
330
- break;
331
- case delegua_1.default.MENOR_IGUAL:
332
- this.codigoFormatado += ` <= `;
333
- break;
334
- case delegua_1.default.MENOS_IGUAL:
335
- this.codigoFormatado += ` -= `;
336
- break;
337
- case delegua_1.default.MODULO:
338
- this.codigoFormatado += ` % `;
339
- break;
340
- case delegua_1.default.MODULO_IGUAL:
341
- this.codigoFormatado += ` %= `;
342
- break;
343
- case delegua_1.default.MULTIPLICACAO:
344
- this.codigoFormatado += ` * `;
345
- break;
346
- case delegua_1.default.MULTIPLICACAO_IGUAL:
347
- this.codigoFormatado += ` * `;
348
- break;
349
- case delegua_1.default.SUBTRACAO:
350
- this.codigoFormatado += ` - `;
351
- break;
352
- }
353
- this.formatarDeclaracaoOuConstruto(expressao.direita);
354
- }
355
- formatarBlocoOuVetorDeclaracoes(declaracoes) {
356
- this.codigoFormatado += `{${this.quebraLinha}`;
357
- this.indentacaoAtual += this.tamanhoIndentacao;
358
- for (let declaracaoBloco of declaracoes) {
359
- this.formatarDeclaracaoOuConstruto(declaracaoBloco);
360
- }
361
- this.indentacaoAtual -= this.tamanhoIndentacao;
362
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
363
- }
364
- visitarExpressaoBloco(declaracao) {
365
- this.formatarBlocoOuVetorDeclaracoes(declaracao.declaracoes);
366
- }
367
- visitarExpressaoContinua(declaracao) {
368
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}continua${this.quebraLinha}`;
369
- }
370
- visitarExpressaoDeChamada(expressao) {
371
- this.formatarDeclaracaoOuConstruto(expressao.entidadeChamada);
372
- this.codigoFormatado += '(';
373
- for (let argumento of expressao.argumentos) {
374
- this.formatarDeclaracaoOuConstruto(argumento);
375
- this.codigoFormatado += ', ';
376
- }
377
- if (expressao.argumentos.length > 0) {
378
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
379
- }
380
- this.codigoFormatado += ')';
381
- }
382
- visitarDeclaracaoAleatorio(declaracao) {
383
- throw new Error('Método não implementado.');
384
- }
385
- visitarExpressaoDefinirValor(expressao) {
386
- this.formatarDeclaracaoOuConstruto(expressao.objeto);
387
- this.codigoFormatado += `.${expressao.nome.lexema} = `;
388
- this.formatarDeclaracaoOuConstruto(expressao.valor);
389
- this.codigoFormatado += `${this.quebraLinha}`;
390
- }
391
- visitarExpressaoDeleguaFuncao(expressao) {
392
- throw new Error('Método não implementado.');
393
- }
394
- visitarExpressaoDeVariavel(expressao) {
395
- this.codigoFormatado += expressao.simbolo.lexema;
396
- }
397
- visitarExpressaoDicionario(expressao) {
398
- this.codigoFormatado += `{`;
399
- for (let i = 0; i < expressao.chaves.length; i++) {
400
- this.formatarDeclaracaoOuConstruto(expressao.chaves[i]);
401
- this.codigoFormatado += `: `;
402
- this.formatarDeclaracaoOuConstruto(expressao.valores[i]);
403
- this.codigoFormatado += `, `;
404
- }
405
- if (expressao.chaves.length > 0) {
406
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
407
- }
408
- this.codigoFormatado += `}`;
409
- }
410
- visitarExpressaoExpressaoRegular(expressao) {
411
- this.codigoFormatado += `||${expressao.valor}||`;
412
- }
413
- visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
414
- throw new Error('Método não implementado.');
415
- }
416
- visitarExpressaoFalhar(expressao) {
417
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}falhar`;
418
- if (expressao.explicacao) {
419
- this.codigoFormatado += ` `;
420
- this.formatarDeclaracaoOuConstruto(expressao.explicacao);
421
- }
422
- this.codigoFormatado += `${this.quebraLinha}`;
423
- }
424
- visitarExpressaoFimPara(declaracao) {
425
- throw new Error('Método não implementado.');
426
- }
427
- visitarExpressaoFormatacaoEscrita(declaracao) {
428
- throw new Error('Método não implementado.');
429
- }
430
- visitarExpressaoFuncaoConstruto(expressao) {
431
- this.codigoFormatado += `(`;
432
- for (let argumento of expressao.parametros) {
433
- this.codigoFormatado += `${argumento.nome.lexema}${argumento.tipoDado && argumento.tipoDado.tipo ? `: ${argumento.tipoDado.tipo}, ` : ', '}`;
434
- }
435
- if (expressao.parametros.length > 0) {
436
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
437
- }
438
- this.codigoFormatado += `) `;
439
- this.formatarBlocoOuVetorDeclaracoes(expressao.corpo);
440
- }
441
- visitarExpressaoIsto(expressao) {
442
- this.codigoFormatado += `isto`;
443
- }
444
- visitarExpressaoLeia(expressao) {
445
- this.codigoFormatado += `leia(`;
446
- for (let argumento of expressao.argumentos) {
447
- this.formatarDeclaracaoOuConstruto(argumento);
448
- this.codigoFormatado += `, `;
449
- }
450
- if (expressao.argumentos.length > 0) {
451
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
452
- }
453
- this.codigoFormatado += `)`;
454
- }
455
- visitarExpressaoLeiaMultiplo(expressao) {
456
- throw new Error('Método não implementado.');
457
- }
458
- visitarExpressaoLiteral(expressao) {
459
- if (typeof expressao.valor === 'string') {
460
- this.codigoFormatado += `'${expressao.valor}'`;
461
- return;
462
- }
463
- this.codigoFormatado += expressao.valor;
464
- }
465
- visitarExpressaoLogica(expressao) {
466
- this.formatarDeclaracaoOuConstruto(expressao.esquerda);
467
- switch (expressao.operador.tipo) {
468
- case delegua_1.default.E:
469
- this.codigoFormatado += ` e `;
470
- break;
471
- case delegua_1.default.EM:
472
- this.codigoFormatado += ` em `;
473
- break;
474
- case delegua_1.default.OU:
475
- this.codigoFormatado += ` ou `;
476
- break;
477
- }
478
- this.formatarDeclaracaoOuConstruto(expressao.direita);
479
- }
480
- visitarExpressaoRetornar(declaracao) {
481
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}retorna`;
482
- if (declaracao.valor) {
483
- this.codigoFormatado += ` `;
484
- this.formatarDeclaracaoOuConstruto(declaracao.valor);
485
- }
486
- this.codigoFormatado += `${this.quebraLinha}`;
487
- }
488
- visitarExpressaoSuper(expressao) {
489
- // TODO: `expressao.metodo` deveria ser um `Construto`, não um `Simbolo` aqui.
490
- this.codigoFormatado += `super.${expressao.metodo.lexema}()`;
491
- console.log(expressao);
492
- }
493
- visitarExpressaoSustar(declaracao) {
494
- this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}sustar${this.quebraLinha}`;
495
- }
496
- visitarExpressaoTipoDe(expressao) {
497
- this.codigoFormatado += `tipo de `;
498
- this.formatarDeclaracaoOuConstruto(expressao.valor);
499
- }
500
- visitarExpressaoUnaria(expressao) {
501
- let operador;
502
- switch (expressao.operador.tipo) {
503
- case delegua_1.default.INCREMENTAR:
504
- operador = `++`;
505
- break;
506
- case delegua_1.default.DECREMENTAR:
507
- operador = `--`;
508
- break;
509
- }
510
- switch (expressao.incidenciaOperador) {
511
- case 'ANTES':
512
- this.codigoFormatado += operador;
513
- this.formatarDeclaracaoOuConstruto(expressao.operando);
514
- break;
515
- case 'DEPOIS':
516
- this.formatarDeclaracaoOuConstruto(expressao.operando);
517
- this.codigoFormatado += operador;
518
- break;
519
- }
520
- if (this.devePularLinha) {
521
- this.codigoFormatado += this.quebraLinha;
522
- }
523
- }
524
- visitarExpressaoVetor(expressao) {
525
- this.codigoFormatado += '[';
526
- for (let valor of expressao.valores) {
527
- this.formatarDeclaracaoOuConstruto(valor);
528
- this.codigoFormatado += ', ';
529
- }
530
- if (expressao.valores.length > 0) {
531
- this.codigoFormatado = this.codigoFormatado.slice(0, -2);
532
- }
533
- this.codigoFormatado += ']';
534
- }
535
- formatarDeclaracaoOuConstruto(declaracaoOuConstruto) {
536
- switch (declaracaoOuConstruto.constructor.name) {
537
- case 'AcessoIndiceVariavel':
538
- this.visitarExpressaoAcessoIndiceVariavel(declaracaoOuConstruto);
539
- break;
540
- case 'AcessoMetodoOuPropriedade':
541
- this.visitarExpressaoAcessoMetodo(declaracaoOuConstruto);
542
- break;
543
- case 'Agrupamento':
544
- this.visitarExpressaoAgrupamento(declaracaoOuConstruto);
545
- break;
546
- case 'AtribuicaoPorIndice':
547
- this.visitarExpressaoAtribuicaoPorIndice(declaracaoOuConstruto);
548
- break;
549
- case 'Atribuir':
550
- this.visitarExpressaoDeAtribuicao(declaracaoOuConstruto);
551
- break;
552
- case 'Binario':
553
- this.visitarExpressaoBinaria(declaracaoOuConstruto);
554
- break;
555
- case 'Bloco':
556
- this.visitarExpressaoBloco(declaracaoOuConstruto);
557
- break;
558
- case 'Chamada':
559
- this.visitarExpressaoDeChamada(declaracaoOuConstruto);
560
- break;
561
- case 'Classe':
562
- this.visitarDeclaracaoClasse(declaracaoOuConstruto);
563
- break;
564
- case 'Continua':
565
- this.visitarExpressaoContinua(declaracaoOuConstruto);
566
- break;
567
- case 'DefinirValor':
568
- this.visitarExpressaoDefinirValor(declaracaoOuConstruto);
569
- break;
570
- case 'Dicionario':
571
- this.visitarExpressaoDicionario(declaracaoOuConstruto);
572
- break;
573
- case 'Escolha':
574
- this.visitarDeclaracaoEscolha(declaracaoOuConstruto);
575
- break;
576
- case 'Enquanto':
577
- this.visitarDeclaracaoEnquanto(declaracaoOuConstruto);
578
- break;
579
- case 'Escreva':
580
- this.visitarDeclaracaoEscreva(declaracaoOuConstruto);
581
- break;
582
- case 'Expressao':
583
- this.visitarDeclaracaoDeExpressao(declaracaoOuConstruto);
584
- break;
585
- case 'ExpressaoRegular':
586
- this.visitarExpressaoExpressaoRegular(declaracaoOuConstruto);
587
- break;
588
- case 'Falhar':
589
- this.visitarExpressaoFalhar(declaracaoOuConstruto);
590
- break;
591
- case 'Fazer':
592
- this.visitarDeclaracaoFazer(declaracaoOuConstruto);
593
- break;
594
- case 'FuncaoConstruto':
595
- this.visitarExpressaoFuncaoConstruto(declaracaoOuConstruto);
596
- break;
597
- case 'FuncaoDeclaracao':
598
- this.visitarDeclaracaoDefinicaoFuncao(declaracaoOuConstruto);
599
- break;
600
- case 'Importar':
601
- this.visitarDeclaracaoImportar(declaracaoOuConstruto);
602
- break;
603
- case 'Isto':
604
- this.visitarExpressaoIsto(declaracaoOuConstruto);
605
- break;
606
- case 'Leia':
607
- this.visitarExpressaoLeia(declaracaoOuConstruto);
608
- break;
609
- case 'Literal':
610
- this.visitarExpressaoLiteral(declaracaoOuConstruto);
611
- break;
612
- case 'Logico':
613
- this.visitarExpressaoLogica(declaracaoOuConstruto);
614
- break;
615
- case 'Para':
616
- this.visitarDeclaracaoPara(declaracaoOuConstruto);
617
- break;
618
- case 'ParaCada':
619
- this.visitarDeclaracaoParaCada(declaracaoOuConstruto);
620
- break;
621
- case 'Retorna':
622
- this.visitarExpressaoRetornar(declaracaoOuConstruto);
623
- break;
624
- case 'Se':
625
- this.visitarDeclaracaoSe(declaracaoOuConstruto);
626
- break;
627
- case 'Super':
628
- this.visitarExpressaoSuper(declaracaoOuConstruto);
629
- break;
630
- case 'Sustar':
631
- this.visitarExpressaoSustar(declaracaoOuConstruto);
632
- break;
633
- case 'TendoComo':
634
- this.visitarDeclaracaoTendoComo(declaracaoOuConstruto);
635
- break;
636
- case 'Tente':
637
- this.visitarDeclaracaoTente(declaracaoOuConstruto);
638
- break;
639
- case 'TipoDe':
640
- this.visitarExpressaoTipoDe(declaracaoOuConstruto);
641
- break;
642
- case 'Unario':
643
- this.visitarExpressaoUnaria(declaracaoOuConstruto);
644
- break;
645
- case 'Const':
646
- this.visitarDeclaracaoConst(declaracaoOuConstruto);
647
- break;
648
- case 'Var':
649
- this.visitarDeclaracaoVar(declaracaoOuConstruto);
650
- break;
651
- case 'Variavel':
652
- this.visitarExpressaoDeVariavel(declaracaoOuConstruto);
653
- break;
654
- case 'Vetor':
655
- this.visitarExpressaoVetor(declaracaoOuConstruto);
656
- break;
657
- default:
658
- console.log(declaracaoOuConstruto.constructor.name);
659
- break;
660
- }
661
- }
662
- /**
663
- * Devolve código formatado de acordo com os símbolos encontrados.
664
- * @param {Declaracao[]} declaracoes Um vetor de declarações.
665
- * @returns Código Delégua formatado.
666
- */
667
- formatar(declaracoes) {
668
- this.codigoFormatado = '';
669
- this.indentacaoAtual = 0;
670
- for (let declaracao of declaracoes) {
671
- this.formatarDeclaracaoOuConstruto(declaracao);
672
- }
673
- return this.codigoFormatado;
674
- }
675
- }
676
- exports.FormatadorDelegua = FormatadorDelegua;
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.FormatadorDelegua = void 0;
7
+ const construtos_1 = require("../construtos");
8
+ const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
9
+ /**
10
+ * O formatador de código Delégua.
11
+ * Normalmente usado por IDEs, mas pode ser usado por linha de comando ou programaticamente.
12
+ */
13
+ class FormatadorDelegua {
14
+ constructor(quebraLinha, tamanhoIndentacao = 4) {
15
+ this.quebraLinha = quebraLinha;
16
+ this.tamanhoIndentacao = tamanhoIndentacao;
17
+ this.indentacaoAtual = 0;
18
+ this.codigoFormatado = '';
19
+ this.devePularLinha = true;
20
+ this.deveIndentar = true;
21
+ }
22
+ visitarDeclaracaoComentario(declaracao) {
23
+ if (declaracao.multilinha) {
24
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}/* `;
25
+ for (let linhaConteudo of declaracao.conteudo) {
26
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)} ${linhaConteudo.replace(/\s+/g, " ")}${this.quebraLinha}`;
27
+ }
28
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)} */${this.quebraLinha}`;
29
+ }
30
+ else {
31
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}// `;
32
+ this.codigoFormatado += declaracao.conteudo.replace(/\s+/g, " ");
33
+ this.codigoFormatado += `${this.quebraLinha}`;
34
+ }
35
+ }
36
+ visitarDeclaracaoTendoComo(declaracao) {
37
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}tendo `;
38
+ this.formatarDeclaracaoOuConstruto(declaracao.inicializacaoVariavel);
39
+ this.codigoFormatado += ` como ${declaracao.simboloVariavel.lexema} `;
40
+ this.formatarDeclaracaoOuConstruto(declaracao.corpo);
41
+ }
42
+ visitarDeclaracaoInicioAlgoritmo(declaracao) {
43
+ throw new Error('Método não implementado.');
44
+ }
45
+ visitarDeclaracaoCabecalhoPrograma(declaracao) {
46
+ throw new Error('Método não implementado.');
47
+ }
48
+ visitarExpressaoTupla(expressao) {
49
+ return '';
50
+ }
51
+ visitarDeclaracaoClasse(declaracao) {
52
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}classe ${declaracao.simbolo.lexema} {${this.quebraLinha}`;
53
+ this.indentacaoAtual += this.tamanhoIndentacao;
54
+ for (let propriedade of declaracao.propriedades) {
55
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}${propriedade.nome.lexema}: ${propriedade.tipo || 'qualquer'}${this.quebraLinha}`;
56
+ }
57
+ this.codigoFormatado += `${this.quebraLinha}`;
58
+ for (let metodo of declaracao.metodos) {
59
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}${metodo.simbolo.lexema}`;
60
+ this.visitarExpressaoFuncaoConstruto(metodo.funcao);
61
+ }
62
+ this.indentacaoAtual -= this.tamanhoIndentacao;
63
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
64
+ }
65
+ visitarDeclaracaoConst(declaracao) {
66
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}constante ${declaracao.simbolo.lexema}`;
67
+ if (declaracao.inicializador) {
68
+ this.codigoFormatado += ` = `;
69
+ this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
70
+ }
71
+ if (this.devePularLinha) {
72
+ this.codigoFormatado += this.quebraLinha;
73
+ }
74
+ }
75
+ visitarDeclaracaoConstMultiplo(declaracao) {
76
+ // TODO: Até então o código nunca passa por aqui, porque o avaliador sintático
77
+ // converte `ConstMultiplo` em várias declarações `const`.
78
+ // Talvez mudar a avaliação sintática para não fazer mais isso.
79
+ console.log(declaracao);
80
+ }
81
+ visitarExpressaoDeAtribuicao(expressao) {
82
+ if (expressao.valor instanceof construtos_1.Binario &&
83
+ [
84
+ delegua_1.default.MAIS_IGUAL,
85
+ delegua_1.default.MENOS_IGUAL,
86
+ delegua_1.default.MULTIPLICACAO_IGUAL,
87
+ delegua_1.default.DIVISAO_IGUAL,
88
+ delegua_1.default.DIVISAO_INTEIRA_IGUAL,
89
+ delegua_1.default.MODULO_IGUAL,
90
+ ].includes(expressao.valor.operador.tipo)) {
91
+ this.visitarExpressaoBinaria(expressao.valor);
92
+ }
93
+ else {
94
+ this.codigoFormatado += `${expressao.simbolo.lexema} = `;
95
+ this.formatarDeclaracaoOuConstruto(expressao.valor);
96
+ }
97
+ this.codigoFormatado += `${this.quebraLinha}`;
98
+ }
99
+ visitarDeclaracaoDeExpressao(declaracao) {
100
+ this.codigoFormatado += ' '.repeat(this.indentacaoAtual);
101
+ this.formatarDeclaracaoOuConstruto(declaracao.expressao);
102
+ }
103
+ visitarDeclaracaoDefinicaoFuncao(declaracao) {
104
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}função `;
105
+ if (declaracao.simbolo) {
106
+ this.codigoFormatado += `${declaracao.simbolo.lexema}`;
107
+ }
108
+ this.formatarDeclaracaoOuConstruto(declaracao.funcao);
109
+ }
110
+ visitarDeclaracaoEnquanto(declaracao) {
111
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}enquanto `;
112
+ this.formatarDeclaracaoOuConstruto(declaracao.condicao);
113
+ this.formatarDeclaracaoOuConstruto(declaracao.corpo);
114
+ }
115
+ visitarDeclaracaoEscolha(declaracao) {
116
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}escolha `;
117
+ this.formatarDeclaracaoOuConstruto(declaracao.identificadorOuLiteral);
118
+ this.codigoFormatado += ` {${this.quebraLinha}`;
119
+ this.indentacaoAtual += this.tamanhoIndentacao;
120
+ for (let caminho of declaracao.caminhos) {
121
+ for (let declaracoes of caminho.condicoes) {
122
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}caso `;
123
+ this.formatarDeclaracaoOuConstruto(declaracoes);
124
+ this.codigoFormatado += ':';
125
+ this.codigoFormatado += this.quebraLinha;
126
+ }
127
+ for (let declaracoes of caminho.declaracoes) {
128
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
129
+ this.formatarDeclaracaoOuConstruto(declaracoes);
130
+ }
131
+ }
132
+ for (let padrao of declaracao.caminhoPadrao.declaracoes) {
133
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}padrao:`;
134
+ this.codigoFormatado += this.quebraLinha;
135
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
136
+ this.formatarDeclaracaoOuConstruto(padrao);
137
+ }
138
+ this.indentacaoAtual -= this.tamanhoIndentacao;
139
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
140
+ }
141
+ visitarDeclaracaoEscreva(declaracao) {
142
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}escreva(`;
143
+ for (let argumento of declaracao.argumentos) {
144
+ this.formatarDeclaracaoOuConstruto(argumento);
145
+ }
146
+ this.codigoFormatado += `)${this.quebraLinha}`;
147
+ }
148
+ visitarDeclaracaoFazer(declaracao) {
149
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}fazer {${this.quebraLinha}`;
150
+ this.indentacaoAtual += this.tamanhoIndentacao;
151
+ for (let declaracaoBloco of declaracao.caminhoFazer.declaracoes) {
152
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
153
+ }
154
+ this.indentacaoAtual -= this.tamanhoIndentacao;
155
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}} enquanto `;
156
+ this.formatarDeclaracaoOuConstruto(declaracao.condicaoEnquanto);
157
+ this.codigoFormatado += `${this.quebraLinha}`;
158
+ }
159
+ visitarDeclaracaoImportar(declaracao) {
160
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}importar(`;
161
+ this.formatarDeclaracaoOuConstruto(declaracao.caminho);
162
+ this.codigoFormatado += `)`;
163
+ }
164
+ visitarDeclaracaoPara(declaracao) {
165
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}para `;
166
+ this.devePularLinha = false;
167
+ if (declaracao.inicializador) {
168
+ if (Array.isArray(declaracao.inicializador)) {
169
+ this.deveIndentar = false;
170
+ for (let declaracaoInicializador of declaracao.inicializador) {
171
+ this.formatarDeclaracaoOuConstruto(declaracaoInicializador);
172
+ }
173
+ this.deveIndentar = true;
174
+ }
175
+ else {
176
+ this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
177
+ }
178
+ }
179
+ this.codigoFormatado += `; `;
180
+ this.formatarDeclaracaoOuConstruto(declaracao.condicao);
181
+ this.codigoFormatado += `; `;
182
+ this.formatarDeclaracaoOuConstruto(declaracao.incrementar);
183
+ this.devePularLinha = true;
184
+ this.codigoFormatado += ` {${this.quebraLinha}`;
185
+ this.indentacaoAtual += this.tamanhoIndentacao;
186
+ for (let declaracaoBloco of declaracao.corpo.declaracoes) {
187
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
188
+ }
189
+ this.indentacaoAtual -= this.tamanhoIndentacao;
190
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
191
+ }
192
+ visitarDeclaracaoParaCada(declaracao) {
193
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}para cada ${declaracao.nomeVariavelIteracao} de ${declaracao.vetor.simbolo.lexema}`;
194
+ this.visitarExpressaoBloco(declaracao.corpo);
195
+ }
196
+ visitarDeclaracaoSe(declaracao) {
197
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}se `;
198
+ this.formatarDeclaracaoOuConstruto(declaracao.condicao);
199
+ this.codigoFormatado += ` {${this.quebraLinha}`;
200
+ this.indentacaoAtual += this.tamanhoIndentacao;
201
+ for (let declaracaoBloco of declaracao.caminhoEntao.declaracoes) {
202
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
203
+ }
204
+ this.indentacaoAtual -= this.tamanhoIndentacao;
205
+ if (declaracao.caminhoSenao) {
206
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}} senão `;
207
+ this.formatarDeclaracaoOuConstruto(declaracao.caminhoSenao);
208
+ }
209
+ else {
210
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
211
+ }
212
+ }
213
+ visitarDeclaracaoTente(declaracao) {
214
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}tente {${this.quebraLinha}`;
215
+ this.indentacaoAtual += this.tamanhoIndentacao;
216
+ for (let declaracaoBloco of declaracao.caminhoTente) {
217
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
218
+ }
219
+ this.indentacaoAtual -= this.tamanhoIndentacao;
220
+ if (declaracao.caminhoPegue) {
221
+ this.codigoFormatado += `} pegue {${this.quebraLinha}`;
222
+ if (declaracao.caminhoPegue instanceof construtos_1.FuncaoConstruto) {
223
+ // Se tem um parâmetro de erro.
224
+ }
225
+ else {
226
+ // Se não tem um parâmetro de erro.
227
+ this.indentacaoAtual += this.tamanhoIndentacao;
228
+ for (let declaracaoBloco of declaracao.caminhoPegue) {
229
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
230
+ }
231
+ }
232
+ }
233
+ this.indentacaoAtual -= this.tamanhoIndentacao;
234
+ if (declaracao.caminhoFinalmente) {
235
+ this.codigoFormatado += `} finalmente {${this.quebraLinha}`;
236
+ this.indentacaoAtual += this.tamanhoIndentacao;
237
+ for (let declaracaoBloco of declaracao.caminhoFinalmente) {
238
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
239
+ }
240
+ }
241
+ this.indentacaoAtual -= this.tamanhoIndentacao;
242
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
243
+ }
244
+ visitarDeclaracaoVar(declaracao) {
245
+ if (this.deveIndentar) {
246
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}`;
247
+ }
248
+ this.codigoFormatado += `var ${declaracao.simbolo.lexema}`;
249
+ if (declaracao.inicializador) {
250
+ this.codigoFormatado += ` = `;
251
+ this.formatarDeclaracaoOuConstruto(declaracao.inicializador);
252
+ }
253
+ if (this.devePularLinha) {
254
+ this.codigoFormatado += this.quebraLinha;
255
+ }
256
+ }
257
+ visitarDeclaracaoVarMultiplo(declaracao) {
258
+ // TODO: Até então o código nunca passa por aqui, porque o avaliador sintático
259
+ // converte `VarMultiplo` em várias declarações `var`.
260
+ // Talvez mudar a avaliação sintática para não fazer mais isso.
261
+ console.log(declaracao);
262
+ }
263
+ visitarExpressaoAcessoIndiceVariavel(expressao) {
264
+ this.formatarDeclaracaoOuConstruto(expressao.entidadeChamada);
265
+ this.codigoFormatado += `[`;
266
+ this.formatarDeclaracaoOuConstruto(expressao.indice);
267
+ this.codigoFormatado += `]`;
268
+ }
269
+ visitarExpressaoAcessoMetodo(expressao) {
270
+ this.formatarDeclaracaoOuConstruto(expressao.objeto);
271
+ this.codigoFormatado += '.';
272
+ this.codigoFormatado += expressao.simbolo.lexema;
273
+ }
274
+ visitarExpressaoAgrupamento(expressao) {
275
+ this.codigoFormatado += '(';
276
+ this.formatarDeclaracaoOuConstruto(expressao.expressao);
277
+ this.codigoFormatado += ')';
278
+ }
279
+ visitarExpressaoAtribuicaoPorIndice(expressao) {
280
+ this.formatarDeclaracaoOuConstruto(expressao.objeto);
281
+ this.codigoFormatado += '[';
282
+ this.formatarDeclaracaoOuConstruto(expressao.indice);
283
+ this.codigoFormatado += '] = ';
284
+ this.formatarDeclaracaoOuConstruto(expressao.valor);
285
+ this.codigoFormatado += this.quebraLinha;
286
+ }
287
+ visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
288
+ // Implementar somente para VisuAlg que tem atribuição diferente de Delégua - matriz[1, 2] = 1
289
+ throw new Error('Método não implementado.');
290
+ }
291
+ visitarExpressaoAcessoElementoMatriz(expressao) {
292
+ // Implementar somente para VisuAlg que tem acesso ao elemento da matriz diferente de Delégua - var valor = matriz[1, 2]
293
+ throw new Error('Método não implementado.');
294
+ }
295
+ visitarExpressaoBinaria(expressao) {
296
+ this.formatarDeclaracaoOuConstruto(expressao.esquerda);
297
+ switch (expressao.operador.tipo) {
298
+ case delegua_1.default.ADICAO:
299
+ this.codigoFormatado += ` + `;
300
+ break;
301
+ case delegua_1.default.DIVISAO:
302
+ this.codigoFormatado += ` / `;
303
+ break;
304
+ case delegua_1.default.DIVISAO_IGUAL:
305
+ this.codigoFormatado += ` /= `;
306
+ break;
307
+ case delegua_1.default.DIVISAO_INTEIRA:
308
+ this.codigoFormatado += ` \\ `;
309
+ break;
310
+ case delegua_1.default.DIVISAO_INTEIRA_IGUAL:
311
+ this.codigoFormatado += ` \\= `;
312
+ break;
313
+ case delegua_1.default.EXPONENCIACAO:
314
+ this.codigoFormatado += ` ** `;
315
+ break;
316
+ case delegua_1.default.IGUAL_IGUAL:
317
+ this.codigoFormatado += ` == `;
318
+ break;
319
+ case delegua_1.default.MAIOR:
320
+ this.codigoFormatado += ` > `;
321
+ break;
322
+ case delegua_1.default.MAIOR_IGUAL:
323
+ this.codigoFormatado += ` >= `;
324
+ break;
325
+ case delegua_1.default.MAIS_IGUAL:
326
+ this.codigoFormatado += ` += `;
327
+ break;
328
+ case delegua_1.default.MENOR:
329
+ this.codigoFormatado += ` < `;
330
+ break;
331
+ case delegua_1.default.MENOR_IGUAL:
332
+ this.codigoFormatado += ` <= `;
333
+ break;
334
+ case delegua_1.default.MENOS_IGUAL:
335
+ this.codigoFormatado += ` -= `;
336
+ break;
337
+ case delegua_1.default.MODULO:
338
+ this.codigoFormatado += ` % `;
339
+ break;
340
+ case delegua_1.default.MODULO_IGUAL:
341
+ this.codigoFormatado += ` %= `;
342
+ break;
343
+ case delegua_1.default.MULTIPLICACAO:
344
+ this.codigoFormatado += ` * `;
345
+ break;
346
+ case delegua_1.default.MULTIPLICACAO_IGUAL:
347
+ this.codigoFormatado += ` * `;
348
+ break;
349
+ case delegua_1.default.SUBTRACAO:
350
+ this.codigoFormatado += ` - `;
351
+ break;
352
+ }
353
+ this.formatarDeclaracaoOuConstruto(expressao.direita);
354
+ }
355
+ formatarBlocoOuVetorDeclaracoes(declaracoes) {
356
+ this.codigoFormatado += `{${this.quebraLinha}`;
357
+ this.indentacaoAtual += this.tamanhoIndentacao;
358
+ for (let declaracaoBloco of declaracoes) {
359
+ this.formatarDeclaracaoOuConstruto(declaracaoBloco);
360
+ }
361
+ this.indentacaoAtual -= this.tamanhoIndentacao;
362
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}}${this.quebraLinha}`;
363
+ }
364
+ visitarExpressaoBloco(declaracao) {
365
+ this.formatarBlocoOuVetorDeclaracoes(declaracao.declaracoes);
366
+ }
367
+ visitarExpressaoContinua(declaracao) {
368
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}continua${this.quebraLinha}`;
369
+ }
370
+ visitarExpressaoDeChamada(expressao) {
371
+ this.formatarDeclaracaoOuConstruto(expressao.entidadeChamada);
372
+ this.codigoFormatado += '(';
373
+ for (let argumento of expressao.argumentos) {
374
+ this.formatarDeclaracaoOuConstruto(argumento);
375
+ this.codigoFormatado += ', ';
376
+ }
377
+ if (expressao.argumentos.length > 0) {
378
+ this.codigoFormatado = this.codigoFormatado.slice(0, -2);
379
+ }
380
+ this.codigoFormatado += ')';
381
+ }
382
+ visitarDeclaracaoAleatorio(declaracao) {
383
+ throw new Error('Método não implementado.');
384
+ }
385
+ visitarExpressaoDefinirValor(expressao) {
386
+ this.formatarDeclaracaoOuConstruto(expressao.objeto);
387
+ this.codigoFormatado += `.${expressao.nome.lexema} = `;
388
+ this.formatarDeclaracaoOuConstruto(expressao.valor);
389
+ this.codigoFormatado += `${this.quebraLinha}`;
390
+ }
391
+ visitarExpressaoDeleguaFuncao(expressao) {
392
+ throw new Error('Método não implementado.');
393
+ }
394
+ visitarExpressaoDeVariavel(expressao) {
395
+ this.codigoFormatado += expressao.simbolo.lexema;
396
+ }
397
+ visitarExpressaoDicionario(expressao) {
398
+ this.codigoFormatado += `{`;
399
+ for (let i = 0; i < expressao.chaves.length; i++) {
400
+ this.formatarDeclaracaoOuConstruto(expressao.chaves[i]);
401
+ this.codigoFormatado += `: `;
402
+ this.formatarDeclaracaoOuConstruto(expressao.valores[i]);
403
+ this.codigoFormatado += `, `;
404
+ }
405
+ if (expressao.chaves.length > 0) {
406
+ this.codigoFormatado = this.codigoFormatado.slice(0, -2);
407
+ }
408
+ this.codigoFormatado += `}`;
409
+ }
410
+ visitarExpressaoExpressaoRegular(expressao) {
411
+ this.codigoFormatado += `||${expressao.valor}||`;
412
+ }
413
+ visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
414
+ throw new Error('Método não implementado.');
415
+ }
416
+ visitarExpressaoFalhar(expressao) {
417
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}falhar`;
418
+ if (expressao.explicacao) {
419
+ this.codigoFormatado += ` `;
420
+ this.formatarDeclaracaoOuConstruto(expressao.explicacao);
421
+ }
422
+ this.codigoFormatado += `${this.quebraLinha}`;
423
+ }
424
+ visitarExpressaoFimPara(declaracao) {
425
+ throw new Error('Método não implementado.');
426
+ }
427
+ visitarExpressaoFormatacaoEscrita(declaracao) {
428
+ throw new Error('Método não implementado.');
429
+ }
430
+ visitarExpressaoFuncaoConstruto(expressao) {
431
+ this.codigoFormatado += `(`;
432
+ for (let argumento of expressao.parametros) {
433
+ this.codigoFormatado += `${argumento.nome.lexema}${argumento.tipoDado && argumento.tipoDado.tipo ? `: ${argumento.tipoDado.tipo}, ` : ', '}`;
434
+ }
435
+ if (expressao.parametros.length > 0) {
436
+ this.codigoFormatado = this.codigoFormatado.slice(0, -2);
437
+ }
438
+ this.codigoFormatado += `) `;
439
+ this.formatarBlocoOuVetorDeclaracoes(expressao.corpo);
440
+ }
441
+ visitarExpressaoIsto(expressao) {
442
+ this.codigoFormatado += `isto`;
443
+ }
444
+ visitarExpressaoLeia(expressao) {
445
+ this.codigoFormatado += `leia(`;
446
+ for (let argumento of expressao.argumentos) {
447
+ this.formatarDeclaracaoOuConstruto(argumento);
448
+ this.codigoFormatado += `, `;
449
+ }
450
+ if (expressao.argumentos.length > 0) {
451
+ this.codigoFormatado = this.codigoFormatado.slice(0, -2);
452
+ }
453
+ this.codigoFormatado += `)`;
454
+ }
455
+ visitarExpressaoLeiaMultiplo(expressao) {
456
+ throw new Error('Método não implementado.');
457
+ }
458
+ visitarExpressaoLiteral(expressao) {
459
+ if (typeof expressao.valor === 'string') {
460
+ this.codigoFormatado += `'${expressao.valor}'`;
461
+ return;
462
+ }
463
+ this.codigoFormatado += expressao.valor;
464
+ }
465
+ visitarExpressaoLogica(expressao) {
466
+ this.formatarDeclaracaoOuConstruto(expressao.esquerda);
467
+ switch (expressao.operador.tipo) {
468
+ case delegua_1.default.E:
469
+ this.codigoFormatado += ` e `;
470
+ break;
471
+ case delegua_1.default.EM:
472
+ this.codigoFormatado += ` em `;
473
+ break;
474
+ case delegua_1.default.OU:
475
+ this.codigoFormatado += ` ou `;
476
+ break;
477
+ }
478
+ this.formatarDeclaracaoOuConstruto(expressao.direita);
479
+ }
480
+ visitarExpressaoRetornar(declaracao) {
481
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}retorna`;
482
+ if (declaracao.valor) {
483
+ this.codigoFormatado += ` `;
484
+ this.formatarDeclaracaoOuConstruto(declaracao.valor);
485
+ }
486
+ this.codigoFormatado += `${this.quebraLinha}`;
487
+ }
488
+ visitarExpressaoSuper(expressao) {
489
+ // TODO: `expressao.metodo` deveria ser um `Construto`, não um `Simbolo` aqui.
490
+ this.codigoFormatado += `super.${expressao.metodo.lexema}()`;
491
+ console.log(expressao);
492
+ }
493
+ visitarExpressaoSustar(declaracao) {
494
+ this.codigoFormatado += `${' '.repeat(this.indentacaoAtual)}sustar${this.quebraLinha}`;
495
+ }
496
+ visitarExpressaoTipoDe(expressao) {
497
+ this.codigoFormatado += `tipo de `;
498
+ this.formatarDeclaracaoOuConstruto(expressao.valor);
499
+ }
500
+ visitarExpressaoUnaria(expressao) {
501
+ let operador;
502
+ switch (expressao.operador.tipo) {
503
+ case delegua_1.default.INCREMENTAR:
504
+ operador = `++`;
505
+ break;
506
+ case delegua_1.default.DECREMENTAR:
507
+ operador = `--`;
508
+ break;
509
+ }
510
+ switch (expressao.incidenciaOperador) {
511
+ case 'ANTES':
512
+ this.codigoFormatado += operador;
513
+ this.formatarDeclaracaoOuConstruto(expressao.operando);
514
+ break;
515
+ case 'DEPOIS':
516
+ this.formatarDeclaracaoOuConstruto(expressao.operando);
517
+ this.codigoFormatado += operador;
518
+ break;
519
+ }
520
+ if (this.devePularLinha) {
521
+ this.codigoFormatado += this.quebraLinha;
522
+ }
523
+ }
524
+ visitarExpressaoVetor(expressao) {
525
+ this.codigoFormatado += '[';
526
+ for (let valor of expressao.valores) {
527
+ this.formatarDeclaracaoOuConstruto(valor);
528
+ this.codigoFormatado += ', ';
529
+ }
530
+ if (expressao.valores.length > 0) {
531
+ this.codigoFormatado = this.codigoFormatado.slice(0, -2);
532
+ }
533
+ this.codigoFormatado += ']';
534
+ }
535
+ formatarDeclaracaoOuConstruto(declaracaoOuConstruto) {
536
+ switch (declaracaoOuConstruto.constructor.name) {
537
+ case 'AcessoIndiceVariavel':
538
+ this.visitarExpressaoAcessoIndiceVariavel(declaracaoOuConstruto);
539
+ break;
540
+ case 'AcessoMetodoOuPropriedade':
541
+ this.visitarExpressaoAcessoMetodo(declaracaoOuConstruto);
542
+ break;
543
+ case 'Agrupamento':
544
+ this.visitarExpressaoAgrupamento(declaracaoOuConstruto);
545
+ break;
546
+ case 'AtribuicaoPorIndice':
547
+ this.visitarExpressaoAtribuicaoPorIndice(declaracaoOuConstruto);
548
+ break;
549
+ case 'Atribuir':
550
+ this.visitarExpressaoDeAtribuicao(declaracaoOuConstruto);
551
+ break;
552
+ case 'Binario':
553
+ this.visitarExpressaoBinaria(declaracaoOuConstruto);
554
+ break;
555
+ case 'Bloco':
556
+ this.visitarExpressaoBloco(declaracaoOuConstruto);
557
+ break;
558
+ case 'Chamada':
559
+ this.visitarExpressaoDeChamada(declaracaoOuConstruto);
560
+ break;
561
+ case 'Classe':
562
+ this.visitarDeclaracaoClasse(declaracaoOuConstruto);
563
+ break;
564
+ case 'Continua':
565
+ this.visitarExpressaoContinua(declaracaoOuConstruto);
566
+ break;
567
+ case 'DefinirValor':
568
+ this.visitarExpressaoDefinirValor(declaracaoOuConstruto);
569
+ break;
570
+ case 'Dicionario':
571
+ this.visitarExpressaoDicionario(declaracaoOuConstruto);
572
+ break;
573
+ case 'Escolha':
574
+ this.visitarDeclaracaoEscolha(declaracaoOuConstruto);
575
+ break;
576
+ case 'Enquanto':
577
+ this.visitarDeclaracaoEnquanto(declaracaoOuConstruto);
578
+ break;
579
+ case 'Escreva':
580
+ this.visitarDeclaracaoEscreva(declaracaoOuConstruto);
581
+ break;
582
+ case 'Expressao':
583
+ this.visitarDeclaracaoDeExpressao(declaracaoOuConstruto);
584
+ break;
585
+ case 'ExpressaoRegular':
586
+ this.visitarExpressaoExpressaoRegular(declaracaoOuConstruto);
587
+ break;
588
+ case 'Falhar':
589
+ this.visitarExpressaoFalhar(declaracaoOuConstruto);
590
+ break;
591
+ case 'Fazer':
592
+ this.visitarDeclaracaoFazer(declaracaoOuConstruto);
593
+ break;
594
+ case 'FuncaoConstruto':
595
+ this.visitarExpressaoFuncaoConstruto(declaracaoOuConstruto);
596
+ break;
597
+ case 'FuncaoDeclaracao':
598
+ this.visitarDeclaracaoDefinicaoFuncao(declaracaoOuConstruto);
599
+ break;
600
+ case 'Importar':
601
+ this.visitarDeclaracaoImportar(declaracaoOuConstruto);
602
+ break;
603
+ case 'Isto':
604
+ this.visitarExpressaoIsto(declaracaoOuConstruto);
605
+ break;
606
+ case 'Leia':
607
+ this.visitarExpressaoLeia(declaracaoOuConstruto);
608
+ break;
609
+ case 'Literal':
610
+ this.visitarExpressaoLiteral(declaracaoOuConstruto);
611
+ break;
612
+ case 'Logico':
613
+ this.visitarExpressaoLogica(declaracaoOuConstruto);
614
+ break;
615
+ case 'Para':
616
+ this.visitarDeclaracaoPara(declaracaoOuConstruto);
617
+ break;
618
+ case 'ParaCada':
619
+ this.visitarDeclaracaoParaCada(declaracaoOuConstruto);
620
+ break;
621
+ case 'Retorna':
622
+ this.visitarExpressaoRetornar(declaracaoOuConstruto);
623
+ break;
624
+ case 'Se':
625
+ this.visitarDeclaracaoSe(declaracaoOuConstruto);
626
+ break;
627
+ case 'Super':
628
+ this.visitarExpressaoSuper(declaracaoOuConstruto);
629
+ break;
630
+ case 'Sustar':
631
+ this.visitarExpressaoSustar(declaracaoOuConstruto);
632
+ break;
633
+ case 'TendoComo':
634
+ this.visitarDeclaracaoTendoComo(declaracaoOuConstruto);
635
+ break;
636
+ case 'Tente':
637
+ this.visitarDeclaracaoTente(declaracaoOuConstruto);
638
+ break;
639
+ case 'TipoDe':
640
+ this.visitarExpressaoTipoDe(declaracaoOuConstruto);
641
+ break;
642
+ case 'Unario':
643
+ this.visitarExpressaoUnaria(declaracaoOuConstruto);
644
+ break;
645
+ case 'Const':
646
+ this.visitarDeclaracaoConst(declaracaoOuConstruto);
647
+ break;
648
+ case 'Var':
649
+ this.visitarDeclaracaoVar(declaracaoOuConstruto);
650
+ break;
651
+ case 'Variavel':
652
+ this.visitarExpressaoDeVariavel(declaracaoOuConstruto);
653
+ break;
654
+ case 'Vetor':
655
+ this.visitarExpressaoVetor(declaracaoOuConstruto);
656
+ break;
657
+ default:
658
+ console.log(declaracaoOuConstruto.constructor.name);
659
+ break;
660
+ }
661
+ }
662
+ /**
663
+ * Devolve código formatado de acordo com os símbolos encontrados.
664
+ * @param {Declaracao[]} declaracoes Um vetor de declarações.
665
+ * @returns Código Delégua formatado.
666
+ */
667
+ formatar(declaracoes) {
668
+ this.codigoFormatado = '';
669
+ this.indentacaoAtual = 0;
670
+ for (let declaracao of declaracoes) {
671
+ this.formatarDeclaracaoOuConstruto(declaracao);
672
+ }
673
+ return this.codigoFormatado;
674
+ }
675
+ }
676
+ exports.FormatadorDelegua = FormatadorDelegua;
677
677
  //# sourceMappingURL=formatador-delegua.js.map