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