@designliquido/delegua 0.8.1 → 0.9.0-0

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 (169) hide show
  1. package/bin/package.json +1 -1
  2. package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +2 -1
  3. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +3 -0
  4. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  5. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +2 -1
  6. package/fontes/avaliador-sintatico/avaliador-sintatico.js +14 -0
  7. package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  8. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +2 -1
  9. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +3 -0
  10. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.d.ts +2 -1
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +12 -0
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js.map +1 -1
  14. package/fontes/bibliotecas/biblioteca-global.js +351 -177
  15. package/fontes/bibliotecas/biblioteca-global.js.map +1 -1
  16. package/fontes/construtos/acesso-indice-variavel.d.ts +1 -1
  17. package/fontes/construtos/acesso-indice-variavel.js +41 -1
  18. package/fontes/construtos/acesso-indice-variavel.js.map +1 -1
  19. package/fontes/construtos/acesso-metodo.d.ts +1 -1
  20. package/fontes/construtos/acesso-metodo.js +41 -1
  21. package/fontes/construtos/acesso-metodo.js.map +1 -1
  22. package/fontes/construtos/agrupamento.d.ts +1 -1
  23. package/fontes/construtos/agrupamento.js +41 -1
  24. package/fontes/construtos/agrupamento.js.map +1 -1
  25. package/fontes/construtos/atribuicao-sobrescrita.d.ts +2 -1
  26. package/fontes/construtos/atribuicao-sobrescrita.js +41 -1
  27. package/fontes/construtos/atribuicao-sobrescrita.js.map +1 -1
  28. package/fontes/construtos/atribuir.d.ts +1 -1
  29. package/fontes/construtos/atribuir.js +41 -1
  30. package/fontes/construtos/atribuir.js.map +1 -1
  31. package/fontes/construtos/binario.d.ts +1 -1
  32. package/fontes/construtos/binario.js +41 -1
  33. package/fontes/construtos/binario.js.map +1 -1
  34. package/fontes/construtos/chamada.d.ts +1 -1
  35. package/fontes/construtos/chamada.js +41 -1
  36. package/fontes/construtos/chamada.js.map +1 -1
  37. package/fontes/construtos/conjunto.d.ts +2 -1
  38. package/fontes/construtos/conjunto.js +41 -1
  39. package/fontes/construtos/conjunto.js.map +1 -1
  40. package/fontes/construtos/construto.d.ts +1 -1
  41. package/fontes/construtos/dicionario.d.ts +2 -1
  42. package/fontes/construtos/dicionario.js +41 -1
  43. package/fontes/construtos/dicionario.js.map +1 -1
  44. package/fontes/construtos/funcao.d.ts +1 -1
  45. package/fontes/construtos/funcao.js +41 -1
  46. package/fontes/construtos/funcao.js.map +1 -1
  47. package/fontes/construtos/isto.d.ts +2 -1
  48. package/fontes/construtos/isto.js +41 -1
  49. package/fontes/construtos/isto.js.map +1 -1
  50. package/fontes/construtos/literal.d.ts +1 -1
  51. package/fontes/construtos/literal.js +41 -1
  52. package/fontes/construtos/literal.js.map +1 -1
  53. package/fontes/construtos/logico.d.ts +2 -1
  54. package/fontes/construtos/logico.js +41 -1
  55. package/fontes/construtos/logico.js.map +1 -1
  56. package/fontes/construtos/super.d.ts +2 -2
  57. package/fontes/construtos/super.js +41 -1
  58. package/fontes/construtos/super.js.map +1 -1
  59. package/fontes/construtos/unario.d.ts +2 -1
  60. package/fontes/construtos/unario.js +41 -1
  61. package/fontes/construtos/unario.js.map +1 -1
  62. package/fontes/construtos/variavel.d.ts +1 -1
  63. package/fontes/construtos/variavel.js +41 -1
  64. package/fontes/construtos/variavel.js.map +1 -1
  65. package/fontes/construtos/vetor.d.ts +2 -1
  66. package/fontes/construtos/vetor.js +41 -1
  67. package/fontes/construtos/vetor.js.map +1 -1
  68. package/fontes/declaracoes/bloco.d.ts +1 -1
  69. package/fontes/declaracoes/bloco.js +41 -1
  70. package/fontes/declaracoes/bloco.js.map +1 -1
  71. package/fontes/declaracoes/classe.d.ts +2 -2
  72. package/fontes/declaracoes/classe.js +41 -1
  73. package/fontes/declaracoes/classe.js.map +1 -1
  74. package/fontes/declaracoes/continua.d.ts +2 -2
  75. package/fontes/declaracoes/continua.js +41 -1
  76. package/fontes/declaracoes/continua.js.map +1 -1
  77. package/fontes/declaracoes/declaracao.d.ts +2 -1
  78. package/fontes/declaracoes/declaracao.js +41 -1
  79. package/fontes/declaracoes/declaracao.js.map +1 -1
  80. package/fontes/declaracoes/enquanto.d.ts +2 -1
  81. package/fontes/declaracoes/enquanto.js +41 -1
  82. package/fontes/declaracoes/enquanto.js.map +1 -1
  83. package/fontes/declaracoes/escolha.d.ts +2 -1
  84. package/fontes/declaracoes/escolha.js +41 -1
  85. package/fontes/declaracoes/escolha.js.map +1 -1
  86. package/fontes/declaracoes/escreva.d.ts +1 -1
  87. package/fontes/declaracoes/escreva.js +41 -1
  88. package/fontes/declaracoes/escreva.js.map +1 -1
  89. package/fontes/declaracoes/expressao.d.ts +1 -1
  90. package/fontes/declaracoes/expressao.js +41 -1
  91. package/fontes/declaracoes/expressao.js.map +1 -1
  92. package/fontes/declaracoes/fazer.d.ts +2 -1
  93. package/fontes/declaracoes/fazer.js +41 -1
  94. package/fontes/declaracoes/fazer.js.map +1 -1
  95. package/fontes/declaracoes/funcao.d.ts +1 -1
  96. package/fontes/declaracoes/funcao.js +41 -1
  97. package/fontes/declaracoes/funcao.js.map +1 -1
  98. package/fontes/declaracoes/importar.d.ts +2 -1
  99. package/fontes/declaracoes/importar.js +41 -1
  100. package/fontes/declaracoes/importar.js.map +1 -1
  101. package/fontes/declaracoes/leia.d.ts +1 -1
  102. package/fontes/declaracoes/leia.js +44 -1
  103. package/fontes/declaracoes/leia.js.map +1 -1
  104. package/fontes/declaracoes/para.d.ts +2 -1
  105. package/fontes/declaracoes/para.js +41 -1
  106. package/fontes/declaracoes/para.js.map +1 -1
  107. package/fontes/declaracoes/retorna.d.ts +1 -1
  108. package/fontes/declaracoes/retorna.js +41 -1
  109. package/fontes/declaracoes/retorna.js.map +1 -1
  110. package/fontes/declaracoes/se.d.ts +1 -1
  111. package/fontes/declaracoes/se.js +41 -1
  112. package/fontes/declaracoes/se.js.map +1 -1
  113. package/fontes/declaracoes/sustar.d.ts +1 -1
  114. package/fontes/declaracoes/sustar.js +41 -1
  115. package/fontes/declaracoes/sustar.js.map +1 -1
  116. package/fontes/declaracoes/tente.d.ts +1 -1
  117. package/fontes/declaracoes/tente.js +41 -1
  118. package/fontes/declaracoes/tente.js.map +1 -1
  119. package/fontes/declaracoes/var.d.ts +1 -1
  120. package/fontes/declaracoes/var.js +41 -1
  121. package/fontes/declaracoes/var.js.map +1 -1
  122. package/fontes/delegua.d.ts +3 -3
  123. package/fontes/delegua.js +136 -61
  124. package/fontes/delegua.js.map +1 -1
  125. package/fontes/depuracao/servidor-depuracao.d.ts +4 -4
  126. package/fontes/depuracao/servidor-depuracao.js +121 -47
  127. package/fontes/depuracao/servidor-depuracao.js.map +1 -1
  128. package/fontes/estruturas/funcao-padrao.d.ts +1 -1
  129. package/fontes/estruturas/funcao-padrao.js +46 -2
  130. package/fontes/estruturas/funcao-padrao.js.map +1 -1
  131. package/fontes/estruturas/funcao.d.ts +1 -1
  132. package/fontes/estruturas/funcao.js +74 -28
  133. package/fontes/estruturas/funcao.js.map +1 -1
  134. package/fontes/interfaces/avaliador-sintatico-interface.d.ts +5 -4
  135. package/fontes/interfaces/delegua-interface.d.ts +2 -2
  136. package/fontes/interfaces/interpretador-com-depuracao-interface.d.ts +3 -4
  137. package/fontes/interfaces/interpretador-interface.d.ts +6 -5
  138. package/fontes/interpretador/dialetos/egua-classico.d.ts +31 -30
  139. package/fontes/interpretador/dialetos/egua-classico.js +906 -470
  140. package/fontes/interpretador/dialetos/egua-classico.js.map +1 -1
  141. package/fontes/interpretador/interpretador-com-depuracao.d.ts +6 -6
  142. package/fontes/interpretador/interpretador-com-depuracao.js +280 -155
  143. package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
  144. package/fontes/interpretador/interpretador.d.ts +43 -34
  145. package/fontes/interpretador/interpretador.js +1045 -535
  146. package/fontes/interpretador/interpretador.js.map +1 -1
  147. package/fontes/lexador/lexador.js +2 -2
  148. package/fontes/lexador/lexador.js.map +1 -1
  149. package/fontes/lexador/palavras-reservadas.d.ts +22 -21
  150. package/fontes/lexador/palavras-reservadas.js +22 -21
  151. package/fontes/lexador/palavras-reservadas.js.map +1 -1
  152. package/fontes/resolvedor/dialetos/egua-classico.d.ts +25 -3
  153. package/fontes/resolvedor/dialetos/egua-classico.js +40 -0
  154. package/fontes/resolvedor/dialetos/egua-classico.js.map +1 -1
  155. package/fontes/tipos-de-simbolos/delegua.d.ts +2 -1
  156. package/fontes/tipos-de-simbolos/delegua.js +2 -1
  157. package/fontes/tipos-de-simbolos/delegua.js.map +1 -1
  158. package/fontes/tipos-de-simbolos/eguap.d.ts +1 -0
  159. package/fontes/tipos-de-simbolos/eguap.js +1 -0
  160. package/fontes/tipos-de-simbolos/eguap.js.map +1 -1
  161. package/package.json +1 -1
  162. package/testes/biblioteca-global.test.js +424 -181
  163. package/testes/biblioteca-global.test.js.map +1 -1
  164. package/testes/egua-classico/interpretador.test.js +379 -163
  165. package/testes/egua-classico/interpretador.test.js.map +1 -1
  166. package/testes/eguap/interpretador.test.js +388 -172
  167. package/testes/eguap/interpretador.test.js.map +1 -1
  168. package/testes/interpretador.test.js +876 -399
  169. package/testes/interpretador.test.js.map +1 -1
