@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,24 +4,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AvaliadorSintaticoEguaClassico = void 0;
7
- var construtos_1 = require("../../construtos");
8
- var erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
9
- var declaracoes_1 = require("../../declaracoes");
10
- var egua_classico_1 = __importDefault(require("../../tipos-de-simbolos/egua-classico"));
7
+ const construtos_1 = require("../../construtos");
8
+ const erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
9
+ const declaracoes_1 = require("../../declaracoes");
10
+ const egua_classico_1 = __importDefault(require("../../tipos-de-simbolos/egua-classico"));
11
11
  /**
12
12
  * O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
13
13
  * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
14
14
  */
15
- var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
16
- function AvaliadorSintaticoEguaClassico(simbolos) {
15
+ class AvaliadorSintaticoEguaClassico {
16
+ constructor(simbolos) {
17
17
  this.simbolos = simbolos;
18
18
  this.atual = 0;
19
- this.ciclos = 0;
19
+ this.blocos = 0;
20
20
  }
21
- AvaliadorSintaticoEguaClassico.prototype.declaracaoLeia = function () {
21
+ declaracaoLeia() {
22
22
  throw new Error('Método não implementado.');
23
- };
24
- AvaliadorSintaticoEguaClassico.prototype.sincronizar = function () {
23
+ }
24
+ sincronizar() {
25
25
  this.avancarEDevolverAnterior();
26
26
  while (!this.estaNoFinal()) {
27
27
  if (this.simboloAnterior().tipo === egua_classico_1.default.PONTO_E_VIRGULA)
@@ -39,91 +39,86 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
39
39
  }
40
40
  this.avancarEDevolverAnterior();
41
41
  }
42
- };
43
- AvaliadorSintaticoEguaClassico.prototype.erro = function (simbolo, mensagemDeErro) {
44
- var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
42
+ }
43
+ erro(simbolo, mensagemDeErro) {
44
+ const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
45
45
  this.erros.push(excecao);
46
46
  return excecao;
47
- };
48
- AvaliadorSintaticoEguaClassico.prototype.consumir = function (tipo, mensagemDeErro) {
47
+ }
48
+ consumir(tipo, mensagemDeErro) {
49
49
  if (this.verificarTipoSimboloAtual(tipo))
50
50
  return this.avancarEDevolverAnterior();
51
51
  else
52
52
  throw this.erro(this.simboloAtual(), mensagemDeErro);
53
- };
54
- AvaliadorSintaticoEguaClassico.prototype.verificarTipoSimboloAtual = function (tipo) {
53
+ }
54
+ verificarTipoSimboloAtual(tipo) {
55
55
  if (this.estaNoFinal())
56
56
  return false;
57
57
  return this.simboloAtual().tipo === tipo;
58
- };
59
- AvaliadorSintaticoEguaClassico.prototype.verificarTipoProximoSimbolo = function (tipo) {
58
+ }
59
+ verificarTipoProximoSimbolo(tipo) {
60
60
  if (this.estaNoFinal())
61
61
  return false;
62
62
  return this.simbolos[this.atual + 1].tipo === tipo;
63
- };
64
- AvaliadorSintaticoEguaClassico.prototype.simboloAtual = function () {
63
+ }
64
+ simboloAtual() {
65
65
  return this.simbolos[this.atual];
66
- };
67
- AvaliadorSintaticoEguaClassico.prototype.simboloAnterior = function () {
66
+ }
67
+ simboloAnterior() {
68
68
  return this.simbolos[this.atual - 1];
69
- };
70
- AvaliadorSintaticoEguaClassico.prototype.simboloNaPosicao = function (posicao) {
69
+ }
70
+ simboloNaPosicao(posicao) {
71
71
  return this.simbolos[this.atual + posicao];
72
- };
73
- AvaliadorSintaticoEguaClassico.prototype.estaNoFinal = function () {
72
+ }
73
+ estaNoFinal() {
74
74
  return this.simboloAtual().tipo === egua_classico_1.default.EOF;
75
- };
76
- AvaliadorSintaticoEguaClassico.prototype.avancarEDevolverAnterior = function () {
75
+ }
76
+ avancarEDevolverAnterior() {
77
77
  if (!this.estaNoFinal())
78
78
  this.atual += 1;
79
79
  return this.simboloAnterior();
80
- };
81
- AvaliadorSintaticoEguaClassico.prototype.verificarSeSimboloAtualEIgualA = function () {
82
- var argumentos = [];
83
- for (var _i = 0; _i < arguments.length; _i++) {
84
- argumentos[_i] = arguments[_i];
85
- }
86
- for (var i = 0; i < argumentos.length; i++) {
87
- var tipoAtual = argumentos[i];
80
+ }
81
+ verificarSeSimboloAtualEIgualA(...argumentos) {
82
+ for (let i = 0; i < argumentos.length; i++) {
83
+ const tipoAtual = argumentos[i];
88
84
  if (this.verificarTipoSimboloAtual(tipoAtual)) {
89
85
  this.avancarEDevolverAnterior();
90
86
  return true;
91
87
  }
92
88
  }
93
89
  return false;
94
- };
95
- AvaliadorSintaticoEguaClassico.prototype.primario = function () {
90
+ }
91
+ primario() {
96
92
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SUPER)) {
97
- var simboloChave = this.simboloAnterior();
93
+ const simboloChave = this.simboloAnterior();
98
94
  this.consumir(egua_classico_1.default.PONTO, "Esperado '.' após 'super'.");
99
- var metodo = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome do método da SuperClasse.');
95
+ const metodo = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome do método da SuperClasse.');
100
96
  return new construtos_1.Super(this.hashArquivo, simboloChave, metodo);
101
97
  }
102
98
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_ESQUERDO)) {
103
- var valores = [];
99
+ const valores = [];
104
100
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_DIREITO)) {
105
101
  return new construtos_1.Vetor(this.hashArquivo, 0, []);
106
102
  }
