@designliquido/delegua 0.15.2 → 0.15.4

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 (347) hide show
  1. package/README.md +85 -85
  2. package/bin/delegua +2 -2
  3. package/bin/package.json +88 -88
  4. package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +67 -67
  5. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +215 -215
  6. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +92 -92
  7. package/fontes/avaliador-sintatico/avaliador-sintatico.js +857 -857
  8. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.d.ts +27 -27
  9. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +319 -294
  10. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +69 -69
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +640 -640
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.d.ts +84 -84
  14. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +714 -714
  15. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +20 -20
  16. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +149 -149
  17. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.d.ts +49 -49
  18. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js +419 -419
  19. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.d.ts +73 -73
  20. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +537 -534
  21. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +1 -1
  22. package/fontes/avaliador-sintatico/dialetos/index.d.ts +5 -5
  23. package/fontes/avaliador-sintatico/dialetos/index.js +21 -21
  24. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -5
  25. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js +11 -11
  26. package/fontes/avaliador-sintatico/index.d.ts +2 -2
  27. package/fontes/avaliador-sintatico/index.js +18 -18
  28. package/fontes/avaliador-sintatico/retornos/index.d.ts +3 -3
  29. package/fontes/avaliador-sintatico/retornos/index.js +19 -19
  30. package/fontes/avaliador-sintatico/retornos/retorno-declaracao.d.ts +3 -3
  31. package/fontes/avaliador-sintatico/retornos/retorno-declaracao.js +2 -2
  32. package/fontes/avaliador-sintatico/retornos/retorno-primario.d.ts +3 -3
  33. package/fontes/avaliador-sintatico/retornos/retorno-primario.js +2 -2
  34. package/fontes/avaliador-sintatico/retornos/retorno-resolver-declaracao.d.ts +2 -2
  35. package/fontes/avaliador-sintatico/retornos/retorno-resolver-declaracao.js +2 -2
  36. package/fontes/bibliotecas/biblioteca-global.d.ts +3 -3
  37. package/fontes/bibliotecas/biblioteca-global.js +315 -315
  38. package/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts +1 -1
  39. package/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.js +230 -230
  40. package/fontes/bibliotecas/dialetos/egua-classico/index.d.ts +2 -2
  41. package/fontes/bibliotecas/dialetos/egua-classico/index.js +32 -32
  42. package/fontes/bibliotecas/dialetos/egua-classico/matematica.d.ts +1 -1
  43. package/fontes/bibliotecas/dialetos/egua-classico/matematica.js +478 -478
  44. package/fontes/bibliotecas/dialetos/egua-classico/tempo.d.ts +1 -1
  45. package/fontes/bibliotecas/dialetos/egua-classico/tempo.js +39 -39
  46. package/fontes/bibliotecas/dialetos/egua-classico/textos.d.ts +8 -8
  47. package/fontes/bibliotecas/dialetos/egua-classico/textos.js +201 -201
  48. package/fontes/bibliotecas/dialetos/visualg/caracteres.d.ts +3 -0
  49. package/fontes/bibliotecas/dialetos/visualg/caracteres.js +35 -0
  50. package/fontes/bibliotecas/dialetos/visualg/caracteres.js.map +1 -0
  51. package/fontes/bibliotecas/dialetos/visualg/index.d.ts +2 -0
  52. package/fontes/bibliotecas/dialetos/visualg/index.js +18 -0
  53. package/fontes/bibliotecas/dialetos/visualg/index.js.map +1 -1
  54. package/fontes/bibliotecas/dialetos/visualg/numerica.d.ts +3 -0
  55. package/fontes/bibliotecas/dialetos/visualg/numerica.js +65 -0
  56. package/fontes/bibliotecas/dialetos/visualg/numerica.js.map +1 -0
  57. package/fontes/bibliotecas/primitivas-texto.d.ts +11 -11
  58. package/fontes/bibliotecas/primitivas-texto.js +12 -12
  59. package/fontes/bibliotecas/primitivas-vetor.d.ts +15 -15
  60. package/fontes/bibliotecas/primitivas-vetor.js +33 -33
  61. package/fontes/construtos/acesso-indice-variavel.d.ts +15 -15
  62. package/fontes/construtos/acesso-indice-variavel.js +20 -20
  63. package/fontes/construtos/acesso-metodo.d.ts +14 -14
  64. package/fontes/construtos/acesso-metodo.js +19 -19
  65. package/fontes/construtos/agrupamento.d.ts +14 -14
  66. package/fontes/construtos/agrupamento.js +19 -19
  67. package/fontes/construtos/atribuicao-sobrescrita.d.ts +11 -11
  68. package/fontes/construtos/atribuicao-sobrescrita.js +16 -16
  69. package/fontes/construtos/atribuir.d.ts +10 -10
  70. package/fontes/construtos/atribuir.js +15 -15
  71. package/fontes/construtos/binario.d.ts +22 -22
  72. package/fontes/construtos/binario.js +27 -27
  73. package/fontes/construtos/chamada.d.ts +13 -13
  74. package/fontes/construtos/chamada.js +36 -36
  75. package/fontes/construtos/construto.d.ts +7 -7
  76. package/fontes/construtos/construto.js +2 -2
  77. package/fontes/construtos/definir-valor.d.ts +11 -11
  78. package/fontes/construtos/definir-valor.js +16 -16
  79. package/fontes/construtos/dicionario.d.ts +10 -10
  80. package/fontes/construtos/dicionario.js +15 -15
  81. package/fontes/construtos/formatacao-escrita.d.ts +16 -16
  82. package/fontes/construtos/formatacao-escrita.js +21 -21
  83. package/fontes/construtos/funcao.d.ts +10 -10
  84. package/fontes/construtos/funcao.js +15 -15
  85. package/fontes/construtos/index.d.ts +19 -19
  86. package/fontes/construtos/index.js +35 -35
  87. package/fontes/construtos/isto.d.ts +9 -9
  88. package/fontes/construtos/isto.js +14 -14
  89. package/fontes/construtos/literal.d.ts +10 -10
  90. package/fontes/construtos/literal.js +14 -14
  91. package/fontes/construtos/logico.d.ts +11 -11
  92. package/fontes/construtos/logico.js +16 -16
  93. package/fontes/construtos/super.d.ts +10 -10
  94. package/fontes/construtos/super.js +15 -15
  95. package/fontes/construtos/unario.d.ts +11 -11
  96. package/fontes/construtos/unario.js +16 -16
  97. package/fontes/construtos/variavel.d.ts +9 -9
  98. package/fontes/construtos/variavel.js +14 -14
  99. package/fontes/construtos/vetor.d.ts +9 -9
  100. package/fontes/construtos/vetor.js +14 -14
  101. package/fontes/declaracoes/bloco.d.ts +7 -7
  102. package/fontes/declaracoes/bloco.js +14 -14
  103. package/fontes/declaracoes/classe.d.ts +9 -9
  104. package/fontes/declaracoes/classe.js +16 -16
  105. package/fontes/declaracoes/continua.d.ts +6 -6
  106. package/fontes/declaracoes/continua.js +13 -13
  107. package/fontes/declaracoes/declaracao.d.ts +8 -8
  108. package/fontes/declaracoes/declaracao.js +17 -17
  109. package/fontes/declaracoes/enquanto.d.ts +9 -9
  110. package/fontes/declaracoes/enquanto.js +15 -15
  111. package/fontes/declaracoes/escolha.d.ts +14 -14
  112. package/fontes/declaracoes/escolha.js +19 -19
  113. package/fontes/declaracoes/escreva-mesma-linha.d.ts +8 -8
  114. package/fontes/declaracoes/escreva-mesma-linha.js +14 -14
  115. package/fontes/declaracoes/escreva.d.ts +8 -8
  116. package/fontes/declaracoes/escreva.js +14 -14
  117. package/fontes/declaracoes/expressao.d.ts +8 -8
  118. package/fontes/declaracoes/expressao.js +14 -14
  119. package/fontes/declaracoes/fazer.d.ts +8 -8
  120. package/fontes/declaracoes/fazer.js +15 -15
  121. package/fontes/declaracoes/funcao.d.ts +9 -9
  122. package/fontes/declaracoes/funcao.js +15 -15
  123. package/fontes/declaracoes/importar.d.ts +9 -9
  124. package/fontes/declaracoes/importar.js +15 -15
  125. package/fontes/declaracoes/index.d.ts +19 -19
  126. package/fontes/declaracoes/index.js +35 -35
  127. package/fontes/declaracoes/leia.d.ts +12 -12
  128. package/fontes/declaracoes/leia.js +18 -18
  129. package/fontes/declaracoes/para.d.ts +10 -10
  130. package/fontes/declaracoes/para.js +17 -17
  131. package/fontes/declaracoes/retorna.d.ts +8 -8
  132. package/fontes/declaracoes/retorna.js +15 -15
  133. package/fontes/declaracoes/se.d.ts +11 -11
  134. package/fontes/declaracoes/se.js +17 -17
  135. package/fontes/declaracoes/sustar.d.ts +6 -6
  136. package/fontes/declaracoes/sustar.js +13 -13
  137. package/fontes/declaracoes/tente.d.ts +14 -14
  138. package/fontes/declaracoes/tente.js +20 -20
  139. package/fontes/declaracoes/var.d.ts +9 -9
  140. package/fontes/declaracoes/var.js +15 -15
  141. package/fontes/depuracao/cyrb53.d.ts +9 -9
  142. package/fontes/depuracao/cyrb53.js +22 -22
  143. package/fontes/depuracao/index.d.ts +2 -2
  144. package/fontes/depuracao/index.js +23 -23
  145. package/fontes/depuracao/ponto-parada.d.ts +4 -4
  146. package/fontes/depuracao/ponto-parada.js +2 -2
  147. package/fontes/espaco-variaveis.d.ts +19 -19
  148. package/fontes/espaco-variaveis.js +19 -19
  149. package/fontes/estruturas/chamavel.d.ts +5 -5
  150. package/fontes/estruturas/chamavel.js +12 -12
  151. package/fontes/estruturas/classe-padrao.d.ts +17 -17
  152. package/fontes/estruturas/classe-padrao.js +28 -28
  153. package/fontes/estruturas/delegua-classe.d.ts +16 -16
  154. package/fontes/estruturas/delegua-classe.js +38 -38
  155. package/fontes/estruturas/delegua-funcao.d.ts +18 -18
  156. package/fontes/estruturas/delegua-funcao.js +60 -60
  157. package/fontes/estruturas/funcao-padrao.d.ts +12 -12
  158. package/fontes/estruturas/funcao-padrao.js +22 -22
  159. package/fontes/estruturas/index.d.ts +9 -9
  160. package/fontes/estruturas/index.js +25 -25
  161. package/fontes/estruturas/metodo-primitiva.d.ts +17 -17
  162. package/fontes/estruturas/metodo-primitiva.js +26 -26
  163. package/fontes/estruturas/modulo.d.ts +9 -9
  164. package/fontes/estruturas/modulo.js +13 -13
  165. package/fontes/estruturas/objeto-delegua-classe.d.ts +10 -10
  166. package/fontes/estruturas/objeto-delegua-classe.js +26 -26
  167. package/fontes/estruturas/objeto-padrao.d.ts +9 -9
  168. package/fontes/estruturas/objeto-padrao.js +21 -21
  169. package/fontes/excecoes/erro-em-tempo-de-execucao.d.ts +7 -7
  170. package/fontes/excecoes/erro-em-tempo-de-execucao.js +13 -13
  171. package/fontes/excecoes/index.d.ts +1 -1
  172. package/fontes/excecoes/index.js +17 -17
  173. package/fontes/formatadores/delegua.d.ts +18 -18
  174. package/fontes/formatadores/delegua.js +82 -82
  175. package/fontes/formatadores/index.d.ts +1 -1
  176. package/fontes/formatadores/index.js +17 -17
  177. package/fontes/interfaces/avaliador-sintatico-interface.d.ts +57 -57
  178. package/fontes/interfaces/avaliador-sintatico-interface.js +2 -2
  179. package/fontes/interfaces/construtos/index.d.ts +4 -4
  180. package/fontes/interfaces/construtos/index.js +2 -2
  181. package/fontes/interfaces/escopo-execucao.d.ts +11 -11
  182. package/fontes/interfaces/escopo-execucao.js +2 -2
  183. package/fontes/interfaces/index.d.ts +11 -11
  184. package/fontes/interfaces/index.js +27 -27
  185. package/fontes/interfaces/interpretador-com-depuracao-interface.d.ts +17 -17
  186. package/fontes/interfaces/interpretador-com-depuracao-interface.js +2 -2
  187. package/fontes/interfaces/interpretador-interface.d.ts +55 -55
  188. package/fontes/interfaces/interpretador-interface.js +2 -2
  189. package/fontes/interfaces/lexador-interface.d.ts +23 -23
  190. package/fontes/interfaces/lexador-interface.js +2 -2
  191. package/fontes/interfaces/parametro-interface.d.ts +6 -6
  192. package/fontes/interfaces/parametro-interface.js +2 -2
  193. package/fontes/interfaces/pilha-escopos-execucao-interface.d.ts +25 -25
  194. package/fontes/interfaces/pilha-escopos-execucao-interface.js +2 -2
  195. package/fontes/interfaces/pilha-interface.d.ts +7 -7
  196. package/fontes/interfaces/pilha-interface.js +2 -2
  197. package/fontes/interfaces/resolvedor-interface.d.ts +41 -41
  198. package/fontes/interfaces/resolvedor-interface.js +2 -2
  199. package/fontes/interfaces/retornos/index.d.ts +4 -4
  200. package/fontes/interfaces/retornos/index.js +20 -20
  201. package/fontes/interfaces/retornos/retorno-avaliador-sintatico.d.ts +6 -6
  202. package/fontes/interfaces/retornos/retorno-avaliador-sintatico.js +2 -2
  203. package/fontes/interfaces/retornos/retorno-execucao-interface.d.ts +5 -5
  204. package/fontes/interfaces/retornos/retorno-execucao-interface.js +2 -2
  205. package/fontes/interfaces/retornos/retorno-interpretador.d.ts +5 -5
  206. package/fontes/interfaces/retornos/retorno-interpretador.js +2 -2
  207. package/fontes/interfaces/retornos/retorno-lexador.d.ts +10 -10
  208. package/fontes/interfaces/retornos/retorno-lexador.js +2 -2
  209. package/fontes/interfaces/simbolo-interface.d.ts +7 -7
  210. package/fontes/interfaces/simbolo-interface.js +2 -2
  211. package/fontes/interfaces/tradutor-interface.d.ts +4 -4
  212. package/fontes/interfaces/tradutor-interface.js +2 -2
  213. package/fontes/interfaces/variavel-interface.d.ts +4 -4
  214. package/fontes/interfaces/variavel-interface.js +2 -2
  215. package/fontes/interpretador/dialetos/egua-classico/index.d.ts +1 -1
  216. package/fontes/interpretador/dialetos/egua-classico/index.js +17 -17
  217. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +99 -99
  218. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +743 -743
  219. package/fontes/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.d.ts +5 -5
  220. package/fontes/interpretador/dialetos/egua-classico/resolvedor/erro-resolvedor.js +11 -11
  221. package/fontes/interpretador/dialetos/egua-classico/resolvedor/index.d.ts +3 -3
  222. package/fontes/interpretador/dialetos/egua-classico/resolvedor/index.js +19 -19
  223. package/fontes/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.d.ts +9 -9
  224. package/fontes/interpretador/dialetos/egua-classico/resolvedor/pilha-escopos.js +25 -25
  225. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +87 -87
  226. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +387 -387
  227. package/fontes/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.d.ts +6 -6
  228. package/fontes/interpretador/dialetos/egua-classico/resolvedor/retorno-resolvedor.js +2 -2
  229. package/fontes/interpretador/dialetos/index.d.ts +4 -4
  230. package/fontes/interpretador/dialetos/index.js +20 -20
  231. package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.d.ts +12 -12
  232. package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.js +26 -26
  233. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.d.ts +43 -40
  234. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js +102 -96
  235. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js.map +1 -1
  236. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.d.ts +53 -46
  237. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js +194 -102
  238. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
  239. package/fontes/interpretador/erro-interpretador.d.ts +8 -8
  240. package/fontes/interpretador/erro-interpretador.js +2 -2
  241. package/fontes/interpretador/index.d.ts +4 -4
  242. package/fontes/interpretador/index.js +20 -20
  243. package/fontes/interpretador/inferenciador.d.ts +1 -1
  244. package/fontes/interpretador/inferenciador.js +31 -31
  245. package/fontes/interpretador/interpretador-base.d.ts +186 -186
  246. package/fontes/interpretador/interpretador-base.js +1001 -1001
  247. package/fontes/interpretador/interpretador-com-depuracao.d.ts +199 -199
  248. package/fontes/interpretador/interpretador-com-depuracao.js +516 -516
  249. package/fontes/interpretador/pilha-escopos-execucao.d.ts +38 -38
  250. package/fontes/interpretador/pilha-escopos-execucao.js +158 -158
  251. package/fontes/lexador/dialetos/index.d.ts +6 -6
  252. package/fontes/lexador/dialetos/index.js +22 -22
  253. package/fontes/lexador/dialetos/lexador-birl.d.ts +12 -12
  254. package/fontes/lexador/dialetos/lexador-birl.js +211 -211
  255. package/fontes/lexador/dialetos/lexador-egua-classico.d.ts +36 -36
  256. package/fontes/lexador/dialetos/lexador-egua-classico.js +286 -286
  257. package/fontes/lexador/dialetos/lexador-eguap.d.ts +51 -51
  258. package/fontes/lexador/dialetos/lexador-eguap.js +398 -398
  259. package/fontes/lexador/dialetos/lexador-guarani.d.ts +9 -9
  260. package/fontes/lexador/dialetos/lexador-guarani.js +113 -113
  261. package/fontes/lexador/dialetos/lexador-portugol-ipt.d.ts +33 -33
  262. package/fontes/lexador/dialetos/lexador-portugol-ipt.js +195 -195
  263. package/fontes/lexador/dialetos/lexador-portugol-studio.d.ts +21 -21
  264. package/fontes/lexador/dialetos/lexador-portugol-studio.js +280 -280
  265. package/fontes/lexador/dialetos/lexador-visualg.d.ts +18 -18
  266. package/fontes/lexador/dialetos/lexador-visualg.js +218 -218
  267. package/fontes/lexador/dialetos/palavras-reservadas/birl.d.ts +46 -46
  268. package/fontes/lexador/dialetos/palavras-reservadas/birl.js +63 -63
  269. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +36 -36
  270. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js +41 -41
  271. package/fontes/lexador/dialetos/palavras-reservadas/guarani.d.ts +4 -4
  272. package/fontes/lexador/dialetos/palavras-reservadas/guarani.js +9 -9
  273. package/fontes/lexador/dialetos/palavras-reservadas/index.d.ts +3 -3
  274. package/fontes/lexador/dialetos/palavras-reservadas/index.js +19 -19
  275. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +6 -6
  276. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.js +11 -11
  277. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.d.ts +23 -23
  278. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js +28 -28
  279. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +2 -2
  280. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js +3 -3
  281. package/fontes/lexador/dialetos/palavras-reservadas/visualg.d.ts +60 -60
  282. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +65 -65
  283. package/fontes/lexador/dialetos/pragma.d.ts +8 -8
  284. package/fontes/lexador/dialetos/pragma.js +2 -2
  285. package/fontes/lexador/erro-lexador.d.ts +5 -5
  286. package/fontes/lexador/erro-lexador.js +2 -2
  287. package/fontes/lexador/index.d.ts +2 -2
  288. package/fontes/lexador/index.js +18 -18
  289. package/fontes/lexador/lexador-base-linha-unica.d.ts +28 -28
  290. package/fontes/lexador/lexador-base-linha-unica.js +82 -82
  291. package/fontes/lexador/lexador-base.d.ts +41 -41
  292. package/fontes/lexador/lexador-base.js +112 -112
  293. package/fontes/lexador/lexador.d.ts +43 -43
  294. package/fontes/lexador/lexador.js +412 -412
  295. package/fontes/lexador/palavras-reservadas.d.ts +36 -36
  296. package/fontes/lexador/palavras-reservadas.js +41 -41
  297. package/fontes/lexador/simbolo.d.ts +10 -10
  298. package/fontes/lexador/simbolo.js +16 -16
  299. package/fontes/quebras/index.d.ts +10 -10
  300. package/fontes/quebras/index.js +19 -19
  301. package/fontes/tipos-de-simbolos/birl.d.ts +71 -71
  302. package/fontes/tipos-de-simbolos/birl.js +78 -78
  303. package/fontes/tipos-de-simbolos/comum.d.ts +22 -22
  304. package/fontes/tipos-de-simbolos/comum.js +23 -23
  305. package/fontes/tipos-de-simbolos/delegua.d.ts +80 -80
  306. package/fontes/tipos-de-simbolos/delegua.js +81 -81
  307. package/fontes/tipos-de-simbolos/egua-classico.d.ts +77 -77
  308. package/fontes/tipos-de-simbolos/egua-classico.js +78 -78
  309. package/fontes/tipos-de-simbolos/eguap.d.ts +73 -73
  310. package/fontes/tipos-de-simbolos/eguap.js +74 -74
  311. package/fontes/tipos-de-simbolos/guarani.d.ts +14 -14
  312. package/fontes/tipos-de-simbolos/guarani.js +15 -15
  313. package/fontes/tipos-de-simbolos/portugol-ipt.d.ts +28 -28
  314. package/fontes/tipos-de-simbolos/portugol-ipt.js +29 -29
  315. package/fontes/tipos-de-simbolos/portugol-studio.d.ts +53 -53
  316. package/fontes/tipos-de-simbolos/portugol-studio.js +54 -54
  317. package/fontes/tipos-de-simbolos/rantiaquin.d.ts +2 -2
  318. package/fontes/tipos-de-simbolos/rantiaquin.js +3 -3
  319. package/fontes/tipos-de-simbolos/visualg.d.ts +68 -68
  320. package/fontes/tipos-de-simbolos/visualg.js +69 -69
  321. package/fontes/tradutores/dicionarios/dicionario-delegua-javascript.d.ts +2 -2
  322. package/fontes/tradutores/dicionarios/dicionario-delegua-javascript.js +10 -10
  323. package/fontes/tradutores/dicionarios/index.d.ts +1 -1
  324. package/fontes/tradutores/dicionarios/index.js +17 -17
  325. package/fontes/tradutores/index.d.ts +2 -2
  326. package/fontes/tradutores/index.js +18 -18
  327. package/fontes/tradutores/python/python3-lexer.d.ts +152 -152
  328. package/fontes/tradutores/python/python3-lexer.js +1226 -1226
  329. package/fontes/tradutores/python/python3-listener.d.ts +953 -953
  330. package/fontes/tradutores/python/python3-listener.js +2 -2
  331. package/fontes/tradutores/python/python3-parser.d.ts +1330 -1330
  332. package/fontes/tradutores/python/python3-parser.js +11156 -11156
  333. package/fontes/tradutores/python/python3-visitor.d.ts +612 -612
  334. package/fontes/tradutores/python/python3-visitor.js +2 -2
  335. package/fontes/tradutores/tradutor-javascript.d.ts +83 -83
  336. package/fontes/tradutores/tradutor-javascript.js +470 -470
  337. package/fontes/tradutores/tradutor-python.d.ts +1 -1
  338. package/fontes/tradutores/tradutor-python.js +34 -34
  339. package/fontes/tradutores/tradutor-reverso-javascript.d.ts +47 -47
  340. package/fontes/tradutores/tradutor-reverso-javascript.js +339 -342
  341. package/fontes/tradutores/tradutor-reverso-javascript.js.map +1 -1
  342. package/fontes/tradutores/tradutor-visualg.d.ts +38 -0
  343. package/fontes/tradutores/tradutor-visualg.js +485 -0
  344. package/fontes/tradutores/tradutor-visualg.js.map +1 -0
  345. package/index.d.ts +5 -5
  346. package/index.js +23 -23
  347. package/package.json +88 -88
