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