@designliquido/delegua 0.2.1 → 0.2.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 (391) hide show
  1. package/bin/package.json +2 -1
  2. package/{src → fontes}/ambiente.d.ts +4 -3
  3. package/{src → fontes}/ambiente.js +7 -7
  4. package/fontes/ambiente.js.map +1 -0
  5. package/fontes/avaliador-sintatico/dialetos/egua-classico.d.ts +63 -0
  6. package/fontes/avaliador-sintatico/dialetos/egua-classico.js +646 -0
  7. package/fontes/avaliador-sintatico/dialetos/egua-classico.js.map +1 -0
  8. package/{src → fontes}/avaliador-sintatico/dialetos/index.d.ts +0 -0
  9. package/{src → fontes}/avaliador-sintatico/dialetos/index.js +0 -0
  10. package/fontes/avaliador-sintatico/dialetos/index.js.map +1 -0
  11. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -0
  12. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js +30 -0
  13. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -0
  14. package/fontes/avaliador-sintatico/index.d.ts +66 -0
  15. package/fontes/avaliador-sintatico/index.js +663 -0
  16. package/fontes/avaliador-sintatico/index.js.map +1 -0
  17. package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.d.ts +6 -0
  18. package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.js +3 -0
  19. package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.js.map +1 -0
  20. package/{src → fontes}/bibliotecas/biblioteca-global.d.ts +0 -0
  21. package/{src → fontes}/bibliotecas/biblioteca-global.js +4 -4
  22. package/fontes/bibliotecas/biblioteca-global.js.map +1 -0
  23. package/{src → fontes}/bibliotecas/importar-biblioteca.d.ts +0 -0
  24. package/{src → fontes}/bibliotecas/importar-biblioteca.js +0 -0
  25. package/fontes/bibliotecas/importar-biblioteca.js.map +1 -0
  26. package/fontes/construtos/acesso-indice-variavel.d.ts +13 -0
  27. package/fontes/construtos/acesso-indice-variavel.js +21 -0
  28. package/fontes/construtos/acesso-indice-variavel.js.map +1 -0
  29. package/fontes/construtos/acesso-metodo.d.ts +13 -0
  30. package/fontes/construtos/acesso-metodo.js +20 -0
  31. package/fontes/construtos/acesso-metodo.js.map +1 -0
  32. package/fontes/construtos/agrupamento.d.ts +7 -0
  33. package/fontes/construtos/agrupamento.js +15 -0
  34. package/fontes/construtos/agrupamento.js.map +1 -0
  35. package/{src → fontes}/construtos/atribuicao-sobrescrita.d.ts +2 -1
  36. package/{src → fontes}/construtos/atribuicao-sobrescrita.js +2 -1
  37. package/fontes/construtos/atribuicao-sobrescrita.js.map +1 -0
  38. package/fontes/construtos/atribuir.d.ts +9 -0
  39. package/{src → fontes}/construtos/atribuir.js +3 -2
  40. package/fontes/construtos/atribuir.js.map +1 -0
  41. package/{src → fontes}/construtos/binario.d.ts +1 -0
  42. package/{src → fontes}/construtos/binario.js +1 -0
  43. package/fontes/construtos/binario.js.map +1 -0
  44. package/{src → fontes}/construtos/chamada.d.ts +3 -2
  45. package/{src → fontes}/construtos/chamada.js +1 -0
  46. package/fontes/construtos/chamada.js.map +1 -0
  47. package/{src → fontes}/construtos/conjunto.d.ts +2 -1
  48. package/{src → fontes}/construtos/conjunto.js +2 -1
  49. package/fontes/construtos/conjunto.js.map +1 -0
  50. package/{src → fontes}/construtos/construto.d.ts +1 -0
  51. package/{src → fontes}/construtos/construto.js +0 -0
  52. package/fontes/construtos/construto.js.map +1 -0
  53. package/{src → fontes}/construtos/dicionario.d.ts +2 -1
  54. package/{src → fontes}/construtos/dicionario.js +2 -1
  55. package/fontes/construtos/dicionario.js.map +1 -0
  56. package/{src → fontes}/construtos/funcao.d.ts +2 -1
  57. package/{src → fontes}/construtos/funcao.js +2 -1
  58. package/fontes/construtos/funcao.js.map +1 -0
  59. package/{src → fontes}/construtos/index.d.ts +4 -4
  60. package/{src → fontes}/construtos/index.js +4 -4
  61. package/fontes/construtos/index.js.map +1 -0
  62. package/{src → fontes}/construtos/isto.d.ts +2 -1
  63. package/{src → fontes}/construtos/isto.js +2 -1
  64. package/fontes/construtos/isto.js.map +1 -0
  65. package/{src → fontes}/construtos/literal.d.ts +2 -1
  66. package/{src → fontes}/construtos/literal.js +2 -1
  67. package/fontes/construtos/literal.js.map +1 -0
  68. package/{src/construtos/logical.d.ts → fontes/construtos/logico.d.ts} +2 -1
  69. package/fontes/construtos/logico.js +17 -0
  70. package/fontes/construtos/logico.js.map +1 -0
  71. package/{src → fontes}/construtos/super.d.ts +2 -1
  72. package/{src → fontes}/construtos/super.js +2 -1
  73. package/fontes/construtos/super.js.map +1 -0
  74. package/{src → fontes}/construtos/unario.d.ts +1 -0
  75. package/{src → fontes}/construtos/unario.js +1 -0
  76. package/fontes/construtos/unario.js.map +1 -0
  77. package/fontes/construtos/variavel.d.ts +8 -0
  78. package/{src → fontes}/construtos/variavel.js +3 -2
  79. package/fontes/construtos/variavel.js.map +1 -0
  80. package/{src → fontes}/construtos/vetor.d.ts +2 -1
  81. package/{src → fontes}/construtos/vetor.js +2 -1
  82. package/fontes/construtos/vetor.js.map +1 -0
  83. package/{src → fontes}/declaracoes/bloco.d.ts +0 -0
  84. package/{src → fontes}/declaracoes/bloco.js +1 -1
  85. package/fontes/declaracoes/bloco.js.map +1 -0
  86. package/{src → fontes}/declaracoes/classe.d.ts +3 -2
  87. package/{src → fontes}/declaracoes/classe.js +3 -3
  88. package/fontes/declaracoes/classe.js.map +1 -0
  89. package/{src → fontes}/declaracoes/continua.d.ts +0 -0
  90. package/{src → fontes}/declaracoes/continua.js +1 -1
  91. package/fontes/declaracoes/continua.js.map +1 -0
  92. package/{src → fontes}/declaracoes/declaracao.d.ts +2 -0
  93. package/{src → fontes}/declaracoes/declaracao.js +2 -1
  94. package/fontes/declaracoes/declaracao.js.map +1 -0
  95. package/{src → fontes}/declaracoes/enquanto.d.ts +0 -0
  96. package/{src → fontes}/declaracoes/enquanto.js +1 -1
  97. package/fontes/declaracoes/enquanto.js.map +1 -0
  98. package/{src → fontes}/declaracoes/escolha.d.ts +3 -3
  99. package/{src → fontes}/declaracoes/escolha.js +4 -4
  100. package/fontes/declaracoes/escolha.js.map +1 -0
  101. package/{src → fontes}/declaracoes/escreva.d.ts +0 -0
  102. package/{src → fontes}/declaracoes/escreva.js +1 -1
  103. package/fontes/declaracoes/escreva.js.map +1 -0
  104. package/{src → fontes}/declaracoes/expressao.d.ts +3 -2
  105. package/{src → fontes}/declaracoes/expressao.js +1 -1
  106. package/fontes/declaracoes/expressao.js.map +1 -0
  107. package/{src → fontes}/declaracoes/fazer.d.ts +3 -3
  108. package/{src → fontes}/declaracoes/fazer.js +4 -4
  109. package/fontes/declaracoes/fazer.js.map +1 -0
  110. package/fontes/declaracoes/funcao.d.ts +8 -0
  111. package/{src → fontes}/declaracoes/funcao.js +3 -3
  112. package/fontes/declaracoes/funcao.js.map +1 -0
  113. package/fontes/declaracoes/importar.d.ts +8 -0
  114. package/{src → fontes}/declaracoes/importar.js +3 -3
  115. package/fontes/declaracoes/importar.js.map +1 -0
  116. package/{src → fontes}/declaracoes/index.d.ts +1 -1
  117. package/{src → fontes}/declaracoes/index.js +1 -1
  118. package/fontes/declaracoes/index.js.map +1 -0
  119. package/{src → fontes}/declaracoes/para.d.ts +1 -1
  120. package/{src → fontes}/declaracoes/para.js +2 -2
  121. package/fontes/declaracoes/para.js.map +1 -0
  122. package/{src → fontes}/declaracoes/retorna.d.ts +0 -0
  123. package/{src → fontes}/declaracoes/retorna.js +1 -1
  124. package/fontes/declaracoes/retorna.js.map +1 -0
  125. package/fontes/declaracoes/se.d.ts +9 -0
  126. package/{src → fontes}/declaracoes/se.js +5 -5
  127. package/fontes/declaracoes/se.js.map +1 -0
  128. package/{src/declaracoes/pausa.d.ts → fontes/declaracoes/sustar.d.ts} +1 -1
  129. package/{src/declaracoes/pausa.js → fontes/declaracoes/sustar.js} +10 -10
  130. package/fontes/declaracoes/sustar.js.map +1 -0
  131. package/fontes/declaracoes/tente.d.ts +9 -0
  132. package/{src → fontes}/declaracoes/tente.js +6 -6
  133. package/fontes/declaracoes/tente.js.map +1 -0
  134. package/fontes/declaracoes/var.d.ts +8 -0
  135. package/{src → fontes}/declaracoes/var.js +3 -3
  136. package/fontes/declaracoes/var.js.map +1 -0
  137. package/{src → fontes}/delegua.d.ts +7 -8
  138. package/fontes/delegua.js +180 -0
  139. package/fontes/delegua.js.map +1 -0
  140. package/{src → fontes}/estruturas/chamavel.d.ts +0 -0
  141. package/{src → fontes}/estruturas/chamavel.js +0 -0
  142. package/fontes/estruturas/chamavel.js.map +1 -0
  143. package/{src → fontes}/estruturas/classe.d.ts +0 -0
  144. package/{src → fontes}/estruturas/classe.js +0 -0
  145. package/fontes/estruturas/classe.js.map +1 -0
  146. package/{src → fontes}/estruturas/funcao-padrao.d.ts +0 -0
  147. package/{src → fontes}/estruturas/funcao-padrao.js +0 -0
  148. package/fontes/estruturas/funcao-padrao.js.map +1 -0
  149. package/{src → fontes}/estruturas/funcao.d.ts +0 -0
  150. package/{src → fontes}/estruturas/funcao.js +0 -0
  151. package/fontes/estruturas/funcao.js.map +1 -0
  152. package/{src → fontes}/estruturas/index.d.ts +0 -0
  153. package/{src → fontes}/estruturas/index.js +0 -0
  154. package/fontes/estruturas/index.js.map +1 -0
  155. package/fontes/estruturas/instancia.d.ts +9 -0
  156. package/{src → fontes}/estruturas/instancia.js +7 -7
  157. package/fontes/estruturas/instancia.js.map +1 -0
  158. package/{src → fontes}/estruturas/modulo.d.ts +4 -0
  159. package/{src → fontes}/estruturas/modulo.js +3 -3
  160. package/fontes/estruturas/modulo.js.map +1 -0
  161. package/fontes/excecoes/erro-em-tempo-de-execucao.d.ts +7 -0
  162. package/{src → fontes}/excecoes/erro-em-tempo-de-execucao.js +2 -1
  163. package/fontes/excecoes/erro-em-tempo-de-execucao.js.map +1 -0
  164. package/{src → fontes}/excecoes/excecao-continuar.d.ts +0 -0
  165. package/{src → fontes}/excecoes/excecao-continuar.js +0 -0
  166. package/fontes/excecoes/excecao-continuar.js.map +1 -0
  167. package/{src → fontes}/excecoes/excecao-retornar.d.ts +0 -0
  168. package/{src → fontes}/excecoes/excecao-retornar.js +0 -0
  169. package/fontes/excecoes/excecao-retornar.js.map +1 -0
  170. package/fontes/excecoes/excecao-sustar.d.ts +2 -0
  171. package/{src/excecoes/excecao-quebra.js → fontes/excecoes/excecao-sustar.js} +7 -7
  172. package/fontes/excecoes/excecao-sustar.js.map +1 -0
  173. package/{src → fontes}/excecoes/index.d.ts +1 -1
  174. package/{src → fontes}/excecoes/index.js +1 -1
  175. package/fontes/excecoes/index.js.map +1 -0
  176. package/fontes/interfaces/avaliador-sintatico-interface.d.ts +59 -0
  177. package/{src → fontes}/interfaces/avaliador-sintatico-interface.js +0 -0
  178. package/fontes/interfaces/avaliador-sintatico-interface.js.map +1 -0
  179. package/fontes/interfaces/delegua-interface.d.ts +3 -0
  180. package/fontes/interfaces/delegua-interface.js +3 -0
  181. package/fontes/interfaces/delegua-interface.js.map +1 -0
  182. package/fontes/interfaces/index.d.ts +7 -0
  183. package/{src → fontes}/interfaces/index.js +1 -0
  184. package/fontes/interfaces/index.js.map +1 -0
  185. package/fontes/interfaces/interpretador-interface.d.ts +52 -0
  186. package/{src → fontes}/interfaces/interpretador-interface.js +0 -0
  187. package/fontes/interfaces/interpretador-interface.js.map +1 -0
  188. package/fontes/interfaces/lexador-interface.d.ts +24 -0
  189. package/{src → fontes}/interfaces/lexador-interface.js +0 -0
  190. package/fontes/interfaces/lexador-interface.js.map +1 -0
  191. package/fontes/interfaces/pilha-interface.d.ts +7 -0
  192. package/{src → fontes}/interfaces/pilha-interface.js +0 -0
  193. package/fontes/interfaces/pilha-interface.js.map +1 -0
  194. package/fontes/interfaces/resolvedor-interface.d.ts +53 -0
  195. package/{src → fontes}/interfaces/resolvedor-interface.js +0 -0
  196. package/fontes/interfaces/resolvedor-interface.js.map +1 -0
  197. package/{src → fontes}/interfaces/simbolo-interface.d.ts +0 -0
  198. package/{src → fontes}/interfaces/simbolo-interface.js +0 -0
  199. package/fontes/interfaces/simbolo-interface.js.map +1 -0
  200. package/fontes/interpretador/dialetos/egua-classico.d.ts +64 -0
  201. package/{src → fontes}/interpretador/dialetos/egua-classico.js +237 -208
  202. package/fontes/interpretador/dialetos/egua-classico.js.map +1 -0
  203. package/{src → fontes}/interpretador/dialetos/index.d.ts +0 -0
  204. package/{src → fontes}/interpretador/dialetos/index.js +0 -0
  205. package/fontes/interpretador/dialetos/index.js.map +1 -0
  206. package/fontes/interpretador/erro-interpretador.d.ts +5 -0
  207. package/fontes/interpretador/erro-interpretador.js +3 -0
  208. package/fontes/interpretador/erro-interpretador.js.map +1 -0
  209. package/fontes/interpretador/index.d.ts +66 -0
  210. package/fontes/interpretador/index.js +700 -0
  211. package/fontes/interpretador/index.js.map +1 -0
  212. package/fontes/interpretador/retorno-interpretador.d.ts +4 -0
  213. package/fontes/interpretador/retorno-interpretador.js +3 -0
  214. package/fontes/interpretador/retorno-interpretador.js.map +1 -0
  215. package/{src → fontes}/lexador/dialetos/egua-classico.d.ts +11 -9
  216. package/fontes/lexador/dialetos/egua-classico.js +334 -0
  217. package/fontes/lexador/dialetos/egua-classico.js.map +1 -0
  218. package/{src → fontes}/lexador/dialetos/index.d.ts +0 -0
  219. package/{src → fontes}/lexador/dialetos/index.js +0 -0
  220. package/fontes/lexador/dialetos/index.js.map +1 -0
  221. package/fontes/lexador/erro-lexador.d.ts +5 -0
  222. package/fontes/lexador/erro-lexador.js +3 -0
  223. package/fontes/lexador/erro-lexador.js.map +1 -0
  224. package/{src → fontes}/lexador/index.d.ts +5 -4
  225. package/{src → fontes}/lexador/index.js +87 -75
  226. package/fontes/lexador/index.js.map +1 -0
  227. package/fontes/lexador/retorno-lexador.d.ts +6 -0
  228. package/fontes/lexador/retorno-lexador.js +3 -0
  229. package/fontes/lexador/retorno-lexador.js.map +1 -0
  230. package/fontes/resolvedor/dialetos/egua-classico.d.ts +62 -0
  231. package/fontes/resolvedor/dialetos/egua-classico.js +344 -0
  232. package/fontes/resolvedor/dialetos/egua-classico.js.map +1 -0
  233. package/{src → fontes}/resolvedor/dialetos/index.d.ts +0 -0
  234. package/{src → fontes}/resolvedor/dialetos/index.js +0 -0
  235. package/fontes/resolvedor/dialetos/index.js.map +1 -0
  236. package/fontes/resolvedor/erro-resolvedor.d.ts +5 -0
  237. package/{src → fontes}/resolvedor/erro-resolvedor.js +3 -2
  238. package/fontes/resolvedor/erro-resolvedor.js.map +1 -0
  239. package/fontes/resolvedor/index.d.ts +62 -0
  240. package/fontes/resolvedor/index.js +343 -0
  241. package/fontes/resolvedor/index.js.map +1 -0
  242. package/{src → fontes}/resolvedor/pilha-escopos.d.ts +1 -1
  243. package/{src → fontes}/resolvedor/pilha-escopos.js +0 -0
  244. package/fontes/resolvedor/pilha-escopos.js.map +1 -0
  245. package/fontes/resolvedor/retorno-resolvedor.d.ts +6 -0
  246. package/fontes/resolvedor/retorno-resolvedor.js +3 -0
  247. package/fontes/resolvedor/retorno-resolvedor.js.map +1 -0
  248. package/{src/tiposDeSimbolos.d.ts → fontes/tipos-de-simbolos.d.ts} +0 -0
  249. package/{src/tiposDeSimbolos.js → fontes/tipos-de-simbolos.js} +1 -1
  250. package/fontes/tipos-de-simbolos.js.map +1 -0
  251. package/index.js +1 -1
  252. package/index.js.map +1 -1
  253. package/package.json +2 -1
  254. package/testes/avaliador-sintatico.test.js +14 -14
  255. package/testes/avaliador-sintatico.test.js.map +1 -1
  256. package/testes/biblioteca-global.test.d.ts +1 -0
  257. package/testes/biblioteca-global.test.js +131 -0
  258. package/testes/biblioteca-global.test.js.map +1 -0
  259. package/testes/egua-classico/avaliador-sintatico.test.d.ts +1 -0
  260. package/testes/egua-classico/avaliador-sintatico.test.js +24 -0
  261. package/testes/egua-classico/avaliador-sintatico.test.js.map +1 -0
  262. package/testes/egua-classico/interpretador.test.d.ts +1 -0
  263. package/testes/egua-classico/interpretador.test.js +219 -0
  264. package/testes/egua-classico/interpretador.test.js.map +1 -0
  265. package/testes/egua-classico/lexador.test.d.ts +1 -0
  266. package/testes/egua-classico/lexador.test.js +80 -0
  267. package/testes/egua-classico/lexador.test.js.map +1 -0
  268. package/testes/egua-classico/resolvedor.test.d.ts +1 -0
  269. package/testes/egua-classico/resolvedor.test.js +38 -0
  270. package/testes/egua-classico/resolvedor.test.js.map +1 -0
  271. package/testes/interpretador.test.js +171 -92
  272. package/testes/interpretador.test.js.map +1 -1
  273. package/testes/lexador.test.js +17 -14
  274. package/testes/lexador.test.js.map +1 -1
  275. package/testes/resolvedor.test.js +4 -4
  276. package/testes/resolvedor.test.js.map +1 -1
  277. package/src/ambiente.js.map +0 -1
  278. package/src/avaliador-sintatico/dialetos/egua-classico.d.ts +0 -60
  279. package/src/avaliador-sintatico/dialetos/egua-classico.js +0 -635
  280. package/src/avaliador-sintatico/dialetos/egua-classico.js.map +0 -1
  281. package/src/avaliador-sintatico/dialetos/index.js.map +0 -1
  282. package/src/avaliador-sintatico/erros-avaliador.d.ts +0 -2
  283. package/src/avaliador-sintatico/erros-avaliador.js +0 -27
  284. package/src/avaliador-sintatico/erros-avaliador.js.map +0 -1
  285. package/src/avaliador-sintatico/index.d.ts +0 -62
  286. package/src/avaliador-sintatico/index.js +0 -650
  287. package/src/avaliador-sintatico/index.js.map +0 -1
  288. package/src/bibliotecas/biblioteca-global.js.map +0 -1
  289. package/src/bibliotecas/importar-biblioteca.js.map +0 -1
  290. package/src/construtos/atribuicao-sobrescrita.js.map +0 -1
  291. package/src/construtos/atribuir.d.ts +0 -7
  292. package/src/construtos/atribuir.js.map +0 -1
  293. package/src/construtos/binario.js.map +0 -1
  294. package/src/construtos/chamada.js.map +0 -1
  295. package/src/construtos/conjunto.js.map +0 -1
  296. package/src/construtos/construto.js.map +0 -1
  297. package/src/construtos/dicionario.js.map +0 -1
  298. package/src/construtos/funcao.js.map +0 -1
  299. package/src/construtos/get.d.ts +0 -7
  300. package/src/construtos/get.js +0 -15
  301. package/src/construtos/get.js.map +0 -1
  302. package/src/construtos/grouping.d.ts +0 -6
  303. package/src/construtos/grouping.js +0 -14
  304. package/src/construtos/grouping.js.map +0 -1
  305. package/src/construtos/index.js.map +0 -1
  306. package/src/construtos/isto.js.map +0 -1
  307. package/src/construtos/literal.js.map +0 -1
  308. package/src/construtos/logical.js +0 -16
  309. package/src/construtos/logical.js.map +0 -1
  310. package/src/construtos/subscript.d.ts +0 -8
  311. package/src/construtos/subscript.js +0 -16
  312. package/src/construtos/subscript.js.map +0 -1
  313. package/src/construtos/super.js.map +0 -1
  314. package/src/construtos/unario.js.map +0 -1
  315. package/src/construtos/variavel.d.ts +0 -6
  316. package/src/construtos/variavel.js.map +0 -1
  317. package/src/construtos/vetor.js.map +0 -1
  318. package/src/declaracoes/bloco.js.map +0 -1
  319. package/src/declaracoes/classe.js.map +0 -1
  320. package/src/declaracoes/continua.js.map +0 -1
  321. package/src/declaracoes/declaracao.js.map +0 -1
  322. package/src/declaracoes/enquanto.js.map +0 -1
  323. package/src/declaracoes/escolha.js.map +0 -1
  324. package/src/declaracoes/escreva.js.map +0 -1
  325. package/src/declaracoes/expressao.js.map +0 -1
  326. package/src/declaracoes/fazer.js.map +0 -1
  327. package/src/declaracoes/funcao.d.ts +0 -7
  328. package/src/declaracoes/funcao.js.map +0 -1
  329. package/src/declaracoes/importar.d.ts +0 -7
  330. package/src/declaracoes/importar.js.map +0 -1
  331. package/src/declaracoes/index.js.map +0 -1
  332. package/src/declaracoes/para.js.map +0 -1
  333. package/src/declaracoes/pausa.js.map +0 -1
  334. package/src/declaracoes/retorna.js.map +0 -1
  335. package/src/declaracoes/se.d.ts +0 -9
  336. package/src/declaracoes/se.js.map +0 -1
  337. package/src/declaracoes/tente.d.ts +0 -9
  338. package/src/declaracoes/tente.js.map +0 -1
  339. package/src/declaracoes/var.d.ts +0 -7
  340. package/src/declaracoes/var.js.map +0 -1
  341. package/src/delegua.js +0 -138
  342. package/src/delegua.js.map +0 -1
  343. package/src/estruturas/chamavel.js.map +0 -1
  344. package/src/estruturas/classe.js.map +0 -1
  345. package/src/estruturas/funcao-padrao.js.map +0 -1
  346. package/src/estruturas/funcao.js.map +0 -1
  347. package/src/estruturas/index.js.map +0 -1
  348. package/src/estruturas/instancia.d.ts +0 -8
  349. package/src/estruturas/instancia.js.map +0 -1
  350. package/src/estruturas/modulo.js.map +0 -1
  351. package/src/excecoes/erro-em-tempo-de-execucao.d.ts +0 -5
  352. package/src/excecoes/erro-em-tempo-de-execucao.js.map +0 -1
  353. package/src/excecoes/excecao-continuar.js.map +0 -1
  354. package/src/excecoes/excecao-quebra.d.ts +0 -2
  355. package/src/excecoes/excecao-quebra.js.map +0 -1
  356. package/src/excecoes/excecao-retornar.js.map +0 -1
  357. package/src/excecoes/index.js.map +0 -1
  358. package/src/interfaces/avaliador-sintatico-interface.d.ts +0 -55
  359. package/src/interfaces/avaliador-sintatico-interface.js.map +0 -1
  360. package/src/interfaces/index.d.ts +0 -6
  361. package/src/interfaces/index.js.map +0 -1
  362. package/src/interfaces/interpretador-interface.d.ts +0 -51
  363. package/src/interfaces/interpretador-interface.js.map +0 -1
  364. package/src/interfaces/lexador-interface.d.ts +0 -23
  365. package/src/interfaces/lexador-interface.js.map +0 -1
  366. package/src/interfaces/pilha-interface.d.ts +0 -7
  367. package/src/interfaces/pilha-interface.js.map +0 -1
  368. package/src/interfaces/resolvedor-interface.d.ts +0 -50
  369. package/src/interfaces/resolvedor-interface.js.map +0 -1
  370. package/src/interfaces/simbolo-interface.js.map +0 -1
  371. package/src/interpretador/dialetos/egua-classico.d.ts +0 -58
  372. package/src/interpretador/dialetos/egua-classico.js.map +0 -1
  373. package/src/interpretador/dialetos/index.js.map +0 -1
  374. package/src/interpretador/index.d.ts +0 -59
  375. package/src/interpretador/index.js +0 -675
  376. package/src/interpretador/index.js.map +0 -1
  377. package/src/lexador/dialetos/egua-classico.js +0 -285
  378. package/src/lexador/dialetos/egua-classico.js.map +0 -1
  379. package/src/lexador/dialetos/index.js.map +0 -1
  380. package/src/lexador/index.js.map +0 -1
  381. package/src/resolvedor/dialetos/egua-classico.d.ts +0 -59
  382. package/src/resolvedor/dialetos/egua-classico.js +0 -331
  383. package/src/resolvedor/dialetos/egua-classico.js.map +0 -1
  384. package/src/resolvedor/dialetos/index.js.map +0 -1
  385. package/src/resolvedor/erro-resolvedor.d.ts +0 -4
  386. package/src/resolvedor/erro-resolvedor.js.map +0 -1
  387. package/src/resolvedor/index.d.ts +0 -60
  388. package/src/resolvedor/index.js +0 -331
  389. package/src/resolvedor/index.js.map +0 -1
  390. package/src/resolvedor/pilha-escopos.js.map +0 -1
  391. package/src/tiposDeSimbolos.js.map +0 -1