@@ -1,4 +1,40 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
2
38
  Object.defineProperty(exports, "__esModule", { value: true });
3
39
  var delegua_1 = require("../../fontes/delegua");
4
40
  describe('Interpretador (EguaP)', function () {
@@ -9,198 +45,378 @@ describe('Interpretador (EguaP)', function () {
9
45
  });
10
46
  describe('Cenários de sucesso', function () {
11
47
  describe('Atribuições', function () {
12
- it('Trivial', function () {
13
- var retornoLexador = delegua.lexador.mapear(["var a = 1;"], -1);
14
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
15
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
16
- expect(retornoInterpretador.erros).toHaveLength(0);
17
- });
18
- it('Vetor', function () {
19
- var retornoLexador = delegua.lexador.mapear(["var a = [1, 2, 3];"], -1);
20
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
21
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
22
- expect(retornoInterpretador.erros).toHaveLength(0);
23
- });
24
- it('Dicionário', function () {
25
- var retornoLexador = delegua.lexador.mapear(["var a = {'a': 1, 'b': 2};"], -1);
26
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
27
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
28
- expect(retornoInterpretador.erros).toHaveLength(0);
29
- });
48
+ it('Trivial', function () { return __awaiter(void 0, void 0, void 0, function () {
49
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
50
+ return __generator(this, function (_a) {
51
+ switch (_a.label) {
52
+ case 0:
53
+ retornoLexador = delegua.lexador.mapear(["var a = 1;"], -1);
54
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
55
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
56
+ case 1:
57
+ retornoInterpretador = _a.sent();
58
+ expect(retornoInterpretador.erros).toHaveLength(0);
59
+ return [2 /*return*/];
60
+ }
61
+ });
62
+ }); });
63
+ it('Vetor', function () { return __awaiter(void 0, void 0, void 0, function () {
64
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
65
+ return __generator(this, function (_a) {
66
+ switch (_a.label) {
67
+ case 0:
68
+ retornoLexador = delegua.lexador.mapear(["var a = [1, 2, 3];"], -1);
69
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
70
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
71
+ case 1:
72
+ retornoInterpretador = _a.sent();
73
+ expect(retornoInterpretador.erros).toHaveLength(0);
74
+ return [2 /*return*/];
75
+ }
76
+ });
77
+ }); });
78
+ it('Dicionário', function () { return __awaiter(void 0, void 0, void 0, function () {
79
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0:
83
+ retornoLexador = delegua.lexador.mapear(["var a = {'a': 1, 'b': 2};"], -1);
84
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
85
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
86
+ case 1:
87
+ retornoInterpretador = _a.sent();
88
+ expect(retornoInterpretador.erros).toHaveLength(0);
89
+ return [2 /*return*/];
90
+ }
91
+ });
92
+ }); });
30
93
  });
31
94
  describe('Acesso a variáveis e objetos', function () {
32
- it('Acesso a elementos de vetor', function () {
33
- var retornoLexador = delegua.lexador.mapear(["var a = [1, 2, 3];\nescreva(a[1]);"], -1);
34
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
35
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
36
- expect(retornoInterpretador.erros).toHaveLength(0);
37
- });
38
- it('Acesso a elementos de dicionário', function () {
39
- var retornoLexador = delegua.lexador.mapear(["var a = {'a': 1, 'b': 2};\nescreva(a['b']);"], -1);
40
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
41
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
42
- expect(retornoInterpretador.erros).toHaveLength(0);
43
- });
95
+ it('Acesso a elementos de vetor', function () { return __awaiter(void 0, void 0, void 0, function () {
96
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ retornoLexador = delegua.lexador.mapear(["var a = [1, 2, 3];\nescreva(a[1]);"], -1);
101
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
102
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
103
+ case 1:
104
+ retornoInterpretador = _a.sent();
105
+ expect(retornoInterpretador.erros).toHaveLength(0);
106
+ return [2 /*return*/];
107
+ }
108
+ });
109
+ }); });
110
+ it('Acesso a elementos de dicionário', function () { return __awaiter(void 0, void 0, void 0, function () {
111
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
112
+ return __generator(this, function (_a) {
113
+ switch (_a.label) {
114
+ case 0:
115
+ retornoLexador = delegua.lexador.mapear(["var a = {'a': 1, 'b': 2};\nescreva(a['b']);"], -1);
116
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
117
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
118
+ case 1:
119
+ retornoInterpretador = _a.sent();
120
+ expect(retornoInterpretador.erros).toHaveLength(0);
121
+ return [2 /*return*/];
122
+ }
123
+ });
124
+ }); });
44
125
  });