107
103
  while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.COLCHETE_DIREITO)) {
108
- var valor = this.atribuir();
104
+ const valor = this.atribuir();
109
105
  valores.push(valor);
110
- if (this.simboloAtual().tipo !==
111
- egua_classico_1.default.COLCHETE_DIREITO) {
106
+ if (this.simboloAtual().tipo !== egua_classico_1.default.COLCHETE_DIREITO) {
112
107
  this.consumir(egua_classico_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
113
108
  }
114
109
  }
115
110
  return new construtos_1.Vetor(this.hashArquivo, 0, valores);
116
111
  }
117
112
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_ESQUERDA)) {
118
- var chaves = [];
119
- var valores = [];
113
+ const chaves = [];
114
+ const valores = [];
120
115
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA)) {
121
116
  return new construtos_1.Dicionario(this.hashArquivo, 0, [], []);
122
117
  }
123
118
  while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA)) {
124
- var chave = this.atribuir();
119
+ const chave = this.atribuir();
125
120
  this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
126
- var valor = this.atribuir();
121
+ const valor = this.atribuir();
127
122
  chaves.push(chave);
128
123
  valores.push(valor);
129
124
  if (this.simboloAtual().tipo !== egua_classico_1.default.CHAVE_DIREITA) {
@@ -149,16 +144,16 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
149
144
  return new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
150
145
  }
151
146
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PARENTESE_ESQUERDO)) {
152
- var expressao = this.expressao();
147
+ const expressao = this.expressao();
153
148
  this.consumir(egua_classico_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(egua_classico_1.default.IMPORTAR))
157
152
  return this.declaracaoImportar();
158
153
  throw this.erro(this.simboloAtual(), 'Esperado expressão.');
159
- };
160
- AvaliadorSintaticoEguaClassico.prototype.finalizarChamada = function (entidadeChamada) {
161
- var argumentos = [];
154
+ }
155
+ finalizarChamada(entidadeChamada) {
156
+ const argumentos = [];
162
157
  if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
163
158
  do {
164
159
  if (argumentos.length >= 255) {
@@ -167,22 +162,22 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
167
162
  argumentos.push(this.expressao());
168
163
  } while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VIRGULA));
169
164
  }
170
- var parenteseDireito = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
165
+ const parenteseDireito = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
171
166
  return new construtos_1.Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos);
172
- };
173
- AvaliadorSintaticoEguaClassico.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(egua_classico_1.default.PARENTESE_ESQUERDO)) {
177
172
  expressao = this.finalizarChamada(expressao);
178
173
  }
