@designliquido/delegua 0.2.0 → 0.2.3

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