45
126
  describe('escreva()', function () {
46
- it('Olá Mundo (escreva() e literal)', function () {
47
- var retornoLexador = delegua.lexador.mapear(["escreva('Olá mundo');"], -1);
48
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
49
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
50
- expect(retornoInterpretador.erros).toHaveLength(0);
51
- });
52
- it('nulo', function () {
53
- var retornoLexador = delegua.lexador.mapear(["escreva(nulo);"], -1);
54
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
55
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
56
- expect(retornoInterpretador.erros).toHaveLength(0);
57
- });
127
+ it('Olá Mundo (escreva() e literal)', function () { return __awaiter(void 0, void 0, void 0, function () {
128
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
129
+ return __generator(this, function (_a) {
130
+ switch (_a.label) {
131
+ case 0:
132
+ retornoLexador = delegua.lexador.mapear(["escreva('Olá mundo');"], -1);
133
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
134
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
135
+ case 1:
136
+ retornoInterpretador = _a.sent();
137
+ expect(retornoInterpretador.erros).toHaveLength(0);
138
+ return [2 /*return*/];
139
+ }
140
+ });
141
+ }); });
142
+ it('nulo', function () { return __awaiter(void 0, void 0, void 0, function () {
143
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
144
+ return __generator(this, function (_a) {
145
+ switch (_a.label) {
146
+ case 0:
147
+ retornoLexador = delegua.lexador.mapear(["escreva(nulo);"], -1);
148
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
149
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
150
+ case 1:
151
+ retornoInterpretador = _a.sent();
152
+ expect(retornoInterpretador.erros).toHaveLength(0);
153
+ return [2 /*return*/];
154
+ }
155
+ });
156
+ }); });
58
157
  });
