@designliquido/delegua 0.9.2 → 0.9.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 (244) hide show
  1. package/bin/delegua +1 -1
  2. package/bin/delegua.cmd +1 -1
  3. package/bin/package.json +3 -3
  4. package/coverage/lcov-report/sorter.js +4 -4
  5. package/coverage/lcov-report/sorter.js.map +1 -1
  6. package/execucao.d.ts +1 -0
  7. package/execucao.js +29 -0
  8. package/execucao.js.map +1 -0
  9. package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -1
  10. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +108 -105
  11. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  12. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +1 -1
  13. package/fontes/avaliador-sintatico/avaliador-sintatico.js +244 -256
  14. package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  15. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.d.ts +20 -0
  16. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +68 -0
  17. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -0
  18. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +1 -1
  19. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +227 -236
  20. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  21. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.d.ts +1 -1
  22. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +247 -257
  23. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js.map +1 -1
  24. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.d.ts +3 -0
  25. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +192 -131
  26. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +1 -1
  27. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js +6 -24
  28. package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -1
  29. package/fontes/bibliotecas/biblioteca-global.js +206 -367
  30. package/fontes/bibliotecas/biblioteca-global.js.map +1 -1
  31. package/fontes/bibliotecas/importar-biblioteca.js +28 -29
  32. package/fontes/bibliotecas/importar-biblioteca.js.map +1 -1
  33. package/fontes/bibliotecas/primitivas-texto.js +9 -22
  34. package/fontes/bibliotecas/primitivas-texto.js.map +1 -1
  35. package/fontes/bibliotecas/primitivas-vetor.js +12 -14
  36. package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
  37. package/fontes/construtos/acesso-indice-variavel.js +6 -50
  38. package/fontes/construtos/acesso-indice-variavel.js.map +1 -1
  39. package/fontes/construtos/acesso-metodo.js +6 -50
  40. package/fontes/construtos/acesso-metodo.js.map +1 -1
  41. package/fontes/construtos/agrupamento.js +6 -50
  42. package/fontes/construtos/agrupamento.js.map +1 -1
  43. package/fontes/construtos/atribuicao-sobrescrita.js +6 -50
  44. package/fontes/construtos/atribuicao-sobrescrita.js.map +1 -1
  45. package/fontes/construtos/atribuir.js +6 -50
  46. package/fontes/construtos/atribuir.js.map +1 -1
  47. package/fontes/construtos/binario.js +6 -50
  48. package/fontes/construtos/binario.js.map +1 -1
  49. package/fontes/construtos/chamada.js +6 -50
  50. package/fontes/construtos/chamada.js.map +1 -1
  51. package/fontes/construtos/definir-valor.js +6 -50
  52. package/fontes/construtos/definir-valor.js.map +1 -1
  53. package/fontes/construtos/dicionario.js +6 -50
  54. package/fontes/construtos/dicionario.js.map +1 -1
  55. package/fontes/construtos/funcao.d.ts +2 -2
  56. package/fontes/construtos/funcao.js +6 -47
  57. package/fontes/construtos/funcao.js.map +1 -1
  58. package/fontes/construtos/isto.js +6 -47
  59. package/fontes/construtos/isto.js.map +1 -1
  60. package/fontes/construtos/literal.js +6 -47
  61. package/fontes/construtos/literal.js.map +1 -1
  62. package/fontes/construtos/logico.js +6 -50
  63. package/fontes/construtos/logico.js.map +1 -1
  64. package/fontes/construtos/super.js +6 -47
  65. package/fontes/construtos/super.js.map +1 -1
  66. package/fontes/construtos/unario.js +6 -50
  67. package/fontes/construtos/unario.js.map +1 -1
  68. package/fontes/construtos/variavel.js +6 -47
  69. package/fontes/construtos/variavel.js.map +1 -1
  70. package/fontes/construtos/vetor.js +6 -50
  71. package/fontes/construtos/vetor.js.map +1 -1
  72. package/fontes/declaracoes/bloco.js +9 -70
  73. package/fontes/declaracoes/bloco.js.map +1 -1
  74. package/fontes/declaracoes/classe.js +11 -72
  75. package/fontes/declaracoes/classe.js.map +1 -1
  76. package/fontes/declaracoes/continua.js +8 -65
  77. package/fontes/declaracoes/continua.js.map +1 -1
  78. package/fontes/declaracoes/declaracao.js +6 -47
  79. package/fontes/declaracoes/declaracao.js.map +1 -1
  80. package/fontes/declaracoes/enquanto.js +10 -71
  81. package/fontes/declaracoes/enquanto.js.map +1 -1
  82. package/fontes/declaracoes/escolha.js +11 -72
  83. package/fontes/declaracoes/escolha.js.map +1 -1
  84. package/fontes/declaracoes/escreva.js +9 -70
  85. package/fontes/declaracoes/escreva.js.map +1 -1
  86. package/fontes/declaracoes/expressao.js +9 -70
  87. package/fontes/declaracoes/expressao.js.map +1 -1
  88. package/fontes/declaracoes/fazer.js +10 -71
  89. package/fontes/declaracoes/fazer.js.map +1 -1
  90. package/fontes/declaracoes/funcao.js +10 -68
  91. package/fontes/declaracoes/funcao.js.map +1 -1
  92. package/fontes/declaracoes/importar.js +10 -71
  93. package/fontes/declaracoes/importar.js.map +1 -1
  94. package/fontes/declaracoes/leia.js +9 -70
  95. package/fontes/declaracoes/leia.js.map +1 -1
  96. package/fontes/declaracoes/para.js +12 -73
  97. package/fontes/declaracoes/para.js.map +1 -1
  98. package/fontes/declaracoes/retorna.js +10 -71
  99. package/fontes/declaracoes/retorna.js.map +1 -1
  100. package/fontes/declaracoes/se.js +12 -73
  101. package/fontes/declaracoes/se.js.map +1 -1
  102. package/fontes/declaracoes/sustar.js +8 -65
  103. package/fontes/declaracoes/sustar.js.map +1 -1
  104. package/fontes/declaracoes/tente.js +12 -73
  105. package/fontes/declaracoes/tente.js.map +1 -1
  106. package/fontes/declaracoes/var.js +10 -71
  107. package/fontes/declaracoes/var.js.map +1 -1
  108. package/fontes/delegua.js +125 -206
  109. package/fontes/delegua.js.map +1 -1
  110. package/fontes/depuracao/cyrb53.js +3 -4
  111. package/fontes/depuracao/cyrb53.js.map +1 -1
  112. package/fontes/depuracao/servidor-depuracao.js +125 -209
  113. package/fontes/depuracao/servidor-depuracao.js.map +1 -1
  114. package/fontes/espaco-variaveis.js +3 -4
  115. package/fontes/espaco-variaveis.js.map +1 -1
  116. package/fontes/estruturas/chamavel.js +6 -9
  117. package/fontes/estruturas/chamavel.js.map +1 -1
  118. package/fontes/estruturas/classe-padrao.js +17 -35
  119. package/fontes/estruturas/classe-padrao.js.map +1 -1
  120. package/fontes/estruturas/delegua-classe.d.ts +2 -2
  121. package/fontes/estruturas/delegua-classe.js +21 -39
  122. package/fontes/estruturas/delegua-classe.js.map +1 -1
  123. package/fontes/estruturas/delegua-funcao.js +48 -114
  124. package/fontes/estruturas/delegua-funcao.js.map +1 -1
  125. package/fontes/estruturas/funcao-padrao.js +13 -75
  126. package/fontes/estruturas/funcao-padrao.js.map +1 -1
  127. package/fontes/estruturas/metodo-primitiva.js +11 -39
  128. package/fontes/estruturas/metodo-primitiva.js.map +1 -1
  129. package/fontes/estruturas/modulo.js +6 -7
  130. package/fontes/estruturas/modulo.js.map +1 -1
  131. package/fontes/estruturas/objeto-delegua-classe.d.ts +3 -3
  132. package/fontes/estruturas/objeto-delegua-classe.js +12 -13
  133. package/fontes/estruturas/objeto-delegua-classe.js.map +1 -1
  134. package/fontes/estruturas/objeto-padrao.js +9 -11
  135. package/fontes/estruturas/objeto-padrao.js.map +1 -1
  136. package/fontes/excecoes/erro-em-tempo-de-execucao.js +8 -26
  137. package/fontes/excecoes/erro-em-tempo-de-execucao.js.map +1 -1
  138. package/fontes/importador/importador.js +21 -22
  139. package/fontes/importador/importador.js.map +1 -1
  140. package/fontes/interfaces/avaliador-sintatico-interface.d.ts +1 -1
  141. package/fontes/interfaces/parametro-interface.d.ts +1 -1
  142. package/fontes/interpretador/dialetos/egua-classico.js +592 -1019
  143. package/fontes/interpretador/dialetos/egua-classico.js.map +1 -1
  144. package/fontes/interpretador/inferenciador.js +1 -1
  145. package/fontes/interpretador/inferenciador.js.map +1 -1
  146. package/fontes/interpretador/interpretador-com-depuracao.js +186 -336
  147. package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
  148. package/fontes/interpretador/interpretador.js +706 -1175
  149. package/fontes/interpretador/interpretador.js.map +1 -1
  150. package/fontes/interpretador/pilha-escopos-execucao.js +52 -57
  151. package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
  152. package/fontes/lexador/dialetos/lexador-birl.d.ts +6 -19
  153. package/fontes/lexador/dialetos/lexador-birl.js +157 -49
  154. package/fontes/lexador/dialetos/lexador-birl.js.map +1 -1
  155. package/fontes/lexador/dialetos/lexador-egua-classico.js +43 -46
  156. package/fontes/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  157. package/fontes/lexador/dialetos/lexador-eguap.js +59 -63
  158. package/fontes/lexador/dialetos/lexador-eguap.js.map +1 -1
  159. package/fontes/lexador/dialetos/lexador-visualg.js +45 -54
  160. package/fontes/lexador/dialetos/lexador-visualg.js.map +1 -1
  161. package/fontes/lexador/dialetos/palavras-reservadas/birl.d.ts +14 -1
  162. package/fontes/lexador/dialetos/palavras-reservadas/birl.js +18 -1
  163. package/fontes/lexador/dialetos/palavras-reservadas/birl.js.map +1 -1
  164. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js +1 -1
  165. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js.map +1 -1
  166. package/fontes/lexador/dialetos/palavras-reservadas/visualg.d.ts +24 -0
  167. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +25 -1
  168. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js.map +1 -1
  169. package/fontes/lexador/lexador-base-linha-unica.d.ts +1 -1
  170. package/fontes/lexador/lexador-base-linha-unica.js +28 -29
  171. package/fontes/lexador/lexador-base-linha-unica.js.map +1 -1
  172. package/fontes/lexador/lexador.js +53 -57
  173. package/fontes/lexador/lexador.js.map +1 -1
  174. package/fontes/lexador/palavras-reservadas.js +1 -1
  175. package/fontes/lexador/palavras-reservadas.js.map +1 -1
  176. package/fontes/lexador/simbolo.js +5 -6
  177. package/fontes/lexador/simbolo.js.map +1 -1
  178. package/fontes/quebras/index.js +11 -42
  179. package/fontes/quebras/index.js.map +1 -1
  180. package/fontes/resolvedor/dialetos/egua-classico.js +143 -144
  181. package/fontes/resolvedor/dialetos/egua-classico.js.map +1 -1
  182. package/fontes/resolvedor/erro-resolvedor.js +6 -24
  183. package/fontes/resolvedor/erro-resolvedor.js.map +1 -1
  184. package/fontes/resolvedor/pilha-escopos.js +11 -12
  185. package/fontes/resolvedor/pilha-escopos.js.map +1 -1
  186. package/fontes/tipos-de-simbolos/birl.d.ts +7 -0
  187. package/fontes/tipos-de-simbolos/birl.js +20 -12
  188. package/fontes/tipos-de-simbolos/birl.js.map +1 -1
  189. package/fontes/tipos-de-simbolos/comum.d.ts +2 -0
  190. package/fontes/tipos-de-simbolos/comum.js +2 -0
  191. package/fontes/tipos-de-simbolos/comum.js.map +1 -1
  192. package/fontes/tipos-de-simbolos/visualg.d.ts +9 -0
  193. package/fontes/tipos-de-simbolos/visualg.js +9 -0
  194. package/fontes/tipos-de-simbolos/visualg.js.map +1 -1
  195. package/index.d.ts +5 -1
  196. package/index.js +18 -25
  197. package/index.js.map +1 -1
  198. package/jest.config.js +9 -47
  199. package/jest.config.js.map +1 -1
  200. package/package.json +3 -3
  201. package/testes/__mocks__/estatistica.js +1 -1
  202. package/testes/__mocks__/estatistica.js.map +1 -1
  203. package/testes/__mocks__/fisica.js +1 -1
  204. package/testes/__mocks__/fisica.js.map +1 -1
  205. package/testes/__mocks__/matematica.js +1 -1
  206. package/testes/__mocks__/matematica.js.map +1 -1
  207. package/testes/avaliador-sintatico.test.js +27 -27
  208. package/testes/avaliador-sintatico.test.js.map +1 -1
  209. package/testes/biblioteca-global.test.js +197 -440
  210. package/testes/biblioteca-global.test.js.map +1 -1
  211. package/testes/birl/avaliador-sintatico.test.d.ts +1 -0
  212. package/testes/birl/avaliador-sintatico.test.js +18 -0
  213. package/testes/birl/avaliador-sintatico.test.js.map +1 -0
  214. package/testes/birl/lexador.test.d.ts +1 -0
  215. package/testes/birl/lexador.test.js +31 -0
  216. package/testes/birl/lexador.test.js.map +1 -0
  217. package/testes/delegua.test.js +7 -7
  218. package/testes/delegua.test.js.map +1 -1
  219. package/testes/egua-classico/avaliador-sintatico.test.js +14 -14
  220. package/testes/egua-classico/avaliador-sintatico.test.js.map +1 -1
  221. package/testes/egua-classico/delegua.test.js +5 -5
  222. package/testes/egua-classico/delegua.test.js.map +1 -1
  223. package/testes/egua-classico/interpretador.test.js +180 -396
  224. package/testes/egua-classico/interpretador.test.js.map +1 -1
  225. package/testes/egua-classico/lexador.test.js +23 -23
  226. package/testes/egua-classico/lexador.test.js.map +1 -1
  227. package/testes/egua-classico/resolvedor.test.js +12 -12
  228. package/testes/egua-classico/resolvedor.test.js.map +1 -1
  229. package/testes/eguap/avaliador-sintatico.test.js +11 -11
  230. package/testes/eguap/avaliador-sintatico.test.js.map +1 -1
  231. package/testes/eguap/interpretador.test.js +189 -405
  232. package/testes/eguap/interpretador.test.js.map +1 -1
  233. package/testes/eguap/lexador.test.js +18 -18
  234. package/testes/eguap/lexador.test.js.map +1 -1
  235. package/testes/interpretador.test.js +431 -908
  236. package/testes/interpretador.test.js.map +1 -1
  237. package/testes/lexador.test.js +42 -42
  238. package/testes/lexador.test.js.map +1 -1
  239. package/testes/visualg/avaliador-sintatico.test.js +23 -23
  240. package/testes/visualg/avaliador-sintatico.test.js.map +1 -1
  241. package/testes/visualg/interpretador.test.js +16 -61
  242. package/testes/visualg/interpretador.test.js.map +1 -1
  243. package/testes/visualg/lexador.test.js +15 -15
  244. package/testes/visualg/lexador.test.js.map +1 -1
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AvaliadorSintaticoEguaP = void 0;
7
- var browser_process_hrtime_1 = __importDefault(require("browser-process-hrtime"));
8
- var construtos_1 = require("../../construtos");
9
- var declaracoes_1 = require("../../declaracoes");
10
- var eguap_1 = __importDefault(require("../../tipos-de-simbolos/eguap"));
11
- var erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
7
+ const browser_process_hrtime_1 = __importDefault(require("browser-process-hrtime"));
8
+ const construtos_1 = require("../../construtos");
9
+ const declaracoes_1 = require("../../declaracoes");
10
+ const eguap_1 = __importDefault(require("../../tipos-de-simbolos/eguap"));
11
+ const erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
12
12
  /**
13
13
  * O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
14
14
  * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
@@ -17,15 +17,14 @@ var erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
17
17
  * A grande diferença entre este avaliador e os demais é a forma como são entendidos os blocos de escopo.
18
18
  * Este avaliador espera uma estrutura de pragmas, que explica quantos espaços há na frente de cada linha.
19
19
  */
