@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,442 +1,442 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolvedorEguaClassico = void 0;
4
- const erro_resolvedor_1 = require("./erro-resolvedor");
5
- const pilha_escopos_1 = require("./pilha-escopos");
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 TipoLoop = {
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
- visitarDeclaracaoComentario(declaracao) {
45
- return Promise.resolve();
46
- }
47
- visitarDeclaracaoTendoComo(declaracao) {
48
- throw new Error('Método não implementado.');
49
- }
50
- visitarDeclaracaoInicioAlgoritmo(declaracao) {
51
- throw new Error('Método não implementado.');
52
- }
53
- visitarDeclaracaoCabecalhoPrograma(declaracao) {
54
- throw new Error('Método não implementado.');
55
- }
56
- visitarExpressaoTupla(expressao) {
57
- throw new Error('Método não implementado.');
58
- }
59
- visitarExpressaoAcessoElementoMatriz(expressao) {
60
- throw new Error('Método não implementado.');
61
- }
62
- visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
63
- throw new Error('Método não implementado.');
64
- }
65
- visitarExpressaoExpressaoRegular(expressao) {
66
- throw new Error('Método não implementado.');
67
- }
68
- visitarExpressaoTipoDe(expressao) {
69
- throw new Error('Método não implementado.');
70
- }
71
- visitarExpressaoQualTipo(expressao) {
72
- throw new Error('Método não implementado.');
73
- }
74
- visitarExpressaoFalhar(expressao) {
75
- throw new Error('Método não implementado.');
76
- }
77
- visitarDeclaracaoParaCada(declaracao) {
78
- throw new Error('Método não implementado.');
79
- }
80
- visitarDeclaracaoConst(declaracao) {
81
- throw new Error('Método não implementado.');
82
- }
83
- visitarDeclaracaoConstMultiplo(declaracao) {
84
- throw new Error('Método não implementado.');
85
- }
86
- visitarExpressaoFimPara(declaracao) {
87
- throw new Error('Método não implementado.');
88
- }
89
- visitarExpressaoFormatacaoEscrita(declaracao) {
90
- throw new Error('Método não implementado.');
91
- }
92
- visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
93
- throw new Error('Método não implementado.');
94
- }
95
- avaliar(expressao) {
96
- throw new Error('Método não implementado.');
97
- }
98
- eVerdadeiro(objeto) {
99
- throw new Error('Método não implementado.');
100
- }
101
- verificarOperandoNumero(operador, operando) {
102
- throw new Error('Método não implementado.');
103
- }
104
- eIgual(esquerda, direita) {
105
- throw new Error('Método não implementado.');
106
- }
107
- verificarOperandosNumeros(operador, direita, esquerda) {
108
- throw new Error('Método não implementado.');
109
- }
110
- procurarVariavel(nome, expressao) {
111
- throw new Error('Método não implementado.');
112
- }
113
- visitarExpressaoLeia(expressao) {
114
- throw new Error('Método não implementado.');
115
- }
116
- visitarExpressaoLeiaMultiplo(expressao) {
117
- throw new Error('Método não implementado.');
118
- }
119
- executarBloco(declaracoes, ambiente) {
120
- throw new Error('Método não implementado.');
121
- }
122
- paraTexto(objeto) {
123
- throw new Error('Método não implementado.');
124
- }
125
- executar(declaracao, mostrarResultado) {
126
- throw new Error('Método não implementado.');
127
- }
128
- interpretar(declaracoes, manterAmbiente) {
129
- throw new Error('Método não implementado.');
130
- }
131
- finalizacao() {
132
- throw new Error('Método não implementado.');
133
- }
134
- definir(simbolo) {
135
- if (this.escopos.eVazio())
136
- return;
137
- this.escopos.topoDaPilha()[simbolo.lexema] = true;
138
- }
139
- declarar(simbolo) {
140
- if (this.escopos.eVazio())
141
- return;
142
- const escopo = this.escopos.topoDaPilha();
143
- if (escopo.hasOwnProperty(simbolo.lexema)) {
144
- const erro = new erro_resolvedor_1.ErroResolvedor(simbolo, 'Variável com esse nome já declarada neste escopo.');
145
- this.erros.push(erro);
146
- }
147
- escopo[simbolo.lexema] = false;
148
- }
149
- inicioDoEscopo() {
150
- this.escopos.empilhar({});
151
- }
152
- finalDoEscopo() {
153
- this.escopos.removerUltimo();
154
- }
155
- resolverLocal(expressao, simbolo) {
156
- for (let i = this.escopos.pilha.length - 1; i >= 0; i--) {
157
- if (this.escopos.pilha[i].hasOwnProperty(simbolo.lexema)) {
158
- this.locais.set(expressao, this.escopos.pilha.length - 1 - i);
159
- }
160
- }
161
- }
162
- visitarExpressaoBloco(declaracao) {
163
- this.inicioDoEscopo();
164
- this.resolver(declaracao.declaracoes);
165
- this.finalDoEscopo();
166
- return null;
167
- }
168
- visitarExpressaoDeVariavel(expressao) {
169
- if (!this.escopos.eVazio() && this.escopos.topoDaPilha()[expressao.simbolo.lexema] === false) {
170
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simbolo, 'Não é possível ler a variável local em seu próprio inicializador.');
171
- this.erros.push(erro);
172
- throw erro;
173
- }
174
- this.resolverLocal(expressao, expressao.simbolo);
175
- return null;
176
- }
177
- visitarDeclaracaoVar(declaracao) {
178
- this.declarar(declaracao.simbolo);
179
- if (declaracao.inicializador !== null) {
180
- this.resolver(declaracao.inicializador);
181
- }
182
- this.definir(declaracao.simbolo);
183
- return null;
184
- }
185
- visitarDeclaracaoVarMultiplo(declaracao) {
186
- throw new Error('Método não implementado.');
187
- }
188
- visitarExpressaoDeAtribuicao(expressao) {
189
- this.resolver(expressao.valor);
190
- this.resolverLocal(expressao, expressao.simbolo);
191
- return null;
192
- }
193
- resolverFuncao(funcao, funcType) {
194
- const enclosingFunc = this.funcaoAtual;
195
- this.funcaoAtual = funcType;
196
- this.inicioDoEscopo();
197
- const parametros = funcao.parametros;
198
- if (parametros && parametros.length > 0) {
199
- for (let i = 0; i < parametros.length; i++) {
200
- this.declarar(parametros[i]['nome']);
201
- this.definir(parametros[i]['nome']);
202
- }
203
- }
204
- this.resolver(funcao.corpo);
205
- this.finalDoEscopo();
206
- this.funcaoAtual = enclosingFunc;
207
- }
208
- visitarDeclaracaoDefinicaoFuncao(declaracao) {
209
- this.declarar(declaracao.simbolo);
210
- this.definir(declaracao.simbolo);
211
- this.resolverFuncao(declaracao.funcao, TipoFuncao.FUNÇÃO);
212
- return null;
213
- }
214
- visitarExpressaoDeleguaFuncao(declaracao) {
215
- this.resolverFuncao(declaracao, TipoFuncao.FUNÇÃO);
216
- return null;
217
- }
218
- visitarDeclaracaoTente(declaracao) {
219
- this.resolver(declaracao.caminhoTente);
220
- if (declaracao.caminhoPegue !== null)
221
- this.resolver(declaracao.caminhoPegue);
222
- if (declaracao.caminhoSenao !== null)
223
- this.resolver(declaracao.caminhoSenao);
224
- if (declaracao.caminhoFinalmente !== null)
225
- this.resolver(declaracao.caminhoFinalmente);
226
- }
227
- visitarDeclaracaoClasse(declaracao) {
228
- const enclosingClass = this.classeAtual;
229
- this.classeAtual = TipoClasse.CLASSE;
230
- this.declarar(declaracao.simbolo);
231
- this.definir(declaracao.simbolo);
232
- if (declaracao.superClasse !== null && declaracao.simbolo.lexema === declaracao.superClasse.simbolo.lexema) {
233
- const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.simbolo, 'Uma classe não pode herdar de si mesma.');
234
- this.erros.push(erro);
235
- }
236
- if (declaracao.superClasse !== null) {
237
- this.classeAtual = TipoClasse.SUBCLASSE;
238
- this.resolver(declaracao.superClasse);
239
- }
240
- if (declaracao.superClasse !== null) {
241
- this.inicioDoEscopo();
242
- this.escopos.topoDaPilha()['super'] = true;
243
- }
244
- this.inicioDoEscopo();
245
- this.escopos.topoDaPilha()['isto'] = true;
246
- const metodos = declaracao.metodos;
247
- for (let i = 0; i < metodos.length; i++) {
248
- let declaracao = TipoFuncao.METODO;
249
- if (metodos[i].simbolo.lexema === 'isto') {
250
- declaracao = TipoFuncao.CONSTRUTOR;
251
- }
252
- this.resolverFuncao(metodos[i].funcao, declaracao);
253
- }
254
- this.finalDoEscopo();
255
- if (declaracao.superClasse !== null)
256
- this.finalDoEscopo();
257
- this.classeAtual = enclosingClass;
258
- return null;
259
- }
260
- visitarExpressaoSuper(expressao) {
261
- if (this.classeAtual === TipoClasse.NENHUM) {
262
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não pode usar 'super' fora de uma classe.");
263
- this.erros.push(erro);
264
- }
265
- else if (this.classeAtual !== TipoClasse.SUBCLASSE) {
266
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não se usa 'super' numa classe sem SuperClasse.");
267
- this.erros.push(erro);
268
- }
269
- this.resolverLocal(expressao, expressao.simboloChave);
270
- return null;
271
- }
272
- visitarExpressaoAcessoMetodo(expressao) {
273
- this.resolver(expressao.objeto);
274
- return null;
275
- }
276
- visitarDeclaracaoDeExpressao(declaracao) {
277
- this.resolver(declaracao.expressao);
278
- return null;
279
- }
280
- visitarDeclaracaoSe(declaracao) {
281
- this.resolver(declaracao.condicao);
282
- this.resolver(declaracao.caminhoEntao);
283
- for (let i = 0; i < declaracao.caminhosSeSenao.length; i++) {
284
- this.resolver(declaracao.caminhosSeSenao[i].condicao);
285
- this.resolver(declaracao.caminhosSeSenao[i].branch);
286
- }
287
- if (declaracao.caminhoSenao !== null)
288
- this.resolver(declaracao.caminhoSenao);
289
- return null;
290
- }
291
- async visitarDeclaracaoImportar(declaracao) {
292
- this.resolver(declaracao.caminho);
293
- }
294
- async visitarDeclaracaoEscreva(declaracao) {
295
- this.resolver(declaracao.expressao);
296
- }
297
- visitarExpressaoRetornar(declaracao) {
298
- if (this.funcaoAtual === TipoFuncao.NENHUM) {
299
- const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não é possível retornar do código do escopo superior.');
300
- this.erros.push(erro);
301
- }
302
- if (declaracao.valor !== null) {
303
- if (this.funcaoAtual === TipoFuncao.CONSTRUTOR) {
304
- const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não pode retornar o valor do construtor.');
305
- this.erros.push(erro);
306
- }
307
- this.resolver(declaracao.valor);
308
- }
309
- return null;
310
- }
311
- async visitarDeclaracaoEscolha(declaracao) {
312
- const enclosingType = this.cicloAtual;
313
- this.cicloAtual = TipoLoop.ESCOLHA;
314
- const caminhos = declaracao.caminhos;
315
- const caminhoPadrao = declaracao.caminhoPadrao;
316
- for (let i = 0; i < caminhos.length; i++) {
317
- this.resolver(caminhos[i]['declaracoes']);
318
- }
319
- if (caminhoPadrao !== null)
320
- this.resolver(caminhoPadrao['declaracoes']);
321
- this.cicloAtual = enclosingType;
322
- }
323
- visitarDeclaracaoEnquanto(declaracao) {
324
- this.resolver(declaracao.condicao);
325
- this.resolver(declaracao.corpo);
326
- return null;
327
- }
328
- visitarDeclaracaoPara(declaracao) {
329
- if (declaracao.inicializador !== null) {
330
- this.resolver(declaracao.inicializador);
331
- }
332
- if (declaracao.condicao !== null) {
333
- this.resolver(declaracao.condicao);
334
- }
335
- if (declaracao.incrementar !== null) {
336
- this.resolver(declaracao.incrementar);
337
- }
338
- const enclosingType = this.cicloAtual;
339
- this.cicloAtual = TipoLoop.ENQUANTO;
340
- this.resolver(declaracao.corpo);
341
- this.cicloAtual = enclosingType;
342
- return null;
343
- }
344
- visitarDeclaracaoFazer(declaracao) {
345
- this.resolver(declaracao.condicaoEnquanto);
346
- const enclosingType = this.cicloAtual;
347
- this.cicloAtual = TipoLoop.FAZER;
348
- this.resolver(declaracao.caminhoFazer);
349
- this.cicloAtual = enclosingType;
350
- return null;
351
- }
352
- visitarExpressaoBinaria(expressao) {
353
- this.resolver(expressao.esquerda);
354
- this.resolver(expressao.direita);
355
- return null;
356
- }
357
- visitarExpressaoDeChamada(expressao) {
358
- this.resolver(expressao.entidadeChamada);
359
- const argumentos = expressao.argumentos;
360
- for (let i = 0; i < argumentos.length; i++) {
361
- this.resolver(argumentos[i]);
362
- }
363
- return null;
364
- }
365
- visitarExpressaoAgrupamento(expressao) {
366
- this.resolver(expressao.expressao);
367
- return null;
368
- }
369
- visitarExpressaoDicionario(expressao) {
370
- for (let i = 0; i < expressao.chaves.length; i++) {
371
- this.resolver(expressao.chaves[i]);
372
- this.resolver(expressao.valores[i]);
373
- }
374
- return null;
375
- }
376
- visitarExpressaoVetor(expressao) {
377
- for (let i = 0; i < expressao.valores.length; i++) {
378
- this.resolver(expressao.valores[i]);
379
- }
380
- return null;
381
- }
382
- visitarExpressaoAcessoIndiceVariavel(expressao) {
383
- this.resolver(expressao.entidadeChamada);
384
- this.resolver(expressao.indice);
385
- return null;
386
- }
387
- visitarExpressaoContinua(declaracao) {
388
- return null;
389
- }
390
- visitarExpressaoSustar(declaracao) {
391
- return null;
392
- }
393
- visitarExpressaoAtribuicaoPorIndice(expressao) {
394
- return null;
395
- }
396
- visitarExpressaoLiteral(expressao) {
397
- return null;
398
- }
399
- visitarExpressaoLogica(expressao) {
400
- this.resolver(expressao.esquerda);
401
- this.resolver(expressao.direita);
402
- return null;
403
- }
404
- visitarExpressaoUnaria(expressao) {
405
- this.resolver(expressao.direita);
406
- return null;
407
- }
408
- visitarExpressaoDefinirValor(expressao) {
409
- this.resolver(expressao.valor);
410
- this.resolver(expressao.objeto);
411
- return null;
412
- }
413
- visitarExpressaoIsto(expressao) {
414
- if (this.classeAtual == TipoClasse.NENHUM) {
415
- const erro = new erro_resolvedor_1.ErroResolvedor(expressao.palavraChave, "Não pode usar 'isto' fora da classe.");
416
- this.erros.push(erro);
417
- }
418
- this.resolverLocal(expressao, expressao.palavraChave);
419
- return null;
420
- }
421
- visitarDeclaracaoAleatorio(declaracao) {
422
- throw new Error('Método não implementado.');
423
- }
424
- async resolver(declaracoes) {
425
- if (Array.isArray(declaracoes)) {
426
- for (let i = 0; i < declaracoes.length; i++) {
427
- if (declaracoes[i] && declaracoes[i].aceitar) {
428
- await declaracoes[i].aceitar(this);
429
- }
430
- }
431
- }
432
- else if (declaracoes) {
433
- await declaracoes.aceitar(this);
434
- }
435
- return {
436
- erros: this.erros,
437
- locais: this.locais,
438
- };
439
- }
440
- }
441
- exports.ResolvedorEguaClassico = ResolvedorEguaClassico;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvedorEguaClassico = void 0;
4
+ const erro_resolvedor_1 = require("./erro-resolvedor");
5
+ const pilha_escopos_1 = require("./pilha-escopos");
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 TipoLoop = {
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
+ visitarDeclaracaoComentario(declaracao) {
45
+ return Promise.resolve();
46
+ }
47
+ visitarDeclaracaoTendoComo(declaracao) {
48
+ throw new Error('Método não implementado.');
49
+ }
50
+ visitarDeclaracaoInicioAlgoritmo(declaracao) {
51
+ throw new Error('Método não implementado.');
52
+ }
53
+ visitarDeclaracaoCabecalhoPrograma(declaracao) {
54
+ throw new Error('Método não implementado.');
55
+ }
56
+ visitarExpressaoTupla(expressao) {
57
+ throw new Error('Método não implementado.');
58
+ }
59
+ visitarExpressaoAcessoElementoMatriz(expressao) {
60
+ throw new Error('Método não implementado.');
61
+ }
62
+ visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
63
+ throw new Error('Método não implementado.');
64
+ }
65
+ visitarExpressaoExpressaoRegular(expressao) {
66
+ throw new Error('Método não implementado.');
67
+ }
68
+ visitarExpressaoTipoDe(expressao) {
69
+ throw new Error('Método não implementado.');
70
+ }
71
+ visitarExpressaoQualTipo(expressao) {
72
+ throw new Error('Método não implementado.');
73
+ }
74
+ visitarExpressaoFalhar(expressao) {
75
+ throw new Error('Método não implementado.');
76
+ }
77
+ visitarDeclaracaoParaCada(declaracao) {
78
+ throw new Error('Método não implementado.');
79
+ }
80
+ visitarDeclaracaoConst(declaracao) {
81
+ throw new Error('Método não implementado.');
82
+ }
83
+ visitarDeclaracaoConstMultiplo(declaracao) {
84
+ throw new Error('Método não implementado.');
85
+ }
86
+ visitarExpressaoFimPara(declaracao) {
87
+ throw new Error('Método não implementado.');
88
+ }
89
+ visitarExpressaoFormatacaoEscrita(declaracao) {
90
+ throw new Error('Método não implementado.');
91
+ }
92
+ visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
93
+ throw new Error('Método não implementado.');
94
+ }
95
+ avaliar(expressao) {
96
+ throw new Error('Método não implementado.');
97
+ }
98
+ eVerdadeiro(objeto) {
99
+ throw new Error('Método não implementado.');
100
+ }
101
+ verificarOperandoNumero(operador, operando) {
102
+ throw new Error('Método não implementado.');
103
+ }
104
+ eIgual(esquerda, direita) {
105
+ throw new Error('Método não implementado.');
106
+ }
107
+ verificarOperandosNumeros(operador, direita, esquerda) {
108
+ throw new Error('Método não implementado.');
109
+ }
110
+ procurarVariavel(nome, expressao) {
111
+ throw new Error('Método não implementado.');
112
+ }
113
+ visitarExpressaoLeia(expressao) {
114
+ throw new Error('Método não implementado.');
115
+ }
116
+ visitarExpressaoLeiaMultiplo(expressao) {
117
+ throw new Error('Método não implementado.');
118
+ }
119
+ executarBloco(declaracoes, ambiente) {
120
+ throw new Error('Método não implementado.');
121
+ }
122
+ paraTexto(objeto) {
123
+ throw new Error('Método não implementado.');
124
+ }
125
+ executar(declaracao, mostrarResultado) {
126
+ throw new Error('Método não implementado.');
127
+ }
128
+ interpretar(declaracoes, manterAmbiente) {
129
+ throw new Error('Método não implementado.');
130
+ }
131
+ finalizacao() {
132
+ throw new Error('Método não implementado.');
133
+ }
134
+ definir(simbolo) {
135
+ if (this.escopos.eVazio())
136
+ return;
137
+ this.escopos.topoDaPilha()[simbolo.lexema] = true;
138
+ }
139
+ declarar(simbolo) {
140
+ if (this.escopos.eVazio())
141
+ return;
142
+ const escopo = this.escopos.topoDaPilha();
143
+ if (escopo.hasOwnProperty(simbolo.lexema)) {
144
+ const erro = new erro_resolvedor_1.ErroResolvedor(simbolo, 'Variável com esse nome já declarada neste escopo.');
145
+ this.erros.push(erro);
146
+ }
147
+ escopo[simbolo.lexema] = false;
148
+ }
149
+ inicioDoEscopo() {
150
+ this.escopos.empilhar({});
151
+ }
152
+ finalDoEscopo() {
153
+ this.escopos.removerUltimo();
154
+ }
155
+ resolverLocal(expressao, simbolo) {
156
+ for (let i = this.escopos.pilha.length - 1; i >= 0; i--) {
157
+ if (this.escopos.pilha[i].hasOwnProperty(simbolo.lexema)) {
158
+ this.locais.set(expressao, this.escopos.pilha.length - 1 - i);
159
+ }
160
+ }
161
+ }
162
+ visitarExpressaoBloco(declaracao) {
163
+ this.inicioDoEscopo();
164
+ this.resolver(declaracao.declaracoes);
165
+ this.finalDoEscopo();
166
+ return null;
167
+ }
168
+ visitarExpressaoDeVariavel(expressao) {
169
+ if (!this.escopos.eVazio() && this.escopos.topoDaPilha()[expressao.simbolo.lexema] === false) {
170
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simbolo, 'Não é possível ler a variável local em seu próprio inicializador.');
171
+ this.erros.push(erro);
172
+ throw erro;
173
+ }
174
+ this.resolverLocal(expressao, expressao.simbolo);
175
+ return null;
176
+ }
177
+ visitarDeclaracaoVar(declaracao) {
178
+ this.declarar(declaracao.simbolo);
179
+ if (declaracao.inicializador !== null) {
180
+ this.resolver(declaracao.inicializador);
181
+ }
182
+ this.definir(declaracao.simbolo);
183
+ return null;
184
+ }
185
+ visitarDeclaracaoVarMultiplo(declaracao) {
186
+ throw new Error('Método não implementado.');
187
+ }
188
+ visitarExpressaoDeAtribuicao(expressao) {
189
+ this.resolver(expressao.valor);
190
+ this.resolverLocal(expressao, expressao.simbolo);
191
+ return null;
192
+ }
193
+ resolverFuncao(funcao, funcType) {
194
+ const enclosingFunc = this.funcaoAtual;
195
+ this.funcaoAtual = funcType;
196
+ this.inicioDoEscopo();
197
+ const parametros = funcao.parametros;
198
+ if (parametros && parametros.length > 0) {
199
+ for (let i = 0; i < parametros.length; i++) {
200
+ this.declarar(parametros[i]['nome']);
201
+ this.definir(parametros[i]['nome']);
202
+ }
203
+ }
204
+ this.resolver(funcao.corpo);
205
+ this.finalDoEscopo();
206
+ this.funcaoAtual = enclosingFunc;
207
+ }
208
+ visitarDeclaracaoDefinicaoFuncao(declaracao) {
209
+ this.declarar(declaracao.simbolo);
210
+ this.definir(declaracao.simbolo);
211
+ this.resolverFuncao(declaracao.funcao, TipoFuncao.FUNÇÃO);
212
+ return null;
213
+ }
214
+ visitarExpressaoDeleguaFuncao(declaracao) {
215
+ this.resolverFuncao(declaracao, TipoFuncao.FUNÇÃO);
216
+ return null;
217
+ }
218
+ visitarDeclaracaoTente(declaracao) {
219
+ this.resolver(declaracao.caminhoTente);
220
+ if (declaracao.caminhoPegue !== null)
221
+ this.resolver(declaracao.caminhoPegue);
222
+ if (declaracao.caminhoSenao !== null)
223
+ this.resolver(declaracao.caminhoSenao);
224
+ if (declaracao.caminhoFinalmente !== null)
225
+ this.resolver(declaracao.caminhoFinalmente);
226
+ }
227
+ visitarDeclaracaoClasse(declaracao) {
228
+ const enclosingClass = this.classeAtual;
229
+ this.classeAtual = TipoClasse.CLASSE;
230
+ this.declarar(declaracao.simbolo);
231
+ this.definir(declaracao.simbolo);
232
+ if (declaracao.superClasse !== null && declaracao.simbolo.lexema === declaracao.superClasse.simbolo.lexema) {
233
+ const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.simbolo, 'Uma classe não pode herdar de si mesma.');
234
+ this.erros.push(erro);
235
+ }
236
+ if (declaracao.superClasse !== null) {
237
+ this.classeAtual = TipoClasse.SUBCLASSE;
238
+ this.resolver(declaracao.superClasse);
239
+ }
240
+ if (declaracao.superClasse !== null) {
241
+ this.inicioDoEscopo();
242
+ this.escopos.topoDaPilha()['super'] = true;
243
+ }
244
+ this.inicioDoEscopo();
245
+ this.escopos.topoDaPilha()['isto'] = true;
246
+ const metodos = declaracao.metodos;
247
+ for (let i = 0; i < metodos.length; i++) {
248
+ let declaracao = TipoFuncao.METODO;
249
+ if (metodos[i].simbolo.lexema === 'isto') {
250
+ declaracao = TipoFuncao.CONSTRUTOR;
251
+ }
252
+ this.resolverFuncao(metodos[i].funcao, declaracao);
253
+ }
254
+ this.finalDoEscopo();
255
+ if (declaracao.superClasse !== null)
256
+ this.finalDoEscopo();
257
+ this.classeAtual = enclosingClass;
258
+ return null;
259
+ }
260
+ visitarExpressaoSuper(expressao) {
261
+ if (this.classeAtual === TipoClasse.NENHUM) {
262
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não pode usar 'super' fora de uma classe.");
263
+ this.erros.push(erro);
264
+ }
265
+ else if (this.classeAtual !== TipoClasse.SUBCLASSE) {
266
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.simboloChave, "Não se usa 'super' numa classe sem SuperClasse.");
267
+ this.erros.push(erro);
268
+ }
269
+ this.resolverLocal(expressao, expressao.simboloChave);
270
+ return null;
271
+ }
272
+ visitarExpressaoAcessoMetodo(expressao) {
273
+ this.resolver(expressao.objeto);
274
+ return null;
275
+ }
276
+ visitarDeclaracaoDeExpressao(declaracao) {
277
+ this.resolver(declaracao.expressao);
278
+ return null;
279
+ }
280
+ visitarDeclaracaoSe(declaracao) {
281
+ this.resolver(declaracao.condicao);
282
+ this.resolver(declaracao.caminhoEntao);
283
+ for (let i = 0; i < declaracao.caminhosSeSenao.length; i++) {
284
+ this.resolver(declaracao.caminhosSeSenao[i].condicao);
285
+ this.resolver(declaracao.caminhosSeSenao[i].branch);
286
+ }
287
+ if (declaracao.caminhoSenao !== null)
288
+ this.resolver(declaracao.caminhoSenao);
289
+ return null;
290
+ }
291
+ async visitarDeclaracaoImportar(declaracao) {
292
+ this.resolver(declaracao.caminho);
293
+ }
294
+ async visitarDeclaracaoEscreva(declaracao) {
295
+ this.resolver(declaracao.expressao);
296
+ }
297
+ visitarExpressaoRetornar(declaracao) {
298
+ if (this.funcaoAtual === TipoFuncao.NENHUM) {
299
+ const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não é possível retornar do código do escopo superior.');
300
+ this.erros.push(erro);
301
+ }
302
+ if (declaracao.valor !== null) {
303
+ if (this.funcaoAtual === TipoFuncao.CONSTRUTOR) {
304
+ const erro = new erro_resolvedor_1.ErroResolvedor(declaracao.palavraChave, 'Não pode retornar o valor do construtor.');
305
+ this.erros.push(erro);
306
+ }
307
+ this.resolver(declaracao.valor);
308
+ }
309
+ return null;
310
+ }
311
+ async visitarDeclaracaoEscolha(declaracao) {
312
+ const enclosingType = this.cicloAtual;
313
+ this.cicloAtual = TipoLoop.ESCOLHA;
314
+ const caminhos = declaracao.caminhos;
315
+ const caminhoPadrao = declaracao.caminhoPadrao;
316
+ for (let i = 0; i < caminhos.length; i++) {
317
+ this.resolver(caminhos[i]['declaracoes']);
318
+ }
319
+ if (caminhoPadrao !== null)
320
+ this.resolver(caminhoPadrao['declaracoes']);
321
+ this.cicloAtual = enclosingType;
322
+ }
323
+ visitarDeclaracaoEnquanto(declaracao) {
324
+ this.resolver(declaracao.condicao);
325
+ this.resolver(declaracao.corpo);
326
+ return null;
327
+ }
328
+ visitarDeclaracaoPara(declaracao) {
329
+ if (declaracao.inicializador !== null) {
330
+ this.resolver(declaracao.inicializador);
331
+ }
332
+ if (declaracao.condicao !== null) {
333
+ this.resolver(declaracao.condicao);
334
+ }
335
+ if (declaracao.incrementar !== null) {
336
+ this.resolver(declaracao.incrementar);
337
+ }
338
+ const enclosingType = this.cicloAtual;
339
+ this.cicloAtual = TipoLoop.ENQUANTO;
340
+ this.resolver(declaracao.corpo);
341
+ this.cicloAtual = enclosingType;
342
+ return null;
343
+ }
344
+ visitarDeclaracaoFazer(declaracao) {
345
+ this.resolver(declaracao.condicaoEnquanto);
346
+ const enclosingType = this.cicloAtual;
347
+ this.cicloAtual = TipoLoop.FAZER;
348
+ this.resolver(declaracao.caminhoFazer);
349
+ this.cicloAtual = enclosingType;
350
+ return null;
351
+ }
352
+ visitarExpressaoBinaria(expressao) {
353
+ this.resolver(expressao.esquerda);
354
+ this.resolver(expressao.direita);
355
+ return null;
356
+ }
357
+ visitarExpressaoDeChamada(expressao) {
358
+ this.resolver(expressao.entidadeChamada);
359
+ const argumentos = expressao.argumentos;
360
+ for (let i = 0; i < argumentos.length; i++) {
361
+ this.resolver(argumentos[i]);
362
+ }
363
+ return null;
364
+ }
365
+ visitarExpressaoAgrupamento(expressao) {
366
+ this.resolver(expressao.expressao);
367
+ return null;
368
+ }
369
+ visitarExpressaoDicionario(expressao) {
370
+ for (let i = 0; i < expressao.chaves.length; i++) {
371
+ this.resolver(expressao.chaves[i]);
372
+ this.resolver(expressao.valores[i]);
373
+ }
374
+ return null;
375
+ }
376
+ visitarExpressaoVetor(expressao) {
377
+ for (let i = 0; i < expressao.valores.length; i++) {
378
+ this.resolver(expressao.valores[i]);
379
+ }
380
+ return null;
381
+ }
382
+ visitarExpressaoAcessoIndiceVariavel(expressao) {
383
+ this.resolver(expressao.entidadeChamada);
384
+ this.resolver(expressao.indice);
385
+ return null;
386
+ }
387
+ visitarExpressaoContinua(declaracao) {
388
+ return null;
389
+ }
390
+ visitarExpressaoSustar(declaracao) {
391
+ return null;
392
+ }
393
+ visitarExpressaoAtribuicaoPorIndice(expressao) {
394
+ return null;
395
+ }
396
+ visitarExpressaoLiteral(expressao) {
397
+ return null;
398
+ }
399
+ visitarExpressaoLogica(expressao) {
400
+ this.resolver(expressao.esquerda);
401
+ this.resolver(expressao.direita);
402
+ return null;
403
+ }
404
+ visitarExpressaoUnaria(expressao) {
405
+ this.resolver(expressao.direita);
406
+ return null;
407
+ }
408
+ visitarExpressaoDefinirValor(expressao) {
409
+ this.resolver(expressao.valor);
410
+ this.resolver(expressao.objeto);
411
+ return null;
412
+ }
413
+ visitarExpressaoIsto(expressao) {
414
+ if (this.classeAtual == TipoClasse.NENHUM) {
415
+ const erro = new erro_resolvedor_1.ErroResolvedor(expressao.palavraChave, "Não pode usar 'isto' fora da classe.");
416
+ this.erros.push(erro);
417
+ }
418
+ this.resolverLocal(expressao, expressao.palavraChave);
419
+ return null;
420
+ }
421
+ visitarDeclaracaoAleatorio(declaracao) {
422
+ throw new Error('Método não implementado.');
423
+ }
424
+ async resolver(declaracoes) {
425
+ if (Array.isArray(declaracoes)) {
426
+ for (let i = 0; i < declaracoes.length; i++) {
427
+ if (declaracoes[i] && declaracoes[i].aceitar) {
428
+ await declaracoes[i].aceitar(this);
429
+ }
430
+ }
431
+ }
432
+ else if (declaracoes) {
433
+ await declaracoes.aceitar(this);
434
+ }
435
+ return {
436
+ erros: this.erros,
437
+ locais: this.locais,
438
+ };
439
+ }
440
+ }
441
+ exports.ResolvedorEguaClassico = ResolvedorEguaClassico;
442
442
  //# sourceMappingURL=resolvedor.js.map