59
158
  describe('Operações matemáticas', function () {
60
- it('Operações matemáticas - Trivial', function () {
61
- var retornoLexador = delegua.lexador.mapear(["escreva(5 + 4 * 3 - 2 ** 1 / 6 % 10);"], -1);
62
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
63
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
64
- expect(retornoInterpretador.erros).toHaveLength(0);
65
- });
159
+ it('Operações matemáticas - Trivial', function () { return __awaiter(void 0, void 0, void 0, function () {
160
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
161
+ return __generator(this, function (_a) {
162
+ switch (_a.label) {
163
+ case 0:
164
+ retornoLexador = delegua.lexador.mapear(["escreva(5 + 4 * 3 - 2 ** 1 / 6 % 10);"], -1);
165
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
166
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
167
+ case 1:
168
+ retornoInterpretador = _a.sent();
169
+ expect(retornoInterpretador.erros).toHaveLength(0);
170
+ return [2 /*return*/];
171
+ }
172
+ });
173
+ }); });
66
174
  });
67
175
  describe('Operações lógicas', function () {
68
- it('Operações lógicas - ou', function () {
69
- var retornoLexador = delegua.lexador.mapear(["escreva(verdadeiro ou falso);"], -1);
70
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
71
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
72
- expect(retornoInterpretador.erros).toHaveLength(0);
73
- });
74
- it('Operações lógicas - e', function () {
75
- var retornoLexador = delegua.lexador.mapear(["escreva(verdadeiro e falso);"], -1);
76
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
77
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
78
- expect(retornoInterpretador.erros).toHaveLength(0);
79
- });
80
- it('Operações lógicas - em', function () {
81
- var retornoLexador = delegua.lexador.mapear(["escreva(2 em [1, 2, 3]);"], -1);
82
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
83
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
84
- expect(retornoInterpretador.erros).toHaveLength(0);
85
- });
176
+ it('Operações lógicas - ou', function () { return __awaiter(void 0, void 0, void 0, function () {
177
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ retornoLexador = delegua.lexador.mapear(["escreva(verdadeiro ou falso);"], -1);
182
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
183
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
184
+ case 1:
185
+ retornoInterpretador = _a.sent();
186
+ expect(retornoInterpretador.erros).toHaveLength(0);
187
+ return [2 /*return*/];
188
+ }
189
+ });
190
+ }); });
191
+ it('Operações lógicas - e', function () { return __awaiter(void 0, void 0, void 0, function () {
192
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
193
+ return __generator(this, function (_a) {
194
+ switch (_a.label) {
195
+ case 0:
196
+ retornoLexador = delegua.lexador.mapear(["escreva(verdadeiro e falso);"], -1);
197
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
198
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
199
+ case 1:
200
+ retornoInterpretador = _a.sent();
201
+ expect(retornoInterpretador.erros).toHaveLength(0);
202
+ return [2 /*return*/];
203
+ }
204
+ });
205
+ }); });
206
+ it('Operações lógicas - em', function () { return __awaiter(void 0, void 0, void 0, function () {
207
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
208
+ return __generator(this, function (_a) {
209
+ switch (_a.label) {
210
+ case 0:
211
+ retornoLexador = delegua.lexador.mapear(["escreva(2 em [1, 2, 3]);"], -1);
212
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
213
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
214
+ case 1:
215
+ retornoInterpretador = _a.sent();
216
+ expect(retornoInterpretador.erros).toHaveLength(0);
217
+ return [2 /*return*/];
218
+ }
219
+ });
220
+ }); });
86
221
  });