20
- var AvaliadorSintaticoEguaP = /** @class */ (function () {
21
- function AvaliadorSintaticoEguaP(performance) {
22
- if (performance === void 0) { performance = false; }
20
+ class AvaliadorSintaticoEguaP {
21
+ constructor(performance = false) {
23
22
  this.atual = 0;
24
- this.ciclos = 0;
23
+ this.blocos = 0;
25
24
  this.performance = performance;
26
25
  this.escopos = [];
27
26
  }
28
- AvaliadorSintaticoEguaP.prototype.sincronizar = function () {
27
+ sincronizar() {
29
28
  this.avancarEDevolverAnterior();
30
29
  while (!this.estaNoFinal()) {
31
30
  switch (this.simboloAtual().tipo) {
@@ -42,90 +41,85 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
42
41
  }
43
42
  this.avancarEDevolverAnterior();
44
43
  }
45
- };
46
- AvaliadorSintaticoEguaP.prototype.erro = function (simbolo, mensagemDeErro) {
47
- var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
44
+ }
45
+ erro(simbolo, mensagemDeErro) {
46
+ const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
48
47
  this.erros.push(excecao);
49
48
  return excecao;
50
- };
51
- AvaliadorSintaticoEguaP.prototype.consumir = function (tipo, mensagemDeErro) {
49
+ }
50
+ consumir(tipo, mensagemDeErro) {
52
51
  if (this.verificarTipoSimboloAtual(tipo))
53
52
  return this.avancarEDevolverAnterior();
54
53
  throw this.erro(this.simboloAtual(), mensagemDeErro);
55
- };
56
- AvaliadorSintaticoEguaP.prototype.verificarTipoSimboloAtual = function (tipo) {
54
+ }
55
+ verificarTipoSimboloAtual(tipo) {
57
56
  if (this.estaNoFinal())
58
57
  return false;
59
58
  return this.simboloAtual().tipo === tipo;
60
- };
61
- AvaliadorSintaticoEguaP.prototype.verificarTipoProximoSimbolo = function (tipo) {
59
+ }
60
+ verificarTipoProximoSimbolo(tipo) {
62
61
  if (this.estaNoFinal())
63
62
  return false;
64
63
  return this.simbolos[this.atual + 1].tipo === tipo;
65
- };
66
- AvaliadorSintaticoEguaP.prototype.simboloAtual = function () {
64
+ }
65
+ simboloAtual() {
67
66
  return this.simbolos[this.atual];
68
- };
69
- AvaliadorSintaticoEguaP.prototype.simboloAnterior = function () {
67
+ }
68
+ simboloAnterior() {
70
69
  return this.simbolos[this.atual - 1];
71
- };
72
- AvaliadorSintaticoEguaP.prototype.simboloNaPosicao = function (posicao) {
70
+ }
71
+ simboloNaPosicao(posicao) {
73
72
  return this.simbolos[this.atual + posicao];
74
- };
75
- AvaliadorSintaticoEguaP.prototype.estaNoFinal = function () {
73
+ }
74
+ estaNoFinal() {
76
75
  return this.atual >= this.simbolos.length;
77
- };
78
- AvaliadorSintaticoEguaP.prototype.avancarEDevolverAnterior = function () {
76
+ }
77
+ avancarEDevolverAnterior() {
79
78
  if (!this.estaNoFinal())
80
79
  this.atual += 1;
81
80
  return this.simboloAnterior();
82
- };
83
- AvaliadorSintaticoEguaP.prototype.verificarSeSimboloAtualEIgualA = function () {
84
- var argumentos = [];
85
- for (var _i = 0; _i < arguments.length; _i++) {
86
- argumentos[_i] = arguments[_i];
87
- }
88
- for (var i = 0; i < argumentos.length; i++) {
89
- var tipoAtual = argumentos[i];
81
+ }
82
+ verificarSeSimboloAtualEIgualA(...argumentos) {
83
+ for (let i = 0; i < argumentos.length; i++) {
84
+ const tipoAtual = argumentos[i];
90
85
  if (this.verificarTipoSimboloAtual(tipoAtual)) {
91
86
  this.avancarEDevolverAnterior();
92
87
  return true;
93
88
  }
94
89
  }
95
90
  return false;
96
- };
97
- AvaliadorSintaticoEguaP.prototype.primario = function () {
91
+ }
92
+ primario() {
98
93
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.SUPER)) {
99
- var simboloChave = this.simboloAnterior();
94
+ const simboloChave = this.simboloAnterior();
100
95
  this.consumir(eguap_1.default.PONTO, "Esperado '.' após 'super'.");
101
- var metodo = this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome do método da SuperClasse.');
96
+ const metodo = this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome do método da SuperClasse.');
102
97
  return new construtos_1.Super(this.hashArquivo, simboloChave, metodo);
103
98
  }
104
99
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.COLCHETE_ESQUERDO)) {
105
- var valores = [];
100
+ const valores = [];
106
101
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.COLCHETE_DIREITO)) {
107
102
  return new construtos_1.Vetor(this.hashArquivo, 0, []);
108
103
  }
109
104
  while (!this.verificarSeSimboloAtualEIgualA(eguap_1.default.COLCHETE_DIREITO)) {
110
- var valor = this.atribuir();
105
+ const valor = this.atribuir();
111
106
  valores.push(valor);
112
- if (this.simboloAtual().tipo !==
113
- eguap_1.default.COLCHETE_DIREITO) {
107
+ if (this.simboloAtual().tipo !== eguap_1.default.COLCHETE_DIREITO) {
114
108
  this.consumir(eguap_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
115
109
  }
116
110
  }
117
111
  return new construtos_1.Vetor(this.hashArquivo, 0, valores);
118
112
  }
119
113
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.CHAVE_ESQUERDA)) {
120
- var chaves = [];
121
- var valores = [];
114
+ const chaves = [];
115
+ const valores = [];
122
116
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.CHAVE_DIREITA)) {
123
117
  return new construtos_1.Dicionario(this.hashArquivo, 0, [], []);
124
118
  }