179
174
  else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PONTO)) {
180
- var nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
175
+ const nome = this.consumir(egua_classico_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(egua_classico_1.default.COLCHETE_ESQUERDO)) {
184
- var indice = this.expressao();
185
- var simboloFechamento = this.consumir(egua_classico_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
179
+ const indice = this.expressao();
180
+ const simboloFechamento = this.consumir(egua_classico_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,125 +185,125 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
190
185
  }
191
186
  }
192
187
  return expressao;
193
- };
194
- AvaliadorSintaticoEguaClassico.prototype.unario = function () {
188
+ }
189
+ unario() {
195
190
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.NEGACAO, egua_classico_1.default.SUBTRACAO, egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.exponenciacao = function () {
203
- var expressao = this.unario();
196
+ }
197
+ exponenciacao() {
198
+ let expressao = this.unario();
204
199
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.multiplicar = function () {
212
- var expressao = this.exponenciacao();
205
+ }
206
+ multiplicar() {
207
+ let expressao = this.exponenciacao();
213
208
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.DIVISAO, egua_classico_1.default.MULTIPLICACAO, egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.adicionar = function () {
221
- var expressao = this.multiplicar();
214
+ }
215
+ adicionar() {
216
+ let expressao = this.multiplicar();
222
217
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SUBTRACAO, egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.bitFill = function () {
230
- var expressao = this.adicionar();
223
+ }
224
+ bitFill() {
225
+ let expressao = this.adicionar();
231
226
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.MENOR_MENOR, egua_classico_1.default.MAIOR_MAIOR)) {
232
- var operador = this.simboloAnterior();
233
- var direito = this.adicionar();
227
+ const operador = this.simboloAnterior();
228
+ const direito = this.adicionar();
234
229
  expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
235
230
  }
236
231
  return expressao;
237
- };
238
- AvaliadorSintaticoEguaClassico.prototype.bitE = function () {
239
- var expressao = this.bitFill();
232
+ }
233
+ bitE() {
234
+ let expressao = this.bitFill();
240
235
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.bitOu = function () {
248
- var expressao = this.bitE();
241
+ }
242
+ bitOu() {
243
+ let expressao = this.bitE();
249
244
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.BIT_OR, egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.comparar = function () {
257
- var expressao = this.bitOu();
250
+ }
251
+ comparar() {
252
+ let expressao = this.bitOu();
258
253
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.MAIOR, egua_classico_1.default.MAIOR_IGUAL, egua_classico_1.default.MENOR, egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.comparacaoIgualdade = function () {
266
- var expressao = this.comparar();
259
+ }
260
+ comparacaoIgualdade() {
261
+ let expressao = this.comparar();
267
262
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.DIFERENTE, egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.em = function () {
275
- var expressao = this.comparacaoIgualdade();
268
+ }
269
+ em() {
270
+ let expressao = this.comparacaoIgualdade();
276
271
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.e = function () {
284
- var expressao = this.em();
277
+ }
278
+ e() {
279
+ let expressao = this.em();
285
280
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.ou = function () {
293
- var expressao = this.e();
286
+ }
287
+ ou() {
288
+ let expressao = this.e();
294
289
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_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
- AvaliadorSintaticoEguaClassico.prototype.atribuir = function () {
302
- var expressao = this.ou();
295
+ }
296
+ atribuir() {
297
+ const expressao = this.ou();
303
298
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
304
- var igual = this.simboloAnterior();
305
- var valor = this.atribuir();
299
+ const igual = this.simboloAnterior();
300
+ const valor = this.atribuir();
306
301
  if (expressao instanceof construtos_1.Variavel) {
307
- var simbolo = expressao.simbolo;
302
+ const simbolo = expressao.simbolo;
308
303
  return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
309
304
  }
310
305
  else if (expressao instanceof construtos_1.AcessoMetodo) {
311
- var get = expressao;
306
+ const get = expressao;
312
307
  return new construtos_1.DefinirValor(this.hashArquivo, 0, get.objeto, get.simbolo, valor);
313
308
  }
314
309
  else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
@@ -317,73 +312,72 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
317
312
  this.erro(igual, 'Tarefa de atribuição inválida');
318
313
  }
319
314
  return expressao;
320
- };
321
- AvaliadorSintaticoEguaClassico.prototype.expressao = function () {
315
+ }
316
+ expressao() {
322
317
  return this.atribuir();
323
- };
324
- AvaliadorSintaticoEguaClassico.prototype.declaracaoEscreva = function () {
325
- var simboloAtual = this.simboloAtual();
318
+ }
319
+ declaracaoEscreva() {
320
+ const simboloAtual = this.simboloAtual();
326
321
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
327
- var valor = this.expressao();
322
+ const valor = this.expressao();
328
323
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
329
324
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após o valor.");
330
325
  return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, [valor]);
331
- };
332
- AvaliadorSintaticoEguaClassico.prototype.declaracaoExpressao = function () {
333
- var expressao = this.expressao();
326
+ }
327
+ declaracaoExpressao() {
328
+ const expressao = this.expressao();
334
329
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após expressão.");
335
330
  return new declaracoes_1.Expressao(expressao);
336
- };
337
- AvaliadorSintaticoEguaClassico.prototype.blocoEscopo = function () {
338
- var declaracoes = [];
339
- while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) &&
340
- !this.estaNoFinal()) {
331
+ }
332
+ blocoEscopo() {
333
+ const declaracoes = [];
334
+ while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
341
335
  declaracoes.push(this.declaracao());
342
336
  }
343
337
  this.consumir(egua_classico_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
344
338
  return declaracoes;
345
- };
346
- AvaliadorSintaticoEguaClassico.prototype.declaracaoSe = function () {
339
+ }
340
+ declaracaoSe() {
347
341
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
348
- var condicao = this.expressao();
342
+ const condicao = this.expressao();
349
343
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
350
- var caminhoEntao = this.resolverDeclaracao();
351
- var caminhosSeSenao = [];
344
+ const caminhoEntao = this.resolverDeclaracao();
345
+ const caminhosSeSenao = [];
352
346
  while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃOSE)) {
353
347
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'senãose'.");
354
- var condicaoSeSenao = this.expressao();
348
+ const condicaoSeSenao = this.expressao();
355
349
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' apóes codição do 'senãose.");
356
- var caminho = this.resolverDeclaracao();
350
+ const caminho = this.resolverDeclaracao();
357
351
  caminhosSeSenao.push({
358
352
  condicao: condicaoSeSenao,
359
353
  caminho: caminho,
360
354
  });
361
355
  }
362
- var caminhoSenao = null;
356
+ let caminhoSenao = null;
363
357
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃO)) {
364
358
  caminhoSenao = this.resolverDeclaracao();
365
359
  }
366
360
  return new declaracoes_1.Se(condicao, caminhoEntao, caminhosSeSenao, caminhoSenao);
367
- };
368
- AvaliadorSintaticoEguaClassico.prototype.declaracaoEnquanto = function () {
361
+ }
362
+ declaracaoEnquanto() {
369
363
  try {
370
- this.ciclos += 1;
364
+ this.blocos += 1;
371
365
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
372
- var condicao = this.expressao();
366
+ const condicao = this.expressao();
373
367
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após condicional.");
374
- var corpo = this.resolverDeclaracao();
368
+ const corpo = this.resolverDeclaracao();
375
369
  return new declaracoes_1.Enquanto(condicao, corpo);
376
370
  }
377
371
  finally {
378
- this.ciclos -= 1;
372
+ this.blocos -= 1;
379
373
  }
380
- };
381
- AvaliadorSintaticoEguaClassico.prototype.declaracaoPara = function () {
374
+ }
375
+ declaracaoPara() {
382
376
  try {
383
- var simboloPara = this.simboloAnterior();
384
- this.ciclos += 1;
377
+ const simboloPara = this.simboloAnterior();
378
+ this.blocos += 1;
385
379
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
386
- var inicializador = void 0;
380
+ let inicializador;
387
381
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PONTO_E_VIRGULA)) {
388
382
  inicializador = null;
389
383
  }
@@ -393,66 +387,65 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
393
387
  else {
394
388
  inicializador = this.declaracaoExpressao();
395
389
  }
396
- var condicao = null;
390
+ let condicao = null;
397
391
  if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PONTO_E_VIRGULA)) {
398
392
  condicao = this.expressao();
399
393
  }
400
394
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após valores da condicional");
401
- var incrementar = null;
395
+ let incrementar = null;
402
396
  if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
403
397
  incrementar = this.expressao();
404
398
  }