87
222
  describe('Condicionais', function () {
88
- it('Condicionais - condição verdadeira', function () {
89
- var codigo = [
90
- "se (1 < 2):",
91
- " escreva('Um menor que dois'):",
92
- "senao:",
93
- " escreva('Nunca será executado')",
94
- ];
95
- var retornoLexador = delegua.lexador.mapear(codigo, -1);
96
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
97
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
98
- expect(retornoInterpretador.erros).toHaveLength(0);
99
- });
100
- it('Condicionais - condição falsa', function () {
101
- var codigo = [
102
- "se (1 > 2):",
103
- " escreva('Nunca acontece'):",
104
- "senão:",
105
- " escreva('Um não é maior que dois')",
106
- ];
107
- var retornoLexador = delegua.lexador.mapear(codigo, -1);
108
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
109
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
110
- expect(retornoInterpretador.erros).toHaveLength(0);
111
- });
223
+ it('Condicionais - condição verdadeira', function () { return __awaiter(void 0, void 0, void 0, function () {
224
+ var codigo, retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
225
+ return __generator(this, function (_a) {
226
+ switch (_a.label) {
227
+ case 0:
228
+ codigo = [
229
+ "se (1 < 2):",
230
+ " escreva('Um menor que dois'):",
231
+ "senao:",
232
+ " escreva('Nunca será executado')",
233
+ ];
234
+ retornoLexador = delegua.lexador.mapear(codigo, -1);
235
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
236
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
237
+ case 1:
238
+ retornoInterpretador = _a.sent();
239
+ expect(retornoInterpretador.erros).toHaveLength(0);
240
+ return [2 /*return*/];
241
+ }
242
+ });
243
+ }); });
244
+ it('Condicionais - condição falsa', function () { return __awaiter(void 0, void 0, void 0, function () {
245
+ var codigo, retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
246
+ return __generator(this, function (_a) {
247
+ switch (_a.label) {
248
+ case 0:
249
+ codigo = [
250
+ "se (1 > 2):",
251
+ " escreva('Nunca acontece'):",
252
+ "senão:",
253
+ " escreva('Um não é maior que dois')",
254
+ ];
255
+ retornoLexador = delegua.lexador.mapear(codigo, -1);
256
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
257
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
258
+ case 1:
259
+ retornoInterpretador = _a.sent();
260
+ expect(retornoInterpretador.erros).toHaveLength(0);
261
+ return [2 /*return*/];
262
+ }
263
+ });
264
+ }); });
112
265
  });