125
119
  while (!this.verificarSeSimboloAtualEIgualA(eguap_1.default.CHAVE_DIREITA)) {
126
- var chave = this.atribuir();
120
+ const chave = this.atribuir();
127
121
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
128
- var valor = this.atribuir();
122
+ const valor = this.atribuir();
129
123
  chaves.push(chave);
130
124
  valores.push(valor);
131
125
  if (this.simboloAtual().tipo !== eguap_1.default.CHAVE_DIREITA) {
@@ -143,23 +137,23 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
143
137
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.ISTO))
144
138
  return new construtos_1.Isto(this.hashArquivo, 0, this.simboloAnterior());
145
139
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.NUMERO, eguap_1.default.TEXTO)) {
146
- var simboloAnterior = this.simboloAnterior();
140
+ const simboloAnterior = this.simboloAnterior();
147
141
  return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
148
142
  }
149
143
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.IDENTIFICADOR)) {
150
144
  return new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
151
145
  }
152
146
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.PARENTESE_ESQUERDO)) {
153
- var expressao = this.expressao();
147
+ const expressao = this.expressao();
154
148
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
155
149
  return new construtos_1.Agrupamento(this.hashArquivo, 0, expressao);
156
150
  }
157
151
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.IMPORTAR))
158
152
  return this.declaracaoImportar();