@@ -1,388 +1,388 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolvedorEguaClassico = void 0;
4
- const pilha_escopos_1 = require("./pilha-escopos");
5
- const erro_resolvedor_1 = require("./erro-resolvedor");
6
- const TipoFuncao = {
7
- NENHUM: 'NENHUM',
8
- FUNÇÃO: 'FUNÇÃO',
9
- CONSTRUTOR: 'CONSTRUTOR',
10
- METODO: 'METODO',
11
- };
12
- const TipoClasse = {
13
- NENHUM: 'NENHUM',
14
- CLASSE: 'CLASSE',
15
- SUBCLASSE: 'SUBCLASSE',
16
- };
17
- const LoopType = {
18
- NENHUM: 'NENHUM',
19
- ENQUANTO: 'ENQUANTO',
20
- ESCOLHA: 'ESCOLHA',
21
- PARA: 'PARA',
22
- FAZER: 'FAZER',
23
- };
24
- /**
25
- * O Resolvedor (Resolver) é responsável por catalogar todos os identificadores complexos, como por exemplo: funções, classes, variáveis,
26
- * e delimitar os escopos onde esses identificadores existem.
27
- *
28
- * Exemplo: uma classe A declara dois métodos chamados M e N. Todas as variáveis declaradas dentro de M não podem ser vistas por N, e vice-versa.
29
- * No entanto, todas as variáveis declaradas dentro da classe A podem ser vistas tanto por M quanto por N.
30
- *
31
- * Não faz sentido ser implementado nos outros interpretadores pelos outros optarem por uma pilha de execução que
32
- * espera importar qualquer coisa a qualquer momento.
33
- */
34
- class ResolvedorEguaClassico {
35
- constructor() {
36
- this.interfaceEntradaSaida = null;
37
- this.erros = [];
38
- this.escopos = new pilha_escopos_1.PilhaEscopos();
39
- this.locais = new Map();
40
- this.funcaoAtual = TipoFuncao.NENHUM;
41
- this.classeAtual = TipoClasse.NENHUM;
42
- this.cicloAtual = TipoClasse.NENHUM;
43
- }
44
- visitarExpressaoFormatacaoEscrita(declaracao) {
45
- throw new Error('Método não implementado.');
46
- }
47
- visitarExpressaoEscrevaMesmaLinha(declaracao) {
48
- throw new Error('Método não implementado.');
49
- }
50
- avaliar(expressao) {
51
- throw new Error('Método não implementado.');
52
- }
53
- eVerdadeiro(objeto) {
54
- throw new Error('Método não implementado.');
55
- }
56
- verificarOperandoNumero(operador, operando) {
57
- throw new Error('Método não implementado.');
58
- }
59
- eIgual(esquerda, direita) {
60
- throw new Error('Método não implementado.');
61
- }
62
- verificarOperandosNumeros(operador, direita, esquerda) {
63
- throw new Error('Método não implementado.');
64
- }
65
- procurarVariavel(nome, expressao) {
66
- throw new Error('Método não implementado.');
67
- }
68
- visitarExpressaoLeia(expressao) {
69
- throw new Error('Método não implementado.');
70
- }
71
- executarBloco(declaracoes, ambiente) {
72
- throw new Error('Método não implementado.');
73
- }
74
- paraTexto(objeto) {
75
- throw new Error('Método não implementado.');
76
- }
77
- executar(declaracao, mostrarResultado) {
78
- throw new Error('Método não implementado.');
79
- }
80
- interpretar(declaracoes, manterAmbiente) {
81
- throw new Error('Método não implementado.');
82
- }
83
- finalizacao() {
84
- throw new Error('Método não implementado.');
85
- }
86
- definir(simbolo) {
87
- if (this.escopos.eVazio())
88
- return;
89
- this.escopos.topoDaPilha()[simbolo.lexema] = true;
90
- }
91
- declarar(simbolo) {
92
- if (this.escopos.eVazio())
93
- return;
94
- const escopo = this.escopos.topoDaPilha();
95
- if (escopo.hasOwnProperty(simbolo.lexema)) {
96
- const erro = new erro_resolvedor_1.ErroResolvedor(simbolo, 'Variável com esse nome já declarada neste escopo.');
97
- this.erros.push(erro);
98
- }
99
- escopo[simbolo.lexema] = false;
100
- }
101
- inicioDoEscopo() {
102
- this.escopos.empilhar({});
103
- }
104
- finalDoEscopo() {
105
- this.escopos.removerUltimo();
106
- }
107
- resolverLocal(expressao, simbolo) {
108
- for (let i = this.escopos.pilha.length - 1; i >= 0; i--) {
109
- if (this.escopos.pilha[i].hasOwnProperty(simbolo.lexema)) {
110
- this.locais.set(expressao, this.escopos.pilha.length - 1 - i);
111
- }
112
- }
113
- }
114
- visitarExpressaoBloco(declaracao) {
115
- this.inicioDoEscopo();
116
- this.resolver(declaracao.declaracoes);
117
- this.finalDoEscopo();
118
- return null;
119
- }
120
- visitarExpressaoDeVariavel(expressao) {
121
- if (!this.escopos.eVazio() && this.escopos.topoDaPilha()[expressao.simbolo.lexema] === false) {
122
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simbolo, 'Não é possível ler a variável local em seu próprio inicializador.');
123
- this.erros.push(erro);
124
- throw erro;
125
- }
126
- this.resolverLocal(expressao, expressao.simbolo);
127
- return null;
128
- }
129
- visitarDeclaracaoVar(declaracao) {
130
- this.declarar(declaracao.simbolo);
131
- if (declaracao.inicializador !== null) {
132
- this.resolver(declaracao.inicializador);
133
- }
134
- this.definir(declaracao.simbolo);
135
- return null;
136
- }
137
- visitarDeclaracaoDeAtribuicao(expressao) {
138
- this.resolver(expressao.valor);
139
- this.resolverLocal(expressao, expressao.simbolo);
140
- return null;
141
- }
142
- resolverFuncao(funcao, funcType) {
143
- const enclosingFunc = this.funcaoAtual;
144
- this.funcaoAtual = funcType;
145
- this.inicioDoEscopo();
146
- const parametros = funcao.parametros;
147
- if (parametros && parametros.length > 0) {
148
- for (let i = 0; i < parametros.length; i++) {
149
- this.declarar(parametros[i]['nome']);
150
- this.definir(parametros[i]['nome']);
151
- }
152
- }
153
- this.resolver(funcao.corpo);
154
- this.finalDoEscopo();
155
- this.funcaoAtual = enclosingFunc;
156
- }
157
- visitarDeclaracaoDefinicaoFuncao(declaracao) {
158
- this.declarar(declaracao.simbolo);
159
- this.definir(declaracao.simbolo);
160
- this.resolverFuncao(declaracao.funcao, TipoFuncao.FUNÇÃO);
161
- return null;
162
- }
163
- visitarExpressaoDeleguaFuncao(declaracao) {
164
- this.resolverFuncao(declaracao, TipoFuncao.FUNÇÃO);
165
- return null;
166
- }
167
- visitarDeclaracaoTente(declaracao) {
168
- this.resolver(declaracao.caminhoTente);
169
- if (declaracao.caminhoPegue !== null)
170
- this.resolver(declaracao.caminhoPegue);
171
- if (declaracao.caminhoSenao !== null)
172
- this.resolver(declaracao.caminhoSenao);
173
- if (declaracao.caminhoFinalmente !== null)
174
- this.resolver(declaracao.caminhoFinalmente);
175
- }
176
- visitarDeclaracaoClasse(declaracao) {
177
- const enclosingClass = this.classeAtual;
178
- this.classeAtual = TipoClasse.CLASSE;
179
- this.declarar(declaracao.simbolo);
180
- this.definir(declaracao.simbolo);
181
- if (declaracao.superClasse !== null && declaracao.simbolo.lexema === declaracao.superClasse.simbolo.lexema) {
182
- const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.simbolo, 'Uma classe não pode herdar de si mesma.');
183
- this.erros.push(erro);
184
- }
185
- if (declaracao.superClasse !== null) {
186
- this.classeAtual = TipoClasse.SUBCLASSE;
187
- this.resolver(declaracao.superClasse);
188
- }
189
- if (declaracao.superClasse !== null) {
190
- this.inicioDoEscopo();
191
- this.escopos.topoDaPilha()['super'] = true;
192
- }
193
- this.inicioDoEscopo();
194
- this.escopos.topoDaPilha()['isto'] = true;
195
- const metodos = declaracao.metodos;
196
- for (let i = 0; i < metodos.length; i++) {
197
- let declaracao = TipoFuncao.METODO;
198
- if (metodos[i].simbolo.lexema === 'isto') {
199
- declaracao = TipoFuncao.CONSTRUTOR;
200
- }
201
- this.resolverFuncao(metodos[i].funcao, declaracao);
202
- }
203
- this.finalDoEscopo();
204
- if (declaracao.superClasse !== null)
205
- this.finalDoEscopo();
206
- this.classeAtual = enclosingClass;
207
- return null;
208
- }
209
- visitarExpressaoSuper(expressao) {
210
- if (this.classeAtual === TipoClasse.NENHUM) {
211
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não pode usar 'super' fora de uma classe.");
212
- this.erros.push(erro);
213
- }
214
- else if (this.classeAtual !== TipoClasse.SUBCLASSE) {
215
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não se usa 'super' numa classe sem SuperClasse.");
216
- this.erros.push(erro);
217
- }
218
- this.resolverLocal(expressao, expressao.simboloChave);
219
- return null;
220
- }
221
- visitarExpressaoAcessoMetodo(expressao) {
222
- this.resolver(expressao.objeto);
223
- return null;
224
- }
225
- visitarDeclaracaoDeExpressao(declaracao) {
226
- this.resolver(declaracao.expressao);
227
- return null;
228
- }
229
- visitarDeclaracaoSe(declaracao) {
230
- this.resolver(declaracao.condicao);
231
- this.resolver(declaracao.caminhoEntao);
232
- for (let i = 0; i < declaracao.caminhosSeSenao.length; i++) {
233
- this.resolver(declaracao.caminhosSeSenao[i].condicao);
234
- this.resolver(declaracao.caminhosSeSenao[i].branch);
235
- }
236
- if (declaracao.caminhoSenao !== null)
237
- this.resolver(declaracao.caminhoSenao);
238
- return null;
239
- }
240
- visitarDeclaracaoImportar(declaracao) {
241
- this.resolver(declaracao.caminho);
242
- }
243
- visitarDeclaracaoEscreva(declaracao) {
244
- this.resolver(declaracao.expressao);
245
- }
246
- visitarExpressaoRetornar(declaracao) {
247
- if (this.funcaoAtual === TipoFuncao.NENHUM) {
248
- const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não é possível retornar do código do escopo superior.');
249
- this.erros.push(erro);
250
- }
251
- if (declaracao.valor !== null) {
252
- if (this.funcaoAtual === TipoFuncao.CONSTRUTOR) {
253
- const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não pode retornar o valor do construtor.');
254
- this.erros.push(erro);
255
- }
256
- this.resolver(declaracao.valor);
257
- }
258
- return null;
259
- }
260
- visitarDeclaracaoEscolha(declaracao) {
261
- const enclosingType = this.cicloAtual;
262
- this.cicloAtual = LoopType.ESCOLHA;
263
- const caminhos = declaracao.caminhos;
264
- const caminhoPadrao = declaracao.caminhoPadrao;
265
- for (let i = 0; i < caminhos.length; i++) {
266
- this.resolver(caminhos[i]['declaracoes']);
267
- }
268
- if (caminhoPadrao !== null)
269
- this.resolver(caminhoPadrao['declaracoes']);
270
- this.cicloAtual = enclosingType;
271
- }
272
- visitarDeclaracaoEnquanto(declaracao) {
273
- this.resolver(declaracao.condicao);
274
- this.resolver(declaracao.corpo);
275
- return null;
276
- }
277
- visitarDeclaracaoPara(declaracao) {
278
- if (declaracao.inicializador !== null) {
279
- this.resolver(declaracao.inicializador);
280
- }
281
- if (declaracao.condicao !== null) {
282
- this.resolver(declaracao.condicao);
283
- }
284
- if (declaracao.incrementar !== null) {
285
- this.resolver(declaracao.incrementar);
286
- }
287
- const enclosingType = this.cicloAtual;
288
- this.cicloAtual = LoopType.ENQUANTO;
289
- this.resolver(declaracao.corpo);
290
- this.cicloAtual = enclosingType;
291
- return null;
292
- }
293
- visitarDeclaracaoFazer(declaracao) {
294
- this.resolver(declaracao.condicaoEnquanto);
295
- const enclosingType = this.cicloAtual;
296
- this.cicloAtual = LoopType.FAZER;
297
- this.resolver(declaracao.caminhoFazer);
298
- this.cicloAtual = enclosingType;
299
- return null;
300
- }
301
- visitarExpressaoBinaria(expressao) {
302
- this.resolver(expressao.esquerda);
303
- this.resolver(expressao.direita);
304
- return null;
305
- }
306
- visitarExpressaoDeChamada(expressao) {
307
- this.resolver(expressao.entidadeChamada);
308
- const argumentos = expressao.argumentos;
309
- for (let i = 0; i < argumentos.length; i++) {
310
- this.resolver(argumentos[i]);
311
- }
312
- return null;
313
- }
314
- visitarExpressaoAgrupamento(expressao) {
315
- this.resolver(expressao.expressao);
316
- return null;
317
- }
318
- visitarExpressaoDicionario(expressao) {
319
- for (let i = 0; i < expressao.chaves.length; i++) {
320
- this.resolver(expressao.chaves[i]);
321
- this.resolver(expressao.valores[i]);
322
- }
323
- return null;
324
- }
325
- visitarExpressaoVetor(expressao) {
326
- for (let i = 0; i < expressao.valores.length; i++) {
327
- this.resolver(expressao.valores[i]);
328
- }
329
- return null;
330
- }
331
- visitarExpressaoAcessoIndiceVariavel(expressao) {
332
- this.resolver(expressao.entidadeChamada);
333
- this.resolver(expressao.indice);
334
- return null;
335
- }
336
- visitarExpressaoContinua(declaracao) {
337
- return null;
338
- }
339
- visitarExpressaoSustar(declaracao) {
340
- return null;
341
- }
342
- visitarExpressaoAtribuicaoSobrescrita(expressao) {
343
- return null;
344
- }
345
- visitarExpressaoLiteral(expressao) {
346
- return null;
347
- }
348
- visitarExpressaoLogica(expressao) {
349
- this.resolver(expressao.esquerda);
350
- this.resolver(expressao.direita);
351
- return null;
352
- }
353
- visitarExpressaoUnaria(expressao) {
354
- this.resolver(expressao.direita);
355
- return null;
356
- }
357
- visitarExpressaoDefinirValor(expressao) {
358
- this.resolver(expressao.valor);
359
- this.resolver(expressao.objeto);
360
- return null;
361
- }
362
- visitarExpressaoIsto(expressao) {
363
- if (this.classeAtual == TipoClasse.NENHUM) {
364
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.palavraChave, "Não pode usar 'isto' fora da classe.");
365
- this.erros.push(erro);
366
- }
367
- this.resolverLocal(expressao, expressao.palavraChave);
368
- return null;
369
- }
370
- resolver(declaracoes) {
371
- if (Array.isArray(declaracoes)) {
372
- for (let i = 0; i < declaracoes.length; i++) {
373
- if (declaracoes[i] && declaracoes[i].aceitar) {
374
- declaracoes[i].aceitar(this);
375
- }
376
- }
377
- }
378
- else if (declaracoes) {
379
- declaracoes.aceitar(this);
380
- }
381
- return {
382
- erros: this.erros,
383
- locais: this.locais,
384
- };
385
- }
386
- }
387
- exports.ResolvedorEguaClassico = ResolvedorEguaClassico;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvedorEguaClassico = void 0;
4
+ const pilha_escopos_1 = require("./pilha-escopos");
5
+ const erro_resolvedor_1 = require("./erro-resolvedor");
6
+ const TipoFuncao = {
7
+ NENHUM: 'NENHUM',
8
+ FUNÇÃO: 'FUNÇÃO',
9
+ CONSTRUTOR: 'CONSTRUTOR',
10
+ METODO: 'METODO',
11
+ };
12
+ const TipoClasse = {
13
+ NENHUM: 'NENHUM',
14
+ CLASSE: 'CLASSE',
15
+ SUBCLASSE: 'SUBCLASSE',
16
+ };
17
+ const LoopType = {
18
+ NENHUM: 'NENHUM',
19
+ ENQUANTO: 'ENQUANTO',
20
+ ESCOLHA: 'ESCOLHA',
21
+ PARA: 'PARA',
22
+ FAZER: 'FAZER',
23
+ };
24
+ /**
25
+ * O Resolvedor (Resolver) é responsável por catalogar todos os identificadores complexos, como por exemplo: funções, classes, variáveis,
26
+ * e delimitar os escopos onde esses identificadores existem.
27
+ *
28
+ * Exemplo: uma classe A declara dois métodos chamados M e N. Todas as variáveis declaradas dentro de M não podem ser vistas por N, e vice-versa.
29
+ * No entanto, todas as variáveis declaradas dentro da classe A podem ser vistas tanto por M quanto por N.
30
+ *
31
+ * Não faz sentido ser implementado nos outros interpretadores pelos outros optarem por uma pilha de execução que
32
+ * espera importar qualquer coisa a qualquer momento.
33
+ */
34
+ class ResolvedorEguaClassico {
35
+ constructor() {
36
+ this.interfaceEntradaSaida = null;
37
+ this.erros = [];
38
+ this.escopos = new pilha_escopos_1.PilhaEscopos();
39
+ this.locais = new Map();
40
+ this.funcaoAtual = TipoFuncao.NENHUM;
41
+ this.classeAtual = TipoClasse.NENHUM;
42
+ this.cicloAtual = TipoClasse.NENHUM;
43
+ }
44
+ visitarExpressaoFormatacaoEscrita(declaracao) {
45
+ throw new Error('Método não implementado.');
46
+ }
47
+ visitarExpressaoEscrevaMesmaLinha(declaracao) {
48
+ throw new Error('Método não implementado.');
49
+ }
50
+ avaliar(expressao) {
51
+ throw new Error('Método não implementado.');
52
+ }
53
+ eVerdadeiro(objeto) {
54
+ throw new Error('Método não implementado.');
55
+ }
56
+ verificarOperandoNumero(operador, operando) {
57
+ throw new Error('Método não implementado.');
58
+ }
59
+ eIgual(esquerda, direita) {
60
+ throw new Error('Método não implementado.');
61
+ }
62
+ verificarOperandosNumeros(operador, direita, esquerda) {
63
+ throw new Error('Método não implementado.');
64
+ }
65
+ procurarVariavel(nome, expressao) {
66
+ throw new Error('Método não implementado.');
67
+ }
68
+ visitarExpressaoLeia(expressao) {
69
+ throw new Error('Método não implementado.');
70
+ }
71
+ executarBloco(declaracoes, ambiente) {
72
+ throw new Error('Método não implementado.');
73
+ }
74
+ paraTexto(objeto) {
75
+ throw new Error('Método não implementado.');
76
+ }
77
+ executar(declaracao, mostrarResultado) {
78
+ throw new Error('Método não implementado.');
79
+ }
80
+ interpretar(declaracoes, manterAmbiente) {
81
+ throw new Error('Método não implementado.');
82
+ }
83
+ finalizacao() {
84
+ throw new Error('Método não implementado.');
85
+ }
86
+ definir(simbolo) {
87
+ if (this.escopos.eVazio())
88
+ return;
89
+ this.escopos.topoDaPilha()[simbolo.lexema] = true;
90
+ }
91
+ declarar(simbolo) {
92
+ if (this.escopos.eVazio())
93
+ return;
94
+ const escopo = this.escopos.topoDaPilha();
95
+ if (escopo.hasOwnProperty(simbolo.lexema)) {
96
+ const erro = new erro_resolvedor_1.ErroResolvedor(simbolo, 'Variável com esse nome já declarada neste escopo.');
97
+ this.erros.push(erro);
98
+ }
99
+ escopo[simbolo.lexema] = false;
100
+ }
101
+ inicioDoEscopo() {
102
+ this.escopos.empilhar({});
103
+ }
104
+ finalDoEscopo() {
105
+ this.escopos.removerUltimo();
106
+ }
107
+ resolverLocal(expressao, simbolo) {
108
+ for (let i = this.escopos.pilha.length - 1; i >= 0; i--) {
109
+ if (this.escopos.pilha[i].hasOwnProperty(simbolo.lexema)) {
110
+ this.locais.set(expressao, this.escopos.pilha.length - 1 - i);
111
+ }
112
+ }
113
+ }
114
+ visitarExpressaoBloco(declaracao) {
115
+ this.inicioDoEscopo();
116
+ this.resolver(declaracao.declaracoes);
117
+ this.finalDoEscopo();
118
+ return null;
119
+ }
120
+ visitarExpressaoDeVariavel(expressao) {
121
+ if (!this.escopos.eVazio() && this.escopos.topoDaPilha()[expressao.simbolo.lexema] === false) {
122
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simbolo, 'Não é possível ler a variável local em seu próprio inicializador.');
123
+ this.erros.push(erro);
124
+ throw erro;
125
+ }
126
+ this.resolverLocal(expressao, expressao.simbolo);
127
+ return null;
128
+ }
129
+ visitarDeclaracaoVar(declaracao) {
130
+ this.declarar(declaracao.simbolo);
131
+ if (declaracao.inicializador !== null) {
132
+ this.resolver(declaracao.inicializador);
133
+ }
134
+ this.definir(declaracao.simbolo);
135
+ return null;
136
+ }
137
+ visitarDeclaracaoDeAtribuicao(expressao) {
138
+ this.resolver(expressao.valor);
139
+ this.resolverLocal(expressao, expressao.simbolo);
140
+ return null;
141
+ }
142
+ resolverFuncao(funcao, funcType) {
143
+ const enclosingFunc = this.funcaoAtual;
144
+ this.funcaoAtual = funcType;
145
+ this.inicioDoEscopo();
146
+ const parametros = funcao.parametros;
147
+ if (parametros && parametros.length > 0) {
148
+ for (let i = 0; i < parametros.length; i++) {
149
+ this.declarar(parametros[i]['nome']);
150
+ this.definir(parametros[i]['nome']);
151
+ }
152
+ }
153
+ this.resolver(funcao.corpo);
154
+ this.finalDoEscopo();
155
+ this.funcaoAtual = enclosingFunc;
156
+ }
157
+ visitarDeclaracaoDefinicaoFuncao(declaracao) {
158
+ this.declarar(declaracao.simbolo);
159
+ this.definir(declaracao.simbolo);
160
+ this.resolverFuncao(declaracao.funcao, TipoFuncao.FUNÇÃO);
161
+ return null;
162
+ }
163
+ visitarExpressaoDeleguaFuncao(declaracao) {
164
+ this.resolverFuncao(declaracao, TipoFuncao.FUNÇÃO);
165
+ return null;
166
+ }
167
+ visitarDeclaracaoTente(declaracao) {
168
+ this.resolver(declaracao.caminhoTente);
169
+ if (declaracao.caminhoPegue !== null)
170
+ this.resolver(declaracao.caminhoPegue);
171
+ if (declaracao.caminhoSenao !== null)
172
+ this.resolver(declaracao.caminhoSenao);
173
+ if (declaracao.caminhoFinalmente !== null)
174
+ this.resolver(declaracao.caminhoFinalmente);
175
+ }
176
+ visitarDeclaracaoClasse(declaracao) {
177
+ const enclosingClass = this.classeAtual;
178
+ this.classeAtual = TipoClasse.CLASSE;
179
+ this.declarar(declaracao.simbolo);
180
+ this.definir(declaracao.simbolo);
181
+ if (declaracao.superClasse !== null && declaracao.simbolo.lexema === declaracao.superClasse.simbolo.lexema) {
182
+ const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.simbolo, 'Uma classe não pode herdar de si mesma.');
183
+ this.erros.push(erro);
184
+ }
185
+ if (declaracao.superClasse !== null) {
186
+ this.classeAtual = TipoClasse.SUBCLASSE;
187
+ this.resolver(declaracao.superClasse);
188
+ }
189
+ if (declaracao.superClasse !== null) {
190
+ this.inicioDoEscopo();
191
+ this.escopos.topoDaPilha()['super'] = true;
192
+ }
193
+ this.inicioDoEscopo();
194
+ this.escopos.topoDaPilha()['isto'] = true;
195
+ const metodos = declaracao.metodos;
196
+ for (let i = 0; i < metodos.length; i++) {
197
+ let declaracao = TipoFuncao.METODO;
198
+ if (metodos[i].simbolo.lexema === 'isto') {
199
+ declaracao = TipoFuncao.CONSTRUTOR;
200
+ }
201
+ this.resolverFuncao(metodos[i].funcao, declaracao);
202
+ }
203
+ this.finalDoEscopo();
204
+ if (declaracao.superClasse !== null)
205
+ this.finalDoEscopo();
206
+ this.classeAtual = enclosingClass;
207
+ return null;
208
+ }
209
+ visitarExpressaoSuper(expressao) {
210
+ if (this.classeAtual === TipoClasse.NENHUM) {
211
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não pode usar 'super' fora de uma classe.");
212
+ this.erros.push(erro);
213
+ }
214
+ else if (this.classeAtual !== TipoClasse.SUBCLASSE) {
215
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não se usa 'super' numa classe sem SuperClasse.");
216
+ this.erros.push(erro);
217
+ }
218
+ this.resolverLocal(expressao, expressao.simboloChave);
219
+ return null;
220
+ }
221
+ visitarExpressaoAcessoMetodo(expressao) {
222
+ this.resolver(expressao.objeto);
223
+ return null;
224
+ }
225
+ visitarDeclaracaoDeExpressao(declaracao) {
226
+ this.resolver(declaracao.expressao);
227
+ return null;
228
+ }
229
+ visitarDeclaracaoSe(declaracao) {
230
+ this.resolver(declaracao.condicao);
231
+ this.resolver(declaracao.caminhoEntao);
232
+ for (let i = 0; i < declaracao.caminhosSeSenao.length; i++) {
233
+ this.resolver(declaracao.caminhosSeSenao[i].condicao);
234
+ this.resolver(declaracao.caminhosSeSenao[i].branch);
235
+ }
236
+ if (declaracao.caminhoSenao !== null)
237
+ this.resolver(declaracao.caminhoSenao);
238
+ return null;
239
+ }
240
+ visitarDeclaracaoImportar(declaracao) {
241
+ this.resolver(declaracao.caminho);
242
+ }
243
+ visitarDeclaracaoEscreva(declaracao) {
244
+ this.resolver(declaracao.expressao);
245
+ }
246
+ visitarExpressaoRetornar(declaracao) {
247
+ if (this.funcaoAtual === TipoFuncao.NENHUM) {
248
+ const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não é possível retornar do código do escopo superior.');
249
+ this.erros.push(erro);
250
+ }
251
+ if (declaracao.valor !== null) {
252
+ if (this.funcaoAtual === TipoFuncao.CONSTRUTOR) {
253
+ const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não pode retornar o valor do construtor.');
254
+ this.erros.push(erro);
255
+ }
256
+ this.resolver(declaracao.valor);
257
+ }
258
+ return null;
259
+ }
260
+ visitarDeclaracaoEscolha(declaracao) {
261
+ const enclosingType = this.cicloAtual;
262
+ this.cicloAtual = LoopType.ESCOLHA;
263
+ const caminhos = declaracao.caminhos;
264
+ const caminhoPadrao = declaracao.caminhoPadrao;
265
+ for (let i = 0; i < caminhos.length; i++) {
266
+ this.resolver(caminhos[i]['declaracoes']);
267
+ }
268
+ if (caminhoPadrao !== null)
269
+ this.resolver(caminhoPadrao['declaracoes']);
270
+ this.cicloAtual = enclosingType;
271
+ }
272
+ visitarDeclaracaoEnquanto(declaracao) {
273
+ this.resolver(declaracao.condicao);
274
+ this.resolver(declaracao.corpo);
275
+ return null;
276
+ }
277
+ visitarDeclaracaoPara(declaracao) {
278
+ if (declaracao.inicializador !== null) {
279
+ this.resolver(declaracao.inicializador);
280
+ }
281
+ if (declaracao.condicao !== null) {
282
+ this.resolver(declaracao.condicao);
283
+ }
284
+ if (declaracao.incrementar !== null) {
285
+ this.resolver(declaracao.incrementar);
286
+ }
287
+ const enclosingType = this.cicloAtual;
288
+ this.cicloAtual = LoopType.ENQUANTO;
289
+ this.resolver(declaracao.corpo);
290
+ this.cicloAtual = enclosingType;
291
+ return null;
292
+ }
293
+ visitarDeclaracaoFazer(declaracao) {
294
+ this.resolver(declaracao.condicaoEnquanto);
295
+ const enclosingType = this.cicloAtual;
296
+ this.cicloAtual = LoopType.FAZER;
297
+ this.resolver(declaracao.caminhoFazer);
298
+ this.cicloAtual = enclosingType;
299
+ return null;
300
+ }
301
+ visitarExpressaoBinaria(expressao) {
302
+ this.resolver(expressao.esquerda);
303
+ this.resolver(expressao.direita);
304
+ return null;
305
+ }
306
+ visitarExpressaoDeChamada(expressao) {
307
+ this.resolver(expressao.entidadeChamada);
308
+ const argumentos = expressao.argumentos;
309
+ for (let i = 0; i < argumentos.length; i++) {
310
+ this.resolver(argumentos[i]);
311
+ }
312
+ return null;
313
+ }
314
+ visitarExpressaoAgrupamento(expressao) {
315
+ this.resolver(expressao.expressao);
316
+ return null;
317
+ }
318
+ visitarExpressaoDicionario(expressao) {
319
+ for (let i = 0; i < expressao.chaves.length; i++) {
320
+ this.resolver(expressao.chaves[i]);
321
+ this.resolver(expressao.valores[i]);
322
+ }
323
+ return null;
324
+ }
325
+ visitarExpressaoVetor(expressao) {
326
+ for (let i = 0; i < expressao.valores.length; i++) {
327
+ this.resolver(expressao.valores[i]);
328
+ }
329
+ return null;
330
+ }
331
+ visitarExpressaoAcessoIndiceVariavel(expressao) {
332
+ this.resolver(expressao.entidadeChamada);
333
+ this.resolver(expressao.indice);
334
+ return null;
335
+ }
336
+ visitarExpressaoContinua(declaracao) {
337
+ return null;
338
+ }
339
+ visitarExpressaoSustar(declaracao) {
340
+ return null;
341
+ }
342
+ visitarExpressaoAtribuicaoSobrescrita(expressao) {
343
+ return null;
344
+ }
345
+ visitarExpressaoLiteral(expressao) {
346
+ return null;
347
+ }
348
+ visitarExpressaoLogica(expressao) {
349
+ this.resolver(expressao.esquerda);
350
+ this.resolver(expressao.direita);
351
+ return null;
352
+ }
353
+ visitarExpressaoUnaria(expressao) {
354
+ this.resolver(expressao.direita);
355
+ return null;
356
+ }
357
+ visitarExpressaoDefinirValor(expressao) {
358
+ this.resolver(expressao.valor);
359
+ this.resolver(expressao.objeto);
360
+ return null;
361
+ }
362
+ visitarExpressaoIsto(expressao) {
363
+ if (this.classeAtual == TipoClasse.NENHUM) {
364
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.palavraChave, "Não pode usar 'isto' fora da classe.");
365
+ this.erros.push(erro);
366
+ }
367
+ this.resolverLocal(expressao, expressao.palavraChave);
368
+ return null;
369
+ }
370
+ resolver(declaracoes) {
371
+ if (Array.isArray(declaracoes)) {
372
+ for (let i = 0; i < declaracoes.length; i++) {
373
+ if (declaracoes[i] && declaracoes[i].aceitar) {
374
+ declaracoes[i].aceitar(this);
375
+ }
376
+ }
377
+ }
378
+ else if (declaracoes) {
379
+ declaracoes.aceitar(this);
380
+ }
381
+ return {
382
+ erros: this.erros,
383
+ locais: this.locais,
384
+ };
385
+ }
386
+ }
387
+ exports.ResolvedorEguaClassico = ResolvedorEguaClassico;
388
388
  //# sourceMappingURL=resolvedor.js.map