113
266
  describe('Laços de repetição', function () {
114
- it.skip('Laços de repetição - enquanto', function () {
115
- var retornoLexador = delegua.lexador.mapear(["var a = 0;\nenquanto (a < 10) { a = a + 1; }"], -1);
116
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
117
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
118
- expect(retornoInterpretador.erros).toHaveLength(0);
119
- });
120
- it.skip('Laços de repetição - fazer ... enquanto', function () {
121
- var retornoLexador = delegua.lexador.mapear(["var a = 0;\nfazer { a = a + 1; } enquanto (a < 10)"], -1);
122
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
123
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
124
- expect(retornoInterpretador.erros).toHaveLength(0);
125
- });
126
- it.skip('Laços de repetição - para', function () {
127
- var codigo = [
128
- "para (var i = 0; i < 10; i = i + 1):",
129
- " escreva(i)",
130
- ];
131
- var retornoLexador = delegua.lexador.mapear(codigo, -1);
132
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
133
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
134
- expect(retornoInterpretador.erros).toHaveLength(0);
135
- });
267
+ it.skip('Laços de repetição - enquanto', function () { return __awaiter(void 0, void 0, void 0, function () {
268
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
269
+ return __generator(this, function (_a) {
270
+ switch (_a.label) {
271
+ case 0:
272
+ retornoLexador = delegua.lexador.mapear(["var a = 0;\nenquanto (a < 10) { a = a + 1; }"], -1);
273
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
274
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
275
+ case 1:
276
+ retornoInterpretador = _a.sent();
277
+ expect(retornoInterpretador.erros).toHaveLength(0);
278
+ return [2 /*return*/];
279
+ }
280
+ });
281
+ }); });
282
+ it.skip('Laços de repetição - fazer ... enquanto', function () { return __awaiter(void 0, void 0, void 0, function () {
283
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
284
+ return __generator(this, function (_a) {
285
+ switch (_a.label) {
286
+ case 0:
287
+ retornoLexador = delegua.lexador.mapear(["var a = 0;\nfazer { a = a + 1; } enquanto (a < 10)"], -1);
288
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
289
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
290
+ case 1:
291
+ retornoInterpretador = _a.sent();
292
+ expect(retornoInterpretador.erros).toHaveLength(0);
293
+ return [2 /*return*/];
294
+ }
295
+ });
296
+ }); });
297
+ it.skip('Laços de repetição - para', function () { return __awaiter(void 0, void 0, void 0, function () {
298
+ var codigo, retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
299
+ return __generator(this, function (_a) {
300
+ switch (_a.label) {
301
+ case 0:
302
+ codigo = [
303
+ "para (var i = 0; i < 10; i = i + 1):",
304
+ " escreva(i)",
305
+ ];
306
+ retornoLexador = delegua.lexador.mapear(codigo, -1);
307
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
308
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
309
+ case 1:
310
+ retornoInterpretador = _a.sent();
311
+ expect(retornoInterpretador.erros).toHaveLength(0);
312
+ return [2 /*return*/];
313
+ }
314
+ });
315
+ }); });
136
316
  });