159
153
  throw this.erro(this.simboloAtual(), 'Esperado expressão.');
160
- };
161
- AvaliadorSintaticoEguaP.prototype.finalizarChamada = function (entidadeChamada) {
162
- var argumentos = [];
154
+ }
155
+ finalizarChamada(entidadeChamada) {
156
+ const argumentos = [];
163
157
  if (!this.verificarTipoSimboloAtual(eguap_1.default.PARENTESE_DIREITO)) {
164
158
  do {
165
159
  if (argumentos.length >= 255) {
@@ -168,22 +162,22 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
168
162
  argumentos.push(this.expressao());
169
163
  } while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.VIRGULA));
170
164
  }
171
- var parenteseDireito = this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
165
+ const parenteseDireito = this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
172
166
  return new construtos_1.Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos);
173
- };
174
- AvaliadorSintaticoEguaP.prototype.chamar = function () {
175
- var expressao = this.primario();
167
+ }
168
+ chamar() {
169
+ let expressao = this.primario();
176
170
  while (true) {
177
171
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.PARENTESE_ESQUERDO)) {
178
172
  expressao = this.finalizarChamada(expressao);
179
173
  }
180
174
  else if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.PONTO)) {
181
- var nome = this.consumir(eguap_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
175
+ const nome = this.consumir(eguap_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
182
176
  expressao = new construtos_1.AcessoMetodo(this.hashArquivo, expressao, nome);
183
177
  }
184
178
  else if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.COLCHETE_ESQUERDO)) {
185
- var indice = this.expressao();
186
- var simboloFechamento = this.consumir(eguap_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
179
+ const indice = this.expressao();
180
+ const simboloFechamento = this.consumir(eguap_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
187
181
  expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
188
182
  }
189
183
  else {
@@ -191,122 +185,122 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
191
185
  }
192
186
  }
193
187
  return expressao;
194
- };
195
- AvaliadorSintaticoEguaP.prototype.unario = function () {
188
+ }
189
+ unario() {
196
190
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.NEGACAO, eguap_1.default.SUBTRACAO, eguap_1.default.BIT_NOT)) {
197
- var operador = this.simboloAnterior();
198
- var direito = this.unario();
191
+ const operador = this.simboloAnterior();
192
+ const direito = this.unario();
199
193
  return new construtos_1.Unario(this.hashArquivo, operador, direito);
200
194
  }
201
195
  return this.chamar();
202
- };
203
- AvaliadorSintaticoEguaP.prototype.exponenciacao = function () {
204
- var expressao = this.unario();
196
+ }
197
+ exponenciacao() {
198
+ let expressao = this.unario();
205
199
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.EXPONENCIACAO)) {
206
- var operador = this.simboloAnterior();
207
- var direito = this.unario();
200
+ const operador = this.simboloAnterior();
201
+ const direito = this.unario();
208
202
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
209
203
  }
210
204
  return expressao;
211
- };
212
- AvaliadorSintaticoEguaP.prototype.multiplicar = function () {
213
- var expressao = this.exponenciacao();
205
+ }
206
+ multiplicar() {
207
+ let expressao = this.exponenciacao();
214
208
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.DIVISAO, eguap_1.default.MULTIPLICACAO, eguap_1.default.MODULO)) {
215
- var operador = this.simboloAnterior();
216
- var direito = this.exponenciacao();
209
+ const operador = this.simboloAnterior();
210
+ const direito = this.exponenciacao();
217
211
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
218
212
  }
219
213
  return expressao;
220
- };
221
- AvaliadorSintaticoEguaP.prototype.adicaoOuSubtracao = function () {
222
- var expressao = this.multiplicar();
214
+ }
215
+ adicaoOuSubtracao() {
216
+ let expressao = this.multiplicar();
223
217
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.SUBTRACAO, eguap_1.default.ADICAO)) {
224
- var operador = this.simboloAnterior();
225
- var direito = this.multiplicar();
218
+ const operador = this.simboloAnterior();
219
+ const direito = this.multiplicar();
226
220
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
227
221
  }
228
222
  return expressao;