405
399
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
406
- var corpo = this.resolverDeclaracao();
400
+ const corpo = this.resolverDeclaracao();
407
401
  return new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
408
402
  }
409
403
  finally {
410
- this.ciclos -= 1;
404
+ this.blocos -= 1;
411
405
  }
412
- };
413
- AvaliadorSintaticoEguaClassico.prototype.declaracaoSustar = function () {
414
- if (this.ciclos < 1) {
406
+ }
407
+ declaracaoSustar() {
408
+ if (this.blocos < 1) {
415
409
  this.erro(this.simboloAnterior(), "'pausa' deve estar dentro de um loop.");
416
410
  }
417
411
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'pausa'.");
418
412
  return new declaracoes_1.Sustar(this.simboloAtual());
419
- };
420
- AvaliadorSintaticoEguaClassico.prototype.declaracaoContinua = function () {
421
- if (this.ciclos < 1) {
413
+ }
414
+ declaracaoContinua() {
415
+ if (this.blocos < 1) {
422
416
  this.erro(this.simboloAnterior(), "'continua' precisa estar em um laço de repetição.");
423
417
  }
424
418
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após 'continua'.");
425
419
  return new declaracoes_1.Continua(this.simboloAtual());
426
- };
427
- AvaliadorSintaticoEguaClassico.prototype.declaracaoRetorna = function () {
428
- var palavraChave = this.simboloAnterior();
429
- var valor = null;
420
+ }
421
+ declaracaoRetorna() {
422
+ const palavraChave = this.simboloAnterior();
423
+ let valor = null;
430
424
  if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PONTO_E_VIRGULA)) {
431
425
  valor = this.expressao();
432
426
  }
433
427
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após o retorno.");
434
428
  return new declaracoes_1.Retorna(palavraChave, valor);
435
- };
436
- AvaliadorSintaticoEguaClassico.prototype.declaracaoEscolha = function () {
429
+ }
430
+ declaracaoEscolha() {
437
431
  try {
438
- this.ciclos += 1;
432
+ this.blocos += 1;
439
433
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '{' após 'escolha'.");
440
- var condicao = this.expressao();
434
+ const condicao = this.expressao();
441
435
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado '}' após a condição de 'escolha'.");
442
436
  this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do 'escolha'.");
443
- var caminhos = [];
444
- var caminhoPadrao = null;
445
- while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA) &&
446
- !this.estaNoFinal()) {
437
+ const caminhos = [];
438
+ let caminhoPadrao = null;
439
+ while (!this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
447
440
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CASO)) {
448
- var caminhoCondicoes = [this.expressao()];
441
+ const caminhoCondicoes = [this.expressao()];
449
442
  this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
450
443
  while (this.verificarTipoSimboloAtual(egua_classico_1.default.CASO)) {
451
444
  this.consumir(egua_classico_1.default.CASO, null);
452
445
  caminhoCondicoes.push(this.expressao());
453
446
  this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
454
447
  }
455
- var declaracoes = [];
448
+ const declaracoes = [];
456
449
  do {
457
450
  declaracoes.push(this.resolverDeclaracao());
458
451
  } while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CASO) &&