137
317
  describe('Classes', function () {
138
- it.skip('Trivial', function () {
139
- var codigo = [
140
- "classe Animal:",
141
- " correr():",
142
- " escreva('Correndo Loucamente')",
143
- "classe Cachorro herda Animal:",
144
- " latir():",
145
- " escreva('Au Au Au Au')",
146
- "var nomeDoCachorro = Cachorro()",
147
- "nomeDoCachorro.correr()",
148
- "nomeDoCachorro.latir()",
149
- "escreva('Classe: OK!')"
150
- ];
151
- var retornoLexador = delegua.lexador.mapear(codigo, -1);
152
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
153
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
154
- expect(retornoInterpretador.erros).toHaveLength(0);
155
- });
318
+ it.skip('Trivial', function () { return __awaiter(void 0, void 0, void 0, function () {
319
+ var codigo, retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
320
+ return __generator(this, function (_a) {
321
+ switch (_a.label) {
322
+ case 0:
323
+ codigo = [
324
+ "classe Animal:",
325
+ " correr():",
326
+ " escreva('Correndo Loucamente')",
327
+ "classe Cachorro herda Animal:",
328
+ " latir():",
329
+ " escreva('Au Au Au Au')",
330
+ "var nomeDoCachorro = Cachorro()",
331
+ "nomeDoCachorro.correr()",
332
+ "nomeDoCachorro.latir()",
333
+ "escreva('Classe: OK!')"
334
+ ];
335
+ retornoLexador = delegua.lexador.mapear(codigo, -1);
336
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
337
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
338
+ case 1:
339
+ retornoInterpretador = _a.sent();
340
+ expect(retornoInterpretador.erros).toHaveLength(0);
341
+ return [2 /*return*/];
342
+ }
343
+ });
344
+ }); });
156
345
  });