229
- };
230
- AvaliadorSintaticoEguaP.prototype.bitFill = function () {
231
- var expressao = this.adicaoOuSubtracao();
223
+ }
224
+ bitFill() {
225
+ let expressao = this.adicaoOuSubtracao();
232
226
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.MENOR_MENOR, eguap_1.default.MAIOR_MAIOR)) {
233
- var operador = this.simboloAnterior();
234
- var direito = this.adicaoOuSubtracao();
227
+ const operador = this.simboloAnterior();
228
+ const direito = this.adicaoOuSubtracao();
235
229
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
236
230
  }
237
231
  return expressao;
238
- };
239
- AvaliadorSintaticoEguaP.prototype.bitE = function () {
240
- var expressao = this.bitFill();
232
+ }
233
+ bitE() {
234
+ let expressao = this.bitFill();
241
235
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.BIT_AND)) {
242
- var operador = this.simboloAnterior();
243
- var direito = this.bitFill();
236
+ const operador = this.simboloAnterior();
237
+ const direito = this.bitFill();
244
238
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
245
239
  }
246
240
  return expressao;
247
- };
248
- AvaliadorSintaticoEguaP.prototype.bitOu = function () {
249
- var expressao = this.bitE();
241
+ }
242
+ bitOu() {
243
+ let expressao = this.bitE();
250
244
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.BIT_OR, eguap_1.default.BIT_XOR)) {
251
- var operador = this.simboloAnterior();
252
- var direito = this.bitE();
245
+ const operador = this.simboloAnterior();
246
+ const direito = this.bitE();
253
247
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
254
248
  }
255
249
  return expressao;
256
- };
257
- AvaliadorSintaticoEguaP.prototype.comparar = function () {
258
- var expressao = this.bitOu();
250
+ }
251
+ comparar() {
252
+ let expressao = this.bitOu();
259
253
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.MAIOR, eguap_1.default.MAIOR_IGUAL, eguap_1.default.MENOR, eguap_1.default.MENOR_IGUAL)) {
260
- var operador = this.simboloAnterior();
261
- var direito = this.bitOu();
254
+ const operador = this.simboloAnterior();
255
+ const direito = this.bitOu();
262
256
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
263
257
  }
264
258
  return expressao;
265
- };
266
- AvaliadorSintaticoEguaP.prototype.comparacaoIgualdade = function () {
267
- var expressao = this.comparar();
259
+ }
260
+ comparacaoIgualdade() {
261
+ let expressao = this.comparar();
268
262
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.DIFERENTE, eguap_1.default.IGUAL_IGUAL)) {
269
- var operador = this.simboloAnterior();
270
- var direito = this.comparar();
263
+ const operador = this.simboloAnterior();
264
+ const direito = this.comparar();
271
265
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
272
266
  }
273
267
  return expressao;
274
- };
275
- AvaliadorSintaticoEguaP.prototype.em = function () {
276
- var expressao = this.comparacaoIgualdade();
268
+ }
269
+ em() {
270
+ let expressao = this.comparacaoIgualdade();
277
271
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.EM)) {
278
- var operador = this.simboloAnterior();
279
- var direito = this.comparacaoIgualdade();
272
+ const operador = this.simboloAnterior();
273
+ const direito = this.comparacaoIgualdade();
280
274
  expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
281
275
  }
282
276
  return expressao;
283
- };
284
- AvaliadorSintaticoEguaP.prototype.e = function () {
285
- var expressao = this.em();
277
+ }
278
+ e() {
279
+ let expressao = this.em();
286
280
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.E)) {
287
- var operador = this.simboloAnterior();
288
- var direito = this.em();
281
+ const operador = this.simboloAnterior();
282
+ const direito = this.em();
289
283
  expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
290
284
  }
291
285
  return expressao;
292
- };
293
- AvaliadorSintaticoEguaP.prototype.ou = function () {
294
- var expressao = this.e();
286
+ }
287
+ ou() {
288
+ let expressao = this.e();
295
289
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.OU)) {
296
- var operador = this.simboloAnterior();
297
- var direito = this.e();
290
+ const operador = this.simboloAnterior();
291
+ const direito = this.e();
298
292
  expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
299
293
  }
300
294
  return expressao;
301
- };
302
- AvaliadorSintaticoEguaP.prototype.atribuir = function () {
303
- var expressao = this.ou();
295
+ }
296
+ atribuir() {
297
+ const expressao = this.ou();
304
298
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.IGUAL) ||
305
299
  this.verificarSeSimboloAtualEIgualA(eguap_1.default.MAIS_IGUAL)) {
306
- var igual = this.simboloAnterior();
307
- var valor = this.atribuir();
300
+ const igual = this.simboloAnterior();
301
+ const valor = this.atribuir();
308
302
  if (expressao instanceof construtos_1.Variavel) {
309
- var simbolo = expressao.simbolo;
303
+ const simbolo = expressao.simbolo;
310
304
  return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
311
305
  }
312
306
  else if (expressao instanceof construtos_1.AcessoMetodo) {
@@ -318,40 +312,40 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
318
312
  this.erro(igual, 'Tarefa de atribuição inválida');
319
313
  }
320
314
  return expressao;
321
- };
322
- AvaliadorSintaticoEguaP.prototype.expressao = function () {
315
+ }
316
+ expressao() {
323
317
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.LEIA))
324
318
  return this.declaracaoLeia();
325
319
  return this.atribuir();
326
- };
327
- AvaliadorSintaticoEguaP.prototype.declaracaoEscreva = function () {
328
- var simboloAtual = this.simboloAtual();
320
+ }
321
+ declaracaoEscreva() {
322
+ const simboloAtual = this.simboloAtual();
329
323
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
330
- var argumentos = [];
324
+ const argumentos = [];
331
325
  do {
332
326
  argumentos.push(this.expressao());
333
327
  } while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.VIRGULA));
334
328
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
335
329
  return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, argumentos);
336
- };
337
- AvaliadorSintaticoEguaP.prototype.declaracaoExpressao = function () {
338
- var expressao = this.expressao();
330
+ }
331
+ declaracaoExpressao() {
332
+ const expressao = this.expressao();
339
333
  return new declaracoes_1.Expressao(expressao);
340
- };
341
- AvaliadorSintaticoEguaP.prototype.declaracaoLeia = function () {
342
- var simboloAtual = this.simbolos[this.atual];
334
+ }
335
+ declaracaoLeia() {
336
+ const simboloAtual = this.simbolos[this.atual];
343
337
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em leia.");
344
- var argumentos = [];
338
+ const argumentos = [];
345
339
  do {
346
340
  argumentos.push(this.expressao());
347
341
  } while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.VIRGULA));
348
342
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em leia.");
349
343
  return new declaracoes_1.Leia(simboloAtual.hashArquivo, Number(simboloAtual.linha), argumentos);