@@ -460,37 +453,37 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
460
453
  !this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA));
461
454
  caminhos.push({
462
455
  condicoes: caminhoCondicoes,
463
- declaracoes: declaracoes,
456
+ declaracoes,
464
457
  });
465
458
  }
466
459
  else if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PADRAO)) {
467
460
  if (caminhoPadrao !== null) {
468
- var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
461
+ const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
469
462
  this.erros.push(excecao);
470
463
  throw excecao;
471
464
  }
472
465
  this.consumir(egua_classico_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
473
- var declaracoes = [];
466
+ const declaracoes = [];
474
467
  do {
475
468
  declaracoes.push(this.resolverDeclaracao());
476
469
  } while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CASO) &&
477
470
  !this.verificarTipoSimboloAtual(egua_classico_1.default.PADRAO) &&
478
471
  !this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA));
479
472
  caminhoPadrao = {
480
- declaracoes: declaracoes,
473
+ declaracoes,
481
474
  };
482
475
  }
483
476
  }
484
477
  return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
485
478
  }
486
479
  finally {
487
- this.ciclos -= 1;
480
+ this.blocos -= 1;
488
481
  }
489
- };
490
- AvaliadorSintaticoEguaClassico.prototype.declaracaoImportar = function () {
482
+ }
483
+ declaracaoImportar() {
491
484
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
492
- var caminho = this.expressao();
493
- var simboloFechamento = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
485
+ const caminho = this.expressao();
486
+ const simboloFechamento = this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
494
487
  // tive que fazer isso para poder tipar a func expressão
495
488
  // não sei isso e certo provavelmente não.
496
489
  // o parametro valor no tipo literal esta como any
@@ -498,42 +491,42 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
498
491
  // alguma ideia de qual tipo ele pode ser ?
499
492
  caminho.valor = null;
500
493
  return new declaracoes_1.Importar(caminho, simboloFechamento);
501
- };
502
- AvaliadorSintaticoEguaClassico.prototype.declaracaoTente = function () {
494
+ }
495
+ declaracaoTente() {
503
496
  this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'tente'.");
504
- var tryBlock = this.blocoEscopo();
505
- var catchBlock = null;
497
+ const tryBlock = this.blocoEscopo();
498
+ let catchBlock = null;
506
499
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.PEGUE)) {
507
500
  this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
508
501
  catchBlock = this.blocoEscopo();
509
502
  }