157
346
  describe('Declaração e chamada de funções', function () {
158
- it('Fibonacci', function () {
159
- var codigo = [
160
- "função fibonacci(n):",
161
- " se (n == 0):",
162
- " retorna(0)",
163
- " se (n == 1):",
164
- " retorna(1)",
165
- " var n1 = n - 1",
166
- " var n2 = n - 2",
167
- " var f1 = fibonacci(n1)",
168
- " var f2 = fibonacci(n2)",
169
- " retorna(f1 + f2)",
170
- "var a = fibonacci(0)",
171
- "escreva(a)",
172
- "a = fibonacci(1)",
173
- "escreva(a)",
174
- "a = fibonacci(2)",
175
- "escreva(a)",
176
- "a = fibonacci(3)",
177
- "escreva(a)",
178
- "a = fibonacci(4)",
179
- "escreva(a)",
180
- "a = fibonacci(5)",
181
- "escreva(a)"
182
- ];
183
- var retornoLexador = delegua.lexador.mapear(codigo, -1);
184
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
185
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
186
- expect(retornoInterpretador.erros).toHaveLength(0);
187
- });
347
+ it('Fibonacci', function () { return __awaiter(void 0, void 0, void 0, function () {
348
+ var codigo, retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
349
+ return __generator(this, function (_a) {
350
+ switch (_a.label) {
351
+ case 0:
352
+ codigo = [
353
+ "função fibonacci(n):",
354
+ " se (n == 0):",
355
+ " retorna(0)",
356
+ " se (n == 1):",
357
+ " retorna(1)",
358
+ " var n1 = n - 1",
359
+ " var n2 = n - 2",
360
+ " var f1 = fibonacci(n1)",
361
+ " var f2 = fibonacci(n2)",
362
+ " retorna(f1 + f2)",
363
+ "var a = fibonacci(0)",
364
+ "escreva(a)",
365
+ "a = fibonacci(1)",
366
+ "escreva(a)",
367
+ "a = fibonacci(2)",
368
+ "escreva(a)",
369
+ "a = fibonacci(3)",
370
+ "escreva(a)",
371
+ "a = fibonacci(4)",
372
+ "escreva(a)",
373
+ "a = fibonacci(5)",
374
+ "escreva(a)"
375
+ ];
376
+ retornoLexador = delegua.lexador.mapear(codigo, -1);
377
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
378
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
379
+ case 1:
380
+ retornoInterpretador = _a.sent();
381
+ expect(retornoInterpretador.erros).toHaveLength(0);
382
+ return [2 /*return*/];
383
+ }
384
+ });
385
+ }); });
188
386
  });
189
387
  });
190
388
  describe('Cenários de falha', function () {
191
389
  describe('Acesso a variáveis e objetos', function () {
192
- it('Acesso a elementos de vetor', function () {
193
- var retornoLexador = delegua.lexador.mapear(["var a = [1, 2, 3];\nescreva(a[4]);"], -1);
194
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
195
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
196
- expect(retornoInterpretador.erros.length).toBeGreaterThan(0);
197
- });
198
- it('Acesso a elementos de dicionário', function () {
199
- var retornoLexador = delegua.lexador.mapear(["var a = {'a': 1, 'b': 2};\nescreva(a['c']);"], -1);
200
- var retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
201
- var retornoInterpretador = delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes);
202
- expect(retornoInterpretador.erros.length).toBeGreaterThanOrEqual(0);
203
- });
390
+ it('Acesso a elementos de vetor', function () { return __awaiter(void 0, void 0, void 0, function () {
391
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
392
+ return __generator(this, function (_a) {
393
+ switch (_a.label) {
394
+ case 0:
395
+ retornoLexador = delegua.lexador.mapear(["var a = [1, 2, 3];\nescreva(a[4]);"], -1);
396
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
397
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
398
+ case 1:
399
+ retornoInterpretador = _a.sent();
400
+ expect(retornoInterpretador.erros.length).toBeGreaterThan(0);
401
+ return [2 /*return*/];
402
+ }
403
+ });
404
+ }); });
405
+ it('Acesso a elementos de dicionário', function () { return __awaiter(void 0, void 0, void 0, function () {
406
+ var retornoLexador, retornoAvaliadorSintatico, retornoInterpretador;
407
+ return __generator(this, function (_a) {
408
+ switch (_a.label) {
409
+ case 0:
410
+ retornoLexador = delegua.lexador.mapear(["var a = {'a': 1, 'b': 2};\nescreva(a['c']);"], -1);
411
+ retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
412
+ return [4 /*yield*/, delegua.interpretador.interpretar(retornoAvaliadorSintatico.declaracoes)];
413
+ case 1:
414
+ retornoInterpretador = _a.sent();
415
+ expect(retornoInterpretador.erros.length).toBeGreaterThanOrEqual(0);
416
+ return [2 /*return*/];
417
+ }
418
+ });
419
+ }); });
204
420
  });
205
421
  });
206
422
  });