350
- };
351
- AvaliadorSintaticoEguaP.prototype.blocoEscopo = function () {
352
- var declaracoes = [];
353
- var simboloAtual = this.simboloAtual();
354
- var simboloAnterior = this.simboloAnterior();
344
+ }
345
+ blocoEscopo() {
346
+ const declaracoes = [];
347
+ let simboloAtual = this.simboloAtual();
348
+ const simboloAnterior = this.simboloAnterior();
355
349
  // Situação 1: não tem bloco de escopo.
356
350
  //
357
351
  // Exemplo: `se verdadeiro: escreva('Alguma coisa')`.
@@ -365,12 +359,12 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
365
359
  // Verifica-se o número de espaços à esquerda da linha através dos pragmas.
366
360
  // Se número de espaços da linha do símbolo atual é menor ou igual ao número de espaços
367
361
  // da linha anterior, e bloco ainda não começou, é uma situação de erro.
368
- var espacosIndentacaoLinhaAtual = this.pragmas[simboloAtual.linha].espacosIndentacao;
369
- var espacosIndentacaoLinhaAnterior = this.pragmas[simboloAnterior.linha].espacosIndentacao;
362
+ let espacosIndentacaoLinhaAtual = this.pragmas[simboloAtual.linha].espacosIndentacao;
363
+ const espacosIndentacaoLinhaAnterior = this.pragmas[simboloAnterior.linha].espacosIndentacao;
370
364
  if (espacosIndentacaoLinhaAtual <= espacosIndentacaoLinhaAnterior) {
371
- this.erro(simboloAtual, "Indenta\u00E7\u00E3o inconsistente na linha ".concat(simboloAtual.linha, ". ") +
372
- "Esperado: >= ".concat(espacosIndentacaoLinhaAnterior, ". ") +
373
- "Atual: ".concat(espacosIndentacaoLinhaAtual));
365
+ this.erro(simboloAtual, `Indentação inconsistente na linha ${simboloAtual.linha}. ` +
366
+ `Esperado: >= ${espacosIndentacaoLinhaAnterior}. ` +
367
+ `Atual: ${espacosIndentacaoLinhaAtual}`);
374
368
  }
375
369
  else {
376
370
  // Indentação ok, é um bloco de escopo.
@@ -378,30 +372,29 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
378
372
  // de indentação do bloco.
379
373
  // Se `simboloAtual` for definido em algum momento como indefinido,
380
374
  // Significa que o código acabou, então o bloco também acabou.
381
- var espacosIndentacaoBloco = espacosIndentacaoLinhaAtual;
375
+ const espacosIndentacaoBloco = espacosIndentacaoLinhaAtual;
382
376
  while (espacosIndentacaoLinhaAtual === espacosIndentacaoBloco) {
383
377
  declaracoes.push(this.declaracao());
384
378
  simboloAtual = this.simboloAtual();
385
379
  if (!simboloAtual)
386
380
  break;
387
- espacosIndentacaoLinhaAtual =
388
- this.pragmas[simboloAtual.linha].espacosIndentacao;
381
+ espacosIndentacaoLinhaAtual = this.pragmas[simboloAtual.linha].espacosIndentacao;
389
382
  }
390
383
  }
391
384
  }
392
385
  return declaracoes;
393
- };
394
- AvaliadorSintaticoEguaP.prototype.declaracaoSe = function () {
386
+ }
387
+ declaracaoSe() {
395
388
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
396
- var condicao = this.expressao();
389
+ const condicao = this.expressao();
397
390
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
398
- var caminhoEntao = this.resolverDeclaracao();
399
- var caminhosSeSenao = [];
391
+ const caminhoEntao = this.resolverDeclaracao();
392
+ const caminhosSeSenao = [];
400
393
  while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.SENAOSE, eguap_1.default.SENÃOSE)) {
401
394
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'senaose' ou 'senãose'.");
402
- var condicaoSeSenao = this.expressao();
395
+ const condicaoSeSenao = this.expressao();
403
396
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após codição do 'senaose' ou 'senãose'.");
404
- var caminho = this.resolverDeclaracao();
397
+ const caminho = this.resolverDeclaracao();
405
398
  caminhosSeSenao.push({
406
399
  condicao: condicaoSeSenao,
407
400
  caminho: caminho,
@@ -412,31 +405,31 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
412
405
  /* if (this.escopos.length > 0) {
413
406
  this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.ESPACO_INDENTACAO);
414
407
  } */
415
- var caminhoSenao = null;
408
+ let caminhoSenao = null;
416
409
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.SENAO, eguap_1.default.SENÃO)) {
417
410
  caminhoSenao = this.resolverDeclaracao();
418
411
  }
419
412
  return new declaracoes_1.Se(condicao, caminhoEntao, caminhosSeSenao, caminhoSenao);
420
- };
421
- AvaliadorSintaticoEguaP.prototype.declaracaoEnquanto = function () {
413
+ }
414
+ declaracaoEnquanto() {
422
415
  try {
423
- this.ciclos += 1;
416
+ this.blocos += 1;
424
417
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
425
- var condicao = this.expressao();
418
+ const condicao = this.expressao();
426
419
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após condicional.");
427
- var corpo = this.resolverDeclaracao();
420
+ const corpo = this.resolverDeclaracao();
428
421
  return new declaracoes_1.Enquanto(condicao, corpo);
429
422
  }
430
423
  finally {
431
- this.ciclos -= 1;
424
+ this.blocos -= 1;
432
425
  }
433
- };
434
- AvaliadorSintaticoEguaP.prototype.declaracaoPara = function () {
426
+ }
427
+ declaracaoPara() {
435
428
  try {
436
- var simboloPara = this.simboloAnterior();
437
- this.ciclos += 1;
429
+ const simboloPara = this.simboloAnterior();
430
+ this.blocos += 1;
438
431
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
439
- var inicializador = void 0;
432
+ let inicializador;
440
433
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.PONTO_E_VIRGULA)) {
441
434
  inicializador = null;
442
435
  }
@@ -446,63 +439,62 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
446
439
  else {
447
440
  inicializador = this.declaracaoExpressao();
448
441
  }
449
- var condicao = null;
442
+ let condicao = null;
450
443
  if (!this.verificarTipoSimboloAtual(eguap_1.default.PONTO_E_VIRGULA)) {
451
444
  condicao = this.expressao();
452
445
  }
453
- var incrementar = null;
446
+ let incrementar = null;
454
447
  if (!this.verificarTipoSimboloAtual(eguap_1.default.PARENTESE_DIREITO)) {
455
448
  incrementar = this.expressao();
456
449
  }
457
450
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
458
- var corpo = this.resolverDeclaracao();
451
+ const corpo = this.resolverDeclaracao();
459
452
  return new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
460
453
  }
461
454
  catch (erro) {
462
455
  throw erro;
463
456
  }
464
457
  finally {
465
- this.ciclos -= 1;
458
+ this.blocos -= 1;
466
459
  }