@@ -0,0 +1,646 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AvaliadorSintaticoEguaClassico = void 0;
7
+ var tipos_de_simbolos_1 = __importDefault(require("../../tipos-de-simbolos"));
8
+ var construtos_1 = require("../../construtos");
9
+ var erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
10
+ var declaracoes_1 = require("../../declaracoes");
11
+ /**
12
+ * O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
13
+ * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
14
+ */
15
+ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
16
+ function AvaliadorSintaticoEguaClassico(simbolos) {
17
+ this.simbolos = simbolos;
18
+ this.atual = 0;
19
+ this.ciclos = 0;
20
+ }
21
+ AvaliadorSintaticoEguaClassico.prototype.sincronizar = function () {
22
+ this.avancarEDevolverAnterior();
23
+ while (!this.estaNoFinal()) {
24
+ if (this.simboloAnterior().tipo === tipos_de_simbolos_1.default.PONTO_E_VIRGULA)
25
+ return;
26
+ switch (this.simboloAtual().tipo) {
27
+ case tipos_de_simbolos_1.default.CLASSE:
28
+ case tipos_de_simbolos_1.default.FUNÇÃO:
29
+ case tipos_de_simbolos_1.default.VARIAVEL:
30
+ case tipos_de_simbolos_1.default.PARA:
31
+ case tipos_de_simbolos_1.default.SE:
32
+ case tipos_de_simbolos_1.default.ENQUANTO:
33
+ case tipos_de_simbolos_1.default.ESCREVA:
34
+ case tipos_de_simbolos_1.default.RETORNA:
35
+ return;
36
+ }
37
+ this.avancarEDevolverAnterior();
38
+ }
39
+ };
40
+ AvaliadorSintaticoEguaClassico.prototype.erro = function (simbolo, mensagemDeErro) {
41
+ var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
42
+ this.erros.push(excecao);
43
+ return excecao;
44
+ };
45
+ AvaliadorSintaticoEguaClassico.prototype.consumir = function (tipo, mensagemDeErro) {
46
+ if (this.verificarTipoSimboloAtual(tipo))
47
+ return this.avancarEDevolverAnterior();
48
+ else
49
+ throw this.erro(this.simboloAtual(), mensagemDeErro);
50
+ };
51
+ AvaliadorSintaticoEguaClassico.prototype.verificarTipoSimboloAtual = function (tipo) {
52
+ if (this.estaNoFinal())
53
+ return false;
54
+ return this.simboloAtual().tipo === tipo;
55
+ };
56
+ AvaliadorSintaticoEguaClassico.prototype.verificarTipoProximoSimbolo = function (tipo) {
57
+ if (this.estaNoFinal())
58
+ return false;
59
+ return this.simbolos[this.atual + 1].tipo === tipo;
60
+ };
61
+ AvaliadorSintaticoEguaClassico.prototype.simboloAtual = function () {
62
+ return this.simbolos[this.atual];
63
+ };
64
+ AvaliadorSintaticoEguaClassico.prototype.simboloAnterior = function () {
65
+ return this.simbolos[this.atual - 1];
66
+ };
67
+ AvaliadorSintaticoEguaClassico.prototype.simboloNaPosicao = function (posicao) {
68
+ return this.simbolos[this.atual + posicao];
69
+ };
70
+ AvaliadorSintaticoEguaClassico.prototype.estaNoFinal = function () {
71
+ return this.simboloAtual().tipo === tipos_de_simbolos_1.default.EOF;
72
+ };
73
+ AvaliadorSintaticoEguaClassico.prototype.avancarEDevolverAnterior = function () {
74
+ if (!this.estaNoFinal())
75
+ this.atual += 1;
76
+ return this.simboloAnterior();
77
+ };
78
+ AvaliadorSintaticoEguaClassico.prototype.verificarSeSimboloAtualEIgualA = function () {
79
+ var argumentos = [];
80
+ for (var _i = 0; _i < arguments.length; _i++) {
81
+ argumentos[_i] = arguments[_i];
82
+ }
83
+ for (var i = 0; i < argumentos.length; i++) {
84
+ var tipoAtual = argumentos[i];
85
+ if (this.verificarTipoSimboloAtual(tipoAtual)) {
86
+ this.avancarEDevolverAnterior();
87
+ return true;
88
+ }
89
+ }
90
+ return false;
91
+ };
92
+ AvaliadorSintaticoEguaClassico.prototype.primario = function () {
93
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.SUPER)) {
94
+ var palavraChave = this.simboloAnterior();
95
+ this.consumir(tipos_de_simbolos_1.default.PONTO, "Esperado '.' após 'super'.");
96
+ var metodo = this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, 'Esperado nome do método da SuperClasse.');
97
+ return new construtos_1.Super(0, palavraChave, metodo);
98
+ }
99
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.COLCHETE_ESQUERDO)) {
100
+ var valores = [];
101
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.COLCHETE_DIREITO)) {
102
+ return new construtos_1.Vetor(0, []);
103
+ }
104
+ while (!this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.COLCHETE_DIREITO)) {
105
+ var valor = this.atribuir();
106
+ valores.push(valor);
107
+ if (this.simboloAtual().tipo !==
108
+ tipos_de_simbolos_1.default.COLCHETE_DIREITO) {
109
+ this.consumir(tipos_de_simbolos_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
110
+ }
111
+ }
112
+ return new construtos_1.Vetor(0, valores);
113
+ }
114
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CHAVE_ESQUERDA)) {
115
+ var chaves = [];
116
+ var valores = [];
117
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CHAVE_DIREITA)) {
118
+ return new construtos_1.Dicionario(0, [], []);
119
+ }
120
+ while (!this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CHAVE_DIREITA)) {
121
+ var chave = this.atribuir();
122
+ this.consumir(tipos_de_simbolos_1.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
123
+ var valor = this.atribuir();
124
+ chaves.push(chave);
125
+ valores.push(valor);
126
+ if (this.simboloAtual().tipo !== tipos_de_simbolos_1.default.CHAVE_DIREITA) {
127
+ this.consumir(tipos_de_simbolos_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
128
+ }
129
+ }
130
+ return new construtos_1.Dicionario(0, chaves, valores);
131
+ }
132
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.FUNÇÃO))
133
+ return this.corpoDaFuncao('função');
134
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.FALSO))
135
+ return new construtos_1.Literal(0, false);
136
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.VERDADEIRO))
137
+ return new construtos_1.Literal(0, true);
138
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.NULO))
139
+ return new construtos_1.Literal(0, null);
140
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.ISTO))
141
+ return new construtos_1.Isto(this.simboloAnterior());
142
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.NUMERO, tipos_de_simbolos_1.default.TEXTO)) {
143
+ return new construtos_1.Literal(0, this.simboloAnterior().literal);
144
+ }
145
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.IDENTIFICADOR)) {
146
+ return new construtos_1.Variavel(this.simboloAnterior());
147
+ }
148
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO)) {
149
+ var expr = this.expressao();
150
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
151
+ return new construtos_1.Agrupamento(0, expr);
152
+ }
153
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.IMPORTAR))
154
+ return this.declaracaoImportar();
155
+ throw this.erro(this.simboloAtual(), 'Esperado expressão.');
156
+ };
157
+ AvaliadorSintaticoEguaClassico.prototype.finalizarChamada = function (entidadeChamada) {
158
+ var argumentos = [];
159
+ if (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PARENTESE_DIREITO)) {
160
+ do {
161
+ if (argumentos.length >= 255) {
162
+ throw this.erro(this.simboloAtual(), 'Não pode haver mais de 255 argumentos.');
163
+ }
164
+ argumentos.push(this.expressao());
165
+ } while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.VIRGULA));
166
+ }
167
+ var parenteseDireito = this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
168
+ return new construtos_1.Chamada(entidadeChamada, parenteseDireito, argumentos);
169
+ };
170
+ AvaliadorSintaticoEguaClassico.prototype.chamar = function () {
171
+ var expressao = this.primario();
172
+ while (true) {
173
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO)) {
174
+ expressao = this.finalizarChamada(expressao);
175
+ }
176
+ else if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PONTO)) {
177
+ var nome = this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
178
+ expressao = new construtos_1.AcessoMetodo(expressao, nome);
179
+ }
180
+ else if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.COLCHETE_ESQUERDO)) {
181
+ var indice = this.expressao();
182
+ var simboloFechamento = this.consumir(tipos_de_simbolos_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
183
+ expressao = new construtos_1.AcessoIndiceVariavel(expressao, indice, simboloFechamento);
184
+ }
185
+ else {
186
+ break;
187
+ }
188
+ }
189
+ return expressao;
190
+ };
191
+ AvaliadorSintaticoEguaClassico.prototype.unario = function () {
192
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.NEGACAO, tipos_de_simbolos_1.default.SUBTRACAO, tipos_de_simbolos_1.default.BIT_NOT)) {
193
+ var operador = this.simboloAnterior();
194
+ var direito = this.unario();
195
+ return new construtos_1.Unario(operador, direito);
196
+ }
197
+ return this.chamar();
198
+ };
199
+ AvaliadorSintaticoEguaClassico.prototype.exponenciacao = function () {
200
+ var expressao = this.unario();
201
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.EXPONENCIACAO)) {
202
+ var operador = this.simboloAnterior();
203
+ var direito = this.unario();
204
+ expressao = new construtos_1.Binario(expressao, operador, direito);
205
+ }
206
+ return expressao;
207
+ };
208
+ AvaliadorSintaticoEguaClassico.prototype.multiplicar = function () {
209
+ var expressao = this.exponenciacao();
210
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.DIVISAO, tipos_de_simbolos_1.default.MULTIPLICACAO, tipos_de_simbolos_1.default.MODULO)) {
211
+ var operador = this.simboloAnterior();
212
+ var direito = this.exponenciacao();
213
+ expressao = new construtos_1.Binario(expressao, operador, direito);
214
+ }
215
+ return expressao;
216
+ };
217
+ AvaliadorSintaticoEguaClassico.prototype.adicionar = function () {
218
+ var expressao = this.multiplicar();
219
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.SUBTRACAO, tipos_de_simbolos_1.default.ADICAO)) {
220
+ var operador = this.simboloAnterior();
221
+ var direito = this.multiplicar();
222
+ expressao = new construtos_1.Binario(expressao, operador, direito);
223
+ }
224
+ return expressao;
225
+ };
226
+ AvaliadorSintaticoEguaClassico.prototype.bitFill = function () {
227
+ var expressao = this.adicionar();
228
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.MENOR_MENOR, tipos_de_simbolos_1.default.MAIOR_MAIOR)) {
229
+ var operador = this.simboloAnterior();
230
+ var direito = this.adicionar();
231
+ expressao = new construtos_1.Binario(expressao, operador, direito);
232
+ }
233
+ return expressao;
234
+ };
235
+ AvaliadorSintaticoEguaClassico.prototype.bitE = function () {
236
+ var expressao = this.bitFill();
237
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.BIT_AND)) {
238
+ var operador = this.simboloAnterior();
239
+ var direito = this.bitFill();
240
+ expressao = new construtos_1.Binario(expressao, operador, direito);
241
+ }
242
+ return expressao;
243
+ };
244
+ AvaliadorSintaticoEguaClassico.prototype.bitOu = function () {
245
+ var expressao = this.bitE();
246
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.BIT_OR, tipos_de_simbolos_1.default.BIT_XOR)) {
247
+ var operador = this.simboloAnterior();
248
+ var direito = this.bitE();
249
+ expressao = new construtos_1.Binario(expressao, operador, direito);
250
+ }
251
+ return expressao;
252
+ };
253
+ AvaliadorSintaticoEguaClassico.prototype.comparar = function () {
254
+ var expressao = this.bitOu();
255
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.MAIOR, tipos_de_simbolos_1.default.MAIOR_IGUAL, tipos_de_simbolos_1.default.MENOR, tipos_de_simbolos_1.default.MENOR_IGUAL)) {
256
+ var operador = this.simboloAnterior();
257
+ var direito = this.bitOu();
258
+ expressao = new construtos_1.Binario(expressao, operador, direito);
259
+ }
260
+ return expressao;
261
+ };
262
+ AvaliadorSintaticoEguaClassico.prototype.comparacaoIgualdade = function () {
263
+ var expressao = this.comparar();
264
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.DIFERENTE, tipos_de_simbolos_1.default.IGUAL_IGUAL)) {
265
+ var operador = this.simboloAnterior();
266
+ var direito = this.comparar();
267
+ expressao = new construtos_1.Binario(expressao, operador, direito);
268
+ }
269
+ return expressao;
270
+ };
271
+ AvaliadorSintaticoEguaClassico.prototype.em = function () {
272
+ var expressao = this.comparacaoIgualdade();
273
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.EM)) {
274
+ var operador = this.simboloAnterior();
275
+ var direito = this.comparacaoIgualdade();
276
+ expressao = new construtos_1.Logico(expressao, operador, direito);
277
+ }
278
+ return expressao;
279
+ };
280
+ AvaliadorSintaticoEguaClassico.prototype.e = function () {
281
+ var expressao = this.em();
282
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.E)) {
283
+ var operador = this.simboloAnterior();
284
+ var direito = this.em();
285
+ expressao = new construtos_1.Logico(expressao, operador, direito);
286
+ }
287
+ return expressao;
288
+ };
289
+ AvaliadorSintaticoEguaClassico.prototype.ou = function () {
290
+ var expressao = this.e();
291
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.OU)) {
292
+ var operador = this.simboloAnterior();
293
+ var direito = this.e();
294
+ expressao = new construtos_1.Logico(expressao, operador, direito);
295
+ }
296
+ return expressao;
297
+ };
298
+ AvaliadorSintaticoEguaClassico.prototype.atribuir = function () {
299
+ var expressao = this.ou();
300
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.IGUAL)) {
301
+ var igual = this.simboloAnterior();
302
+ var valor = this.atribuir();
303
+ if (expressao instanceof construtos_1.Variavel) {
304
+ var simbolo = expressao.simbolo;
305
+ return new construtos_1.Atribuir(simbolo, valor);
306
+ }
307
+ else if (expressao instanceof construtos_1.AcessoMetodo) {
308
+ var get = expressao;
309
+ return new construtos_1.Conjunto(0, get.objeto, get.simbolo, valor);
310
+ }
311
+ else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
312
+ return new construtos_1.AtribuicaoSobrescrita(0, expressao.entidadeChamada, expressao.indice, valor);
313
+ }
314
+ this.erro(igual, 'Tarefa de atribuição inválida');
315
+ }
316
+ return expressao;
317
+ };
318
+ AvaliadorSintaticoEguaClassico.prototype.expressao = function () {
319
+ return this.atribuir();
320
+ };
321
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoEscreva = function () {
322
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
323
+ var valor = this.expressao();
324
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
325
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após o valor.");
326
+ return new declaracoes_1.Escreva(valor);
327
+ };
328
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoExpressao = function () {
329
+ var expressao = this.expressao();
330
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após expressão.");
331
+ return new declaracoes_1.Expressao(expressao);
332
+ };
333
+ AvaliadorSintaticoEguaClassico.prototype.blocoEscopo = function () {
334
+ var declaracoes = [];
335
+ while (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CHAVE_DIREITA) &&
336
+ !this.estaNoFinal()) {
337
+ declaracoes.push(this.declaracao());
338
+ }
339
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
340
+ return declaracoes;
341
+ };
342
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoSe = function () {
343
+ var simboloSe = this.simboloAnterior();
344
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
345
+ var condicao = this.expressao();
346
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
347
+ var caminhoEntao = this.resolverDeclaracao();
348
+ var caminhosSeSenao = [];
349
+ while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.SENÃOSE)) {
350
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'senãose'.");
351
+ var condicaoSeSenao = this.expressao();
352
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' apóes codição do 'senãose.");
353
+ var caminho = this.resolverDeclaracao();
354
+ caminhosSeSenao.push({
355
+ condicao: condicaoSeSenao,
356
+ caminho: caminho,
357
+ });
358
+ }
359
+ var caminhoSenao = null;
360
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.SENÃO)) {
361
+ caminhoSenao = this.resolverDeclaracao();
362
+ }
363
+ return new declaracoes_1.Se(Number(simboloSe.linha), condicao, caminhoEntao, caminhosSeSenao, caminhoSenao);
364
+ };
365
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoEnquanto = function () {
366
+ try {
367
+ this.ciclos += 1;
368
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
369
+ var condicao = this.expressao();
370
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após condicional.");
371
+ var corpo = this.resolverDeclaracao();
372
+ return new declaracoes_1.Enquanto(condicao, corpo);
373
+ }
374
+ finally {
375
+ this.ciclos -= 1;
376
+ }
377
+ };
378
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoPara = function () {
379
+ try {
380
+ var simboloPara = this.simboloAnterior();
381
+ this.ciclos += 1;
382
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
383
+ var inicializador = void 0;
384
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PONTO_E_VIRGULA)) {
385
+ inicializador = null;
386
+ }
387
+ else if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.VARIAVEL)) {
388
+ inicializador = this.declaracaoDeVariavel();
389
+ }
390
+ else {
391
+ inicializador = this.declaracaoExpressao();
392
+ }
393
+ var condicao = null;
394
+ if (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PONTO_E_VIRGULA)) {
395
+ condicao = this.expressao();
396
+ }
397
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após valores da condicional");
398
+ var incrementar = null;
399
+ if (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PARENTESE_DIREITO)) {
400
+ incrementar = this.expressao();
401
+ }
402
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
403
+ var corpo = this.resolverDeclaracao();
404
+ return new declaracoes_1.Para(Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
405
+ }
406
+ finally {
407
+ this.ciclos -= 1;
408
+ }
409
+ };
410
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoSustar = function () {
411
+ if (this.ciclos < 1) {
412
+ this.erro(this.simboloAnterior(), "'pausa' deve estar dentro de um loop.");
413
+ }
414
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'pausa'.");
415
+ return new declaracoes_1.Sustar();
416
+ };
417
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoContinua = function () {
418
+ if (this.ciclos < 1) {
419
+ this.erro(this.simboloAnterior(), "'continua' precisa estar em um laço de repetição.");
420
+ }
421
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'continua'.");
422
+ return new declaracoes_1.Continua();
423
+ };
424
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoRetorna = function () {
425
+ var palavraChave = this.simboloAnterior();
426
+ var valor = null;
427
+ if (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PONTO_E_VIRGULA)) {
428
+ valor = this.expressao();
429
+ }
430
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após o retorno.");
431
+ return new declaracoes_1.Retorna(palavraChave, valor);
432
+ };
433
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoEscolha = function () {
434
+ try {
435
+ this.ciclos += 1;
436
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '{' após 'escolha'.");
437
+ var condicao = this.expressao();
438
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado '}' após a condição de 'escolha'.");
439
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do 'escolha'.");
440
+ var caminhos = [];
441
+ var caminhoPadrao = null;
442
+ while (!this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CHAVE_DIREITA) &&
443
+ !this.estaNoFinal()) {
444
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CASO)) {
445
+ var branchConditions = [this.expressao()];
446
+ this.consumir(tipos_de_simbolos_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
447
+ while (this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CASO)) {
448
+ this.consumir(tipos_de_simbolos_1.default.CASO, null);
449
+ branchConditions.push(this.expressao());
450
+ this.consumir(tipos_de_simbolos_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
451
+ }
452
+ var declaracoes = [];
453
+ do {
454
+ declaracoes.push(this.resolverDeclaracao());
455
+ } while (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CASO) &&
456
+ !this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PADRAO) &&
457
+ !this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CHAVE_DIREITA));
458
+ caminhos.push({
459
+ conditions: branchConditions,
460
+ declaracoes: declaracoes,
461
+ });
462
+ }
463
+ else if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PADRAO)) {
464
+ if (caminhoPadrao !== null) {
465
+ var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
466
+ this.erros.push(excecao);
467
+ throw excecao;
468
+ }
469
+ this.consumir(tipos_de_simbolos_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
470
+ var declaracoes = [];
471
+ do {
472
+ declaracoes.push(this.resolverDeclaracao());
473
+ } while (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CASO) &&
474
+ !this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PADRAO) &&
475
+ !this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CHAVE_DIREITA));
476
+ caminhoPadrao = {
477
+ declaracoes: declaracoes,
478
+ };
479
+ }
480
+ }
481
+ return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
482
+ }
483
+ finally {
484
+ this.ciclos -= 1;
485
+ }
486
+ };
487
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoImportar = function () {
488
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
489
+ var caminho = this.expressao();
490
+ var simboloFechamento = this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
491
+ return new declaracoes_1.Importar(caminho, simboloFechamento);
492
+ };
493
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoTente = function () {
494
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'tente'.");
495
+ var tryBlock = this.blocoEscopo();
496
+ var catchBlock = null;
497
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PEGUE)) {
498
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
499
+ catchBlock = this.blocoEscopo();
500
+ }
501
+ var elseBlock = null;
502
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.SENÃO)) {
503
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
504
+ elseBlock = this.blocoEscopo();
505
+ }
506
+ var finallyBlock = null;
507
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.FINALMENTE)) {
508
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
509
+ finallyBlock = this.blocoEscopo();
510
+ }
511
+ return new declaracoes_1.Tente(tryBlock, catchBlock, elseBlock, finallyBlock);
512
+ };
513
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoFazer = function () {
514
+ try {
515
+ this.ciclos += 1;
516
+ var caminhoFazer = this.resolverDeclaracao();
517
+ this.consumir(tipos_de_simbolos_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
518
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
519
+ var condicaoEnquanto = this.expressao();
520
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
521
+ return new declaracoes_1.Fazer(caminhoFazer, condicaoEnquanto);
522
+ }
523
+ finally {
524
+ this.ciclos -= 1;
525
+ }
526
+ };
527
+ AvaliadorSintaticoEguaClassico.prototype.resolverDeclaracao = function () {
528
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.FAZER))
529
+ return this.declaracaoFazer();
530
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.TENTE))
531
+ return this.declaracaoTente();
532
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.ESCOLHA))
533
+ return this.declaracaoEscolha();
534
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.RETORNA))
535
+ return this.declaracaoRetorna();
536
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CONTINUA))
537
+ return this.declaracaoContinua();
538
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PAUSA))
539
+ return this.declaracaoSustar();
540
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.PARA))
541
+ return this.declaracaoPara();
542
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.ENQUANTO))
543
+ return this.declaracaoEnquanto();
544
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.SE))
545
+ return this.declaracaoSe();
546
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.ESCREVA))
547
+ return this.declaracaoEscreva();
548
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CHAVE_ESQUERDA))
549
+ return new declaracoes_1.Bloco(this.blocoEscopo());
550
+ return this.declaracaoExpressao();
551
+ };
552
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoDeVariavel = function () {
553
+ var nome = this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
554
+ var inicializador = null;
555
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.IGUAL)) {
556
+ inicializador = this.expressao();
557
+ }
558
+ this.consumir(tipos_de_simbolos_1.default.PONTO_E_VIRGULA, "Esperado ';' após a declaração da variável.");
559
+ return new declaracoes_1.Var(nome, inicializador);
560
+ };
561
+ AvaliadorSintaticoEguaClassico.prototype.funcao = function (kind) {
562
+ var nome = this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, "Esperado nome ".concat(kind, "."));
563
+ return new declaracoes_1.Funcao(nome, this.corpoDaFuncao(kind));
564
+ };
565
+ AvaliadorSintaticoEguaClassico.prototype.corpoDaFuncao = function (kind) {
566
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' ap\u00F3s o nome ".concat(kind, "."));
567
+ var parametros = [];
568
+ if (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.PARENTESE_DIREITO)) {
569
+ do {
570
+ if (parametros.length >= 255) {
571
+ this.erro(this.simboloAtual(), 'Não pode haver mais de 255 parâmetros');
572
+ }
573
+ var paramObj = {};
574
+ if (this.simboloAtual().tipo === tipos_de_simbolos_1.default.MULTIPLICACAO) {
575
+ this.consumir(tipos_de_simbolos_1.default.MULTIPLICACAO, null);
576
+ paramObj['tipo'] = 'wildcard';
577
+ }
578
+ else {
579
+ paramObj['tipo'] = 'standard';
580
+ }
581
+ paramObj['nome'] = this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
582
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.IGUAL)) {
583
+ paramObj['default'] = this.primario();
584
+ }
585
+ parametros.push(paramObj);
586
+ if (paramObj['tipo'] === 'wildcard')
587
+ break;
588
+ } while (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.VIRGULA));
589
+ }
590
+ this.consumir(tipos_de_simbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
591
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do ".concat(kind, "."));
592
+ var corpo = this.blocoEscopo();
593
+ return new construtos_1.Funcao(0, parametros, corpo);
594
+ };
595
+ AvaliadorSintaticoEguaClassico.prototype.declaracaoDeClasse = function () {
596
+ var nome = this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
597
+ var superClasse = null;
598
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.HERDA)) {
599
+ this.consumir(tipos_de_simbolos_1.default.IDENTIFICADOR, 'Esperado nome da SuperClasse.');
600
+ superClasse = new construtos_1.Variavel(this.simboloAnterior());
601
+ }
602
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
603
+ var metodos = [];
604
+ while (!this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.CHAVE_DIREITA) &&
605
+ !this.estaNoFinal()) {
606
+ metodos.push(this.funcao('método'));
607
+ }
608
+ this.consumir(tipos_de_simbolos_1.default.CHAVE_DIREITA, "Esperado '}' após o escopo da classe.");
609
+ return new declaracoes_1.Classe(nome, superClasse, metodos);
610
+ };
611
+ AvaliadorSintaticoEguaClassico.prototype.declaracao = function () {
612
+ try {
613
+ if (this.verificarTipoSimboloAtual(tipos_de_simbolos_1.default.FUNÇÃO) &&
614
+ this.verificarTipoProximoSimbolo(tipos_de_simbolos_1.default.IDENTIFICADOR)) {
615
+ this.consumir(tipos_de_simbolos_1.default.FUNÇÃO, null);
616
+ return this.funcao('função');
617
+ }
618
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.VARIAVEL))
619
+ return this.declaracaoDeVariavel();
620
+ if (this.verificarSeSimboloAtualEIgualA(tipos_de_simbolos_1.default.CLASSE))
621
+ return this.declaracaoDeClasse();
622
+ return this.resolverDeclaracao();
623
+ }
624
+ catch (erro) {
625
+ this.sincronizar();
626
+ return null;
627
+ }
628
+ };
629
+ AvaliadorSintaticoEguaClassico.prototype.analisar = function (simbolos) {
630
+ this.erros = [];
631
+ this.atual = 0;
632
+ this.ciclos = 0;
633
+ this.simbolos = simbolos || [];
634
+ var declaracoes = [];
635
+ while (!this.estaNoFinal()) {
636
+ declaracoes.push(this.declaracao());
637
+ }
638
+ return {
639
+ declaracoes: declaracoes,
640
+ erros: this.erros
641
+ };
642
+ };
643
+ return AvaliadorSintaticoEguaClassico;
644
+ }());
645
+ exports.AvaliadorSintaticoEguaClassico = AvaliadorSintaticoEguaClassico;
646
+ //# sourceMappingURL=egua-classico.js.map