510
- var elseBlock = null;
503
+ let elseBlock = null;
511
504
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.SENÃO)) {
512
505
  this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
513
506
  elseBlock = this.blocoEscopo();
514
507
  }
515
- var finallyBlock = null;
508
+ let finallyBlock = null;
516
509
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FINALMENTE)) {
517
510
  this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
518
511
  finallyBlock = this.blocoEscopo();
519
512
  }
520
513
  return new declaracoes_1.Tente(0, 0, tryBlock, catchBlock, elseBlock, finallyBlock);
521
- };
522
- AvaliadorSintaticoEguaClassico.prototype.declaracaoFazer = function () {
514
+ }
515
+ declaracaoFazer() {
523
516
  try {
524
- this.ciclos += 1;
525
- var caminhoFazer = this.resolverDeclaracao();
517
+ this.blocos += 1;
518
+ const caminhoFazer = this.resolverDeclaracao();
526
519
  this.consumir(egua_classico_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
527
520
  this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
528
- var condicaoEnquanto = this.expressao();
521
+ const condicaoEnquanto = this.expressao();
529
522
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
530
523
  return new declaracoes_1.Fazer(0, 0, caminhoFazer, condicaoEnquanto);
531
524
  }
532
525
  finally {
533
- this.ciclos -= 1;
526
+ this.blocos -= 1;
534
527
  }
535
- };
536
- AvaliadorSintaticoEguaClassico.prototype.resolverDeclaracao = function () {
528
+ }
529
+ resolverDeclaracao() {
537
530
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.FAZER))
538
531
  return this.declaracaoFazer();
539
532
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.TENTE))
@@ -557,29 +550,29 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
557
550
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.CHAVE_ESQUERDA))
558
551
  return new declaracoes_1.Bloco(0, 0, this.blocoEscopo());
559
552
  return this.declaracaoExpressao();
560
- };
561
- AvaliadorSintaticoEguaClassico.prototype.declaracaoDeVariavel = function () {
562
- var nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
563
- var inicializador = null;
553
+ }
554
+ declaracaoDeVariavel() {
555
+ const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
556
+ let inicializador = null;
564
557
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.IGUAL)) {
565
558
  inicializador = this.expressao();
566
559
  }
567
560
  this.consumir(egua_classico_1.default.PONTO_E_VIRGULA, "Esperado ';' após a declaração da variável.");
568
561
  return new declaracoes_1.Var(nome, inicializador);
569
- };
570
- AvaliadorSintaticoEguaClassico.prototype.funcao = function (kind) {
571
- var nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, "Esperado nome ".concat(kind, "."));
562
+ }
563
+ funcao(kind) {
564
+ const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, `Esperado nome ${kind}.`);
572
565
  return new declaracoes_1.FuncaoDeclaracao(nome, this.corpoDaFuncao(kind));