467
- };
468
- AvaliadorSintaticoEguaP.prototype.declaracaoSustar = function () {
469
- if (this.ciclos < 1) {
460
+ }
461
+ declaracaoSustar() {
462
+ if (this.blocos < 1) {
470
463
  this.erro(this.simboloAnterior(), "'sustar' deve estar dentro de um laço de repetição.");
471
464
  }
472
465
  return new declaracoes_1.Sustar(this.simboloAtual());
473
- };
474
- AvaliadorSintaticoEguaP.prototype.declaracaoContinua = function () {
475
- if (this.ciclos < 1) {
466
+ }
467
+ declaracaoContinua() {
468
+ if (this.blocos < 1) {
476
469
  this.erro(this.simboloAnterior(), "'continua' precisa estar em um laço de repetição.");
477
470
  }
478
471
  return new declaracoes_1.Continua(this.simboloAtual());
479
- };
480
- AvaliadorSintaticoEguaP.prototype.declaracaoRetorna = function () {
481
- var palavraChave = this.simboloAnterior();
482
- var valor = null;
472
+ }
473
+ declaracaoRetorna() {
474
+ const palavraChave = this.simboloAnterior();
475
+ let valor = null;
483
476
  if (!this.verificarTipoSimboloAtual(eguap_1.default.PONTO_E_VIRGULA)) {
484
477
  valor = this.expressao();
485
478
  }
486
479
  return new declaracoes_1.Retorna(palavraChave, valor);
487
- };
488
- AvaliadorSintaticoEguaP.prototype.declaracaoEscolha = function () {
480
+ }
481
+ declaracaoEscolha() {
489
482
  try {
490
- this.ciclos += 1;
483
+ this.blocos += 1;
491
484
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após 'escolha'.");
492
- var condicao = this.expressao();
493
- var caminhos = [];
494
- var caminhoPadrao = null;
495
- while (!this.verificarSeSimboloAtualEIgualA(eguap_1.default.CHAVE_DIREITA) &&
496
- !this.estaNoFinal()) {
485
+ const condicao = this.expressao();
486
+ const caminhos = [];
487
+ let caminhoPadrao = null;
488
+ while (!this.verificarSeSimboloAtualEIgualA(eguap_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
497
489
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.CASO)) {
498
- var caminhoCondicoes = [this.expressao()];
490
+ const caminhoCondicoes = [this.expressao()];
499
491
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
500
492
  while (this.verificarTipoSimboloAtual(eguap_1.default.CASO)) {
501
493
  this.consumir(eguap_1.default.CASO, null);
502
494
  caminhoCondicoes.push(this.expressao());
503
495
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
504
496
  }
505
- var declaracoes = [];
497
+ const declaracoes = [];
506
498
  do {
507
499
  declaracoes.push(this.resolverDeclaracao());
508
500
  } while (!this.verificarTipoSimboloAtual(eguap_1.default.CASO) &&
@@ -510,76 +502,76 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
510
502
  !this.verificarTipoSimboloAtual(eguap_1.default.CHAVE_DIREITA));
511
503
  caminhos.push({
512
504
  condicoes: caminhoCondicoes,
513
- declaracoes: declaracoes,
505
+ declaracoes,
514
506
  });
515
507
  }
516
508
  else if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.PADRAO)) {
517
509
  if (caminhoPadrao !== null) {
518
- var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
510
+ const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
519
511
  this.erros.push(excecao);
520
512
  throw excecao;
521
513
  }
522
514
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
523
- var declaracoes = [];
515
+ const declaracoes = [];
524
516
  do {
525
517
  declaracoes.push(this.resolverDeclaracao());
526
518
  } while (!this.verificarTipoSimboloAtual(eguap_1.default.CASO) &&
527
519
  !this.verificarTipoSimboloAtual(eguap_1.default.PADRAO) &&
528
520
  !this.verificarTipoSimboloAtual(eguap_1.default.CHAVE_DIREITA));
529
521
  caminhoPadrao = {
530
- declaracoes: declaracoes,
522
+ declaracoes,
531
523
  };
532
524
  }
533
525
  }
534
526
  return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
535
527
  }
536
528
  finally {
537
- this.ciclos -= 1;
529
+ this.blocos -= 1;
538
530
  }
539
- };
540
- AvaliadorSintaticoEguaP.prototype.declaracaoImportar = function () {
531
+ }
532
+ declaracaoImportar() {
541
533
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
542
- var caminho = this.expressao();
543
- var simboloFechamento = this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
534
+ const caminho = this.expressao();
535
+ const simboloFechamento = this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
544
536
  return new declaracoes_1.Importar(caminho, simboloFechamento);
545
- };
546
- AvaliadorSintaticoEguaP.prototype.declaracaoTente = function () {
547
- var simboloTente = this.simboloAnterior();
537
+ }
538
+ declaracaoTente() {
539
+ const simboloTente = this.simboloAnterior();
548
540
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após a declaração 'tente'.");
549
- var blocoTente = this.blocoEscopo();
550
- var blocoPegue = null;
541
+ const blocoTente = this.blocoEscopo();
542
+ let blocoPegue = null;
551
543
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.PEGUE)) {
552
544
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após a declaração 'pegue'.");
553
545
  blocoPegue = this.blocoEscopo();
554
546
  }
555
- var blocoSenao = null;
547
+ let blocoSenao = null;
556
548
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.SENAO, eguap_1.default.SENÃO)) {
557
549
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após a declaração 'pegue'.");
558
550
  blocoSenao = this.blocoEscopo();
559
551
  }
560
- var blocoFinalmente = null;
552
+ let blocoFinalmente = null;
561
553
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.FINALMENTE)) {
562
554
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' após a declaração 'pegue'.");
563
555
  blocoFinalmente = this.blocoEscopo();
564
556
  }
565
557
  return new declaracoes_1.Tente(simboloTente.hashArquivo, Number(simboloTente.linha), blocoTente, blocoPegue, blocoSenao, blocoFinalmente);
566
- };
567
- AvaliadorSintaticoEguaP.prototype.declaracaoFazer = function () {
568
- var simboloFazer = this.simboloAnterior();
558
+ }
559
+ declaracaoFazer() {
560
+ const simboloFazer = this.simboloAnterior();
569
561
  try {
570
- this.ciclos += 1;
571
- var caminhoFazer = this.resolverDeclaracao();
562
+ this.blocos += 1;
563
+ const caminhoFazer = this.resolverDeclaracao();
572
564
  this.consumir(eguap_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
573
565
  this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
574
- var condicaoEnquanto = this.expressao();
566
+ const condicaoEnquanto = this.expressao();
575
567
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
576
568
  return new declaracoes_1.Fazer(simboloFazer.hashArquivo, Number(simboloFazer.linha), caminhoFazer, condicaoEnquanto);
577
569
  }
578
570
  finally {
579
- this.ciclos -= 1;
571
+ this.blocos -= 1;
580
572
  }
581
- };
582
- AvaliadorSintaticoEguaP.prototype.resolverDeclaracao = function () {
573
+ }
574
+ resolverDeclaracao() {
583
575
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.FAZER))
584
576
  return this.declaracaoFazer();
585
577
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.TENTE))
@@ -602,31 +594,31 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
602
594
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.ESCREVA))
603
595
  return this.declaracaoEscreva();
604
596
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.DOIS_PONTOS)) {
605
- var simboloInicioBloco = this.simboloAnterior();
597
+ const simboloInicioBloco = this.simboloAnterior();
606
598
  return new declaracoes_1.Bloco(simboloInicioBloco.hashArquivo, Number(simboloInicioBloco.linha), this.blocoEscopo());
607
599
  }
608
600
  return this.declaracaoExpressao();
609
- };
610
- AvaliadorSintaticoEguaP.prototype.declaracaoDeVariavel = function () {
611
- var simbolo = this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
612
- var inicializador = null;
601
+ }
602
+ declaracaoDeVariavel() {
603
+ const simbolo = this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
604
+ let inicializador = null;
613
605
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.IGUAL) ||
614
606
  this.verificarSeSimboloAtualEIgualA(eguap_1.default.MAIS_IGUAL)) {
615
607
  inicializador = this.expressao();
616
608
  }
617
609
  return new declaracoes_1.Var(simbolo, inicializador);
618
- };
619
- AvaliadorSintaticoEguaP.prototype.funcao = function (tipo) {
620
- var simbolo = this.consumir(eguap_1.default.IDENTIFICADOR, "Esperado nome ".concat(tipo, "."));
610
+ }
611
+ funcao(tipo) {
612
+ const simbolo = this.consumir(eguap_1.default.IDENTIFICADOR, `Esperado nome ${tipo}.`);
621
613
  return new declaracoes_1.FuncaoDeclaracao(simbolo, this.corpoDaFuncao(tipo));
622
- };
623
- AvaliadorSintaticoEguaP.prototype.logicaComumParametros = function () {
624
- var parametros = [];
614
+ }
615
+ logicaComumParametros() {
616
+ const parametros = [];
625
617
  do {
626
618
  if (parametros.length >= 255) {
627
619
  this.erro(this.simboloAtual(), 'Não pode haver mais de 255 parâmetros');
628
620
  }
629
- var parametro = {};
621
+ const parametro = {};
630
622
  if (this.simboloAtual().tipo === eguap_1.default.MULTIPLICACAO) {
631
623
  this.consumir(eguap_1.default.MULTIPLICACAO, null);
632
624
  parametro['tipo'] = 'estrela';
@@ -643,39 +635,38 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
643
635
  break;
644
636
  } while (this.verificarSeSimboloAtualEIgualA(eguap_1.default.VIRGULA));
645
637
  return parametros;
646
- };
647
- AvaliadorSintaticoEguaP.prototype.corpoDaFuncao = function (tipo) {
648
- this.consumir(eguap_1.default.PARENTESE_ESQUERDO, "Esperado '(' ap\u00F3s o nome ".concat(tipo, "."));
649
- var parametros = [];
638
+ }
639
+ corpoDaFuncao(tipo) {
640
+ this.consumir(eguap_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${tipo}.`);
641
+ let parametros = [];
650
642
  if (!this.verificarTipoSimboloAtual(eguap_1.default.PARENTESE_DIREITO)) {
651
643
  parametros = this.logicaComumParametros();
652
644
  }
653
645
  this.consumir(eguap_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
654
- this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' antes do escopo do ".concat(tipo, "."));
655
- var corpo = this.blocoEscopo();
646
+ this.consumir(eguap_1.default.DOIS_PONTOS, `Esperado ':' antes do escopo do ${tipo}.`);
647
+ const corpo = this.blocoEscopo();
656
648
  return new construtos_1.FuncaoConstruto(this.hashArquivo, 0, parametros, corpo);
657
- };
658
- AvaliadorSintaticoEguaP.prototype.declaracaoDeClasse = function () {
659
- var simbolo = this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
660
- var superClasse = null;
649
+ }
650
+ declaracaoDeClasse() {
651
+ const simbolo = this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
652
+ let superClasse = null;
661
653
  if (this.verificarSeSimboloAtualEIgualA(eguap_1.default.HERDA)) {
662
654
  this.consumir(eguap_1.default.IDENTIFICADOR, 'Esperado nome da SuperClasse.');
663
655
  superClasse = new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
664
656
  }
665
657
  this.consumir(eguap_1.default.DOIS_PONTOS, "Esperado ':' antes do escopo da classe.");
666
- var metodos = [];
667
- while (!this.verificarTipoSimboloAtual(eguap_1.default.CHAVE_DIREITA) &&
668
- !this.estaNoFinal()) {
658
+ const metodos = [];
659
+ while (!this.verificarTipoSimboloAtual(eguap_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
669
660
  metodos.push(this.funcao('método'));
670
661
  }
671
662
  return new declaracoes_1.Classe(simbolo, superClasse, metodos);
672
- };
663
+ }
673
664
  /**
674
665
  * Consome o símbolo atual, verificando se é uma declaração de função, variável, classe
675
666
  * ou uma expressão.
676
667
  * @returns Objeto do tipo `Declaracao`.
677
668
  */
678
- AvaliadorSintaticoEguaP.prototype.declaracao = function () {
669
+ declaracao() {
679
670
  try {
680
671
  if ((this.verificarTipoSimboloAtual(eguap_1.default.FUNCAO) ||
681
672
  this.verificarTipoSimboloAtual(eguap_1.default.FUNÇÃO)) &&
@@ -693,30 +684,29 @@ var AvaliadorSintaticoEguaP = /** @class */ (function () {
693
684
  this.sincronizar();
694
685
  return null;
695
686
  }
696
- };
697
- AvaliadorSintaticoEguaP.prototype.analisar = function (retornoLexador, hashArquivo) {
698
- var inicioAnalise = (0, browser_process_hrtime_1.default)();
687
+ }
688
+ analisar(retornoLexador, hashArquivo) {
689
+ const inicioAnalise = (0, browser_process_hrtime_1.default)();
699
690
  this.erros = [];
700
691
  this.atual = 0;
701
- this.ciclos = 0;
692
+ this.blocos = 0;
702
693
  this.escopos = [];
703
694
  this.hashArquivo = hashArquivo || 0;
704
695
  this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
705
696
  this.pragmas = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.pragmas) || {};
706
- var declaracoes = [];
697
+ const declaracoes = [];
707
698
  while (!this.estaNoFinal()) {
708
699
  declaracoes.push(this.declaracao());
709
700
  }
710
701
  if (this.performance) {
711
- var deltaAnalise = (0, browser_process_hrtime_1.default)(inicioAnalise);
712
- console.log("[Avaliador Sint\u00E1tico] Tempo para an\u00E1lise: ".concat(deltaAnalise[0] * 1e9 + deltaAnalise[1], "ns"));
702
+ const deltaAnalise = (0, browser_process_hrtime_1.default)(inicioAnalise);
703
+ console.log(`[Avaliador Sintático] Tempo para análise: ${deltaAnalise[0] * 1e9 + deltaAnalise[1]}ns`);
713
704
  }
714
705
  return {
715
706
  declaracoes: declaracoes,
716
707
  erros: this.erros,
717
708
  };
718
- };
719
- return AvaliadorSintaticoEguaP;
720
- }());
709
+ }
710
+ }
721
711
  exports.AvaliadorSintaticoEguaP = AvaliadorSintaticoEguaP;
722
712
  //# sourceMappingURL=avaliador-sintatico-eguap.js.map