573
- };
574
- AvaliadorSintaticoEguaClassico.prototype.corpoDaFuncao = function (kind) {
575
- this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, "Esperado '(' ap\u00F3s o nome ".concat(kind, "."));
576
- var parametros = [];
566
+ }
567
+ corpoDaFuncao(kind) {
568
+ this.consumir(egua_classico_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${kind}.`);
569
+ const parametros = [];
577
570
  if (!this.verificarTipoSimboloAtual(egua_classico_1.default.PARENTESE_DIREITO)) {
578
571
  do {
579
572
  if (parametros.length >= 255) {
580
573
  this.erro(this.simboloAtual(), 'Não pode haver mais de 255 parâmetros');
581
574
  }
582
- var parametro = {};
575
+ const parametro = {};
583
576
  if (this.simboloAtual().tipo === egua_classico_1.default.MULTIPLICACAO) {
584
577
  this.consumir(egua_classico_1.default.MULTIPLICACAO, null);
585
578
  parametro['tipo'] = 'estrela';
@@ -597,27 +590,26 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
597
590
  } while (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.VIRGULA));
598
591
  }
599
592
  this.consumir(egua_classico_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
600
- this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do ".concat(kind, "."));
601
- var corpo = this.blocoEscopo();
593
+ this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, `Esperado '{' antes do escopo do ${kind}.`);
594
+ const corpo = this.blocoEscopo();
602
595
  return new construtos_1.FuncaoConstruto(this.hashArquivo, 0, parametros, corpo);
603
- };
604
- AvaliadorSintaticoEguaClassico.prototype.declaracaoDeClasse = function () {
605
- var nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
606
- var superClasse = null;
596
+ }
597
+ declaracaoDeClasse() {
598
+ const nome = this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
599
+ let superClasse = null;
607
600
  if (this.verificarSeSimboloAtualEIgualA(egua_classico_1.default.HERDA)) {
608
601
  this.consumir(egua_classico_1.default.IDENTIFICADOR, 'Esperado nome da SuperClasse.');
609
602
  superClasse = new construtos_1.Variavel(this.hashArquivo, this.simboloAnterior());
610
603
  }
611
604
  this.consumir(egua_classico_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
612
- var metodos = [];
613
- while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) &&
614
- !this.estaNoFinal()) {
605
+ const metodos = [];
606
+ while (!this.verificarTipoSimboloAtual(egua_classico_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
615
607
  metodos.push(this.funcao('método'));
616
608
  }
617
609
  this.consumir(egua_classico_1.default.CHAVE_DIREITA, "Esperado '}' após o escopo da classe.");
618
610
  return new declaracoes_1.Classe(nome, superClasse, metodos);
619
- };
620
- AvaliadorSintaticoEguaClassico.prototype.declaracao = function () {
611
+ }
612
+ declaracao() {
621
613
  try {
622
614
  if (this.verificarTipoSimboloAtual(egua_classico_1.default.FUNÇÃO) &&
623
615
  this.verificarTipoProximoSimbolo(egua_classico_1.default.IDENTIFICADOR)) {
@@ -634,14 +626,14 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
634
626
  this.sincronizar();
635
627
  return null;
636
628
  }
637
- };
638
- AvaliadorSintaticoEguaClassico.prototype.analisar = function (retornoLexador, hashArquivo) {
629
+ }
630
+ analisar(retornoLexador, hashArquivo) {
639
631
  this.erros = [];
640
632
  this.atual = 0;
641
- this.ciclos = 0;
633
+ this.blocos = 0;
642
634
  this.hashArquivo = hashArquivo || 0;
643
635
  this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
644
- var declaracoes = [];
636
+ const declaracoes = [];
645
637
  while (!this.estaNoFinal()) {
646
638
  declaracoes.push(this.declaracao());
647
639
  }
@@ -649,8 +641,7 @@ var AvaliadorSintaticoEguaClassico = /** @class */ (function () {
649
641
  declaracoes: declaracoes,
650
642
  erros: this.erros,
651
643
  };
652
- };
653
- return AvaliadorSintaticoEguaClassico;
654
- }());
644
+ }
645
+ }
655
646
  exports.AvaliadorSintaticoEguaClassico = AvaliadorSintaticoEguaClassico;
656
647
  //# sourceMappingURL=avaliador-sintatico-egua-classico.js.map