@designliquido/delegua 0.59.0 → 0.60.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 (305) hide show
  1. package/analisador-semantico/analisador-semantico-base.d.ts +2 -2
  2. package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
  3. package/analisador-semantico/analisador-semantico-base.js.map +1 -1
  4. package/analisador-semantico/analisador-semantico.d.ts +1 -0
  5. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  6. package/analisador-semantico/analisador-semantico.js +6 -0
  7. package/analisador-semantico/analisador-semantico.js.map +1 -1
  8. package/avaliador-sintatico/avaliador-sintatico.js +7 -7
  9. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  10. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +5 -6
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts.map +1 -1
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +1 -1
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +4 -5
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  16. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +1 -1
  17. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  18. package/avaliador-sintatico/index.d.ts +0 -1
  19. package/avaliador-sintatico/index.d.ts.map +1 -1
  20. package/avaliador-sintatico/index.js +0 -1
  21. package/avaliador-sintatico/index.js.map +1 -1
  22. package/bibliotecas/biblioteca-global.d.ts.map +1 -1
  23. package/bibliotecas/biblioteca-global.js +10 -9
  24. package/bibliotecas/biblioteca-global.js.map +1 -1
  25. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts.map +1 -1
  26. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js +22 -0
  27. package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js.map +1 -1
  28. package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
  29. package/bibliotecas/dialetos/pitugues/primitivas-texto.js +56 -2
  30. package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
  31. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  32. package/bibliotecas/primitivas-dicionario.js +26 -1
  33. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  34. package/bibliotecas/primitivas-texto.d.ts.map +1 -1
  35. package/bibliotecas/primitivas-texto.js +18 -1
  36. package/bibliotecas/primitivas-texto.js.map +1 -1
  37. package/bin/package.json +1 -1
  38. package/construtos/acesso-elemento-matriz.d.ts +3 -0
  39. package/construtos/acesso-elemento-matriz.d.ts.map +1 -1
  40. package/construtos/acesso-elemento-matriz.js +3 -0
  41. package/construtos/acesso-elemento-matriz.js.map +1 -1
  42. package/construtos/acesso-indice-variavel.d.ts +1 -0
  43. package/construtos/acesso-indice-variavel.d.ts.map +1 -1
  44. package/construtos/acesso-indice-variavel.js +3 -0
  45. package/construtos/acesso-indice-variavel.js.map +1 -1
  46. package/construtos/acesso-metodo-ou-propriedade.d.ts +1 -0
  47. package/construtos/acesso-metodo-ou-propriedade.d.ts.map +1 -1
  48. package/construtos/acesso-metodo-ou-propriedade.js +3 -0
  49. package/construtos/acesso-metodo-ou-propriedade.js.map +1 -1
  50. package/construtos/acesso-metodo.d.ts +1 -0
  51. package/construtos/acesso-metodo.d.ts.map +1 -1
  52. package/construtos/acesso-metodo.js +3 -0
  53. package/construtos/acesso-metodo.js.map +1 -1
  54. package/construtos/acesso-propriedade.d.ts +1 -0
  55. package/construtos/acesso-propriedade.d.ts.map +1 -1
  56. package/construtos/acesso-propriedade.js +3 -0
  57. package/construtos/acesso-propriedade.js.map +1 -1
  58. package/construtos/agrupamento.d.ts +1 -0
  59. package/construtos/agrupamento.d.ts.map +1 -1
  60. package/construtos/agrupamento.js +3 -0
  61. package/construtos/agrupamento.js.map +1 -1
  62. package/construtos/argumento-referencia-funcao.d.ts +1 -0
  63. package/construtos/argumento-referencia-funcao.d.ts.map +1 -1
  64. package/construtos/argumento-referencia-funcao.js +3 -0
  65. package/construtos/argumento-referencia-funcao.js.map +1 -1
  66. package/construtos/atribuicao-por-indice.d.ts +1 -0
  67. package/construtos/atribuicao-por-indice.d.ts.map +1 -1
  68. package/construtos/atribuicao-por-indice.js +3 -0
  69. package/construtos/atribuicao-por-indice.js.map +1 -1
  70. package/construtos/atribuicao-por-indices-matriz.d.ts +1 -0
  71. package/construtos/atribuicao-por-indices-matriz.d.ts.map +1 -1
  72. package/construtos/atribuicao-por-indices-matriz.js +3 -0
  73. package/construtos/atribuicao-por-indices-matriz.js.map +1 -1
  74. package/construtos/atribuir.d.ts +1 -0
  75. package/construtos/atribuir.d.ts.map +1 -1
  76. package/construtos/atribuir.js +3 -0
  77. package/construtos/atribuir.js.map +1 -1
  78. package/construtos/binario.d.ts +1 -0
  79. package/construtos/binario.d.ts.map +1 -1
  80. package/construtos/binario.js +3 -0
  81. package/construtos/binario.js.map +1 -1
  82. package/construtos/chamada.d.ts +1 -0
  83. package/construtos/chamada.d.ts.map +1 -1
  84. package/construtos/chamada.js +3 -0
  85. package/construtos/chamada.js.map +1 -1
  86. package/construtos/comentario-como-construto.d.ts +1 -0
  87. package/construtos/comentario-como-construto.d.ts.map +1 -1
  88. package/construtos/comentario-como-construto.js +3 -0
  89. package/construtos/comentario-como-construto.js.map +1 -1
  90. package/construtos/componente-linguagem.d.ts +1 -0
  91. package/construtos/componente-linguagem.d.ts.map +1 -1
  92. package/construtos/componente-linguagem.js +3 -0
  93. package/construtos/componente-linguagem.js.map +1 -1
  94. package/construtos/constante.d.ts +1 -0
  95. package/construtos/constante.d.ts.map +1 -1
  96. package/construtos/constante.js +3 -0
  97. package/construtos/constante.js.map +1 -1
  98. package/construtos/construto.d.ts +1 -0
  99. package/construtos/construto.d.ts.map +1 -1
  100. package/construtos/decorador.d.ts +1 -0
  101. package/construtos/decorador.d.ts.map +1 -1
  102. package/construtos/decorador.js +3 -0
  103. package/construtos/decorador.js.map +1 -1
  104. package/construtos/definir-valor.d.ts +1 -0
  105. package/construtos/definir-valor.d.ts.map +1 -1
  106. package/construtos/definir-valor.js +3 -0
  107. package/construtos/definir-valor.js.map +1 -1
  108. package/construtos/dicionario.d.ts +1 -0
  109. package/construtos/dicionario.d.ts.map +1 -1
  110. package/construtos/dicionario.js +3 -0
  111. package/construtos/dicionario.js.map +1 -1
  112. package/construtos/elvis.d.ts +1 -0
  113. package/construtos/elvis.d.ts.map +1 -1
  114. package/construtos/elvis.js +3 -0
  115. package/construtos/elvis.js.map +1 -1
  116. package/construtos/enquanto-como-construto.d.ts +1 -0
  117. package/construtos/enquanto-como-construto.d.ts.map +1 -1
  118. package/construtos/enquanto-como-construto.js +3 -0
  119. package/construtos/enquanto-como-construto.js.map +1 -1
  120. package/construtos/expressao-regular.d.ts +1 -0
  121. package/construtos/expressao-regular.d.ts.map +1 -1
  122. package/construtos/expressao-regular.js +3 -0
  123. package/construtos/expressao-regular.js.map +1 -1
  124. package/construtos/fazer-como-construto.d.ts +1 -0
  125. package/construtos/fazer-como-construto.d.ts.map +1 -1
  126. package/construtos/fazer-como-construto.js +3 -0
  127. package/construtos/fazer-como-construto.js.map +1 -1
  128. package/construtos/fim-para.d.ts +1 -0
  129. package/construtos/fim-para.d.ts.map +1 -1
  130. package/construtos/fim-para.js +3 -0
  131. package/construtos/fim-para.js.map +1 -1
  132. package/construtos/formatacao-escrita.d.ts +1 -0
  133. package/construtos/formatacao-escrita.d.ts.map +1 -1
  134. package/construtos/formatacao-escrita.js +3 -0
  135. package/construtos/formatacao-escrita.js.map +1 -1
  136. package/construtos/funcao.d.ts +1 -0
  137. package/construtos/funcao.d.ts.map +1 -1
  138. package/construtos/funcao.js +3 -0
  139. package/construtos/funcao.js.map +1 -1
  140. package/construtos/importar-como-construto.d.ts +1 -0
  141. package/construtos/importar-como-construto.d.ts.map +1 -1
  142. package/construtos/importar-como-construto.js +3 -0
  143. package/construtos/importar-como-construto.js.map +1 -1
  144. package/construtos/isto.d.ts +1 -0
  145. package/construtos/isto.d.ts.map +1 -1
  146. package/construtos/isto.js +3 -0
  147. package/construtos/isto.js.map +1 -1
  148. package/construtos/leia.d.ts +1 -0
  149. package/construtos/leia.d.ts.map +1 -1
  150. package/construtos/leia.js +3 -0
  151. package/construtos/leia.js.map +1 -1
  152. package/construtos/lista-compreensao.d.ts +1 -0
  153. package/construtos/lista-compreensao.d.ts.map +1 -1
  154. package/construtos/lista-compreensao.js +3 -0
  155. package/construtos/lista-compreensao.js.map +1 -1
  156. package/construtos/literal.d.ts +1 -0
  157. package/construtos/literal.d.ts.map +1 -1
  158. package/construtos/literal.js +6 -0
  159. package/construtos/literal.js.map +1 -1
  160. package/construtos/logico.d.ts +1 -0
  161. package/construtos/logico.d.ts.map +1 -1
  162. package/construtos/logico.js +3 -0
  163. package/construtos/logico.js.map +1 -1
  164. package/construtos/para-cada-como-construto.d.ts +1 -0
  165. package/construtos/para-cada-como-construto.d.ts.map +1 -1
  166. package/construtos/para-cada-como-construto.js +3 -0
  167. package/construtos/para-cada-como-construto.js.map +1 -1
  168. package/construtos/para-como-construto.d.ts +1 -0
  169. package/construtos/para-como-construto.d.ts.map +1 -1
  170. package/construtos/para-como-construto.js +3 -0
  171. package/construtos/para-como-construto.js.map +1 -1
  172. package/construtos/referencia-biblioteca-global.d.ts +1 -0
  173. package/construtos/referencia-biblioteca-global.d.ts.map +1 -1
  174. package/construtos/referencia-biblioteca-global.js +3 -0
  175. package/construtos/referencia-biblioteca-global.js.map +1 -1
  176. package/construtos/referencia-funcao.d.ts +1 -0
  177. package/construtos/referencia-funcao.d.ts.map +1 -1
  178. package/construtos/referencia-funcao.js +3 -0
  179. package/construtos/referencia-funcao.js.map +1 -1
  180. package/construtos/se-ternario.d.ts +1 -0
  181. package/construtos/se-ternario.d.ts.map +1 -1
  182. package/construtos/se-ternario.js +3 -0
  183. package/construtos/se-ternario.js.map +1 -1
  184. package/construtos/separador.d.ts +1 -0
  185. package/construtos/separador.d.ts.map +1 -1
  186. package/construtos/separador.js +3 -0
  187. package/construtos/separador.js.map +1 -1
  188. package/construtos/super.d.ts +1 -0
  189. package/construtos/super.d.ts.map +1 -1
  190. package/construtos/super.js +3 -0
  191. package/construtos/super.js.map +1 -1
  192. package/construtos/tipo-de.d.ts +1 -0
  193. package/construtos/tipo-de.d.ts.map +1 -1
  194. package/construtos/tipo-de.js +3 -0
  195. package/construtos/tipo-de.js.map +1 -1
  196. package/construtos/tupla.d.ts +1 -0
  197. package/construtos/tupla.d.ts.map +1 -1
  198. package/construtos/tupla.js.map +1 -1
  199. package/construtos/tuplas/deceto.d.ts +1 -0
  200. package/construtos/tuplas/deceto.d.ts.map +1 -1
  201. package/construtos/tuplas/deceto.js +3 -0
  202. package/construtos/tuplas/deceto.js.map +1 -1
  203. package/construtos/tuplas/dupla.d.ts +1 -0
  204. package/construtos/tuplas/dupla.d.ts.map +1 -1
  205. package/construtos/tuplas/dupla.js +3 -0
  206. package/construtos/tuplas/dupla.js.map +1 -1
  207. package/construtos/tuplas/noneto.d.ts +1 -0
  208. package/construtos/tuplas/noneto.d.ts.map +1 -1
  209. package/construtos/tuplas/noneto.js +3 -0
  210. package/construtos/tuplas/noneto.js.map +1 -1
  211. package/construtos/tuplas/octeto.d.ts +1 -0
  212. package/construtos/tuplas/octeto.d.ts.map +1 -1
  213. package/construtos/tuplas/octeto.js +3 -0
  214. package/construtos/tuplas/octeto.js.map +1 -1
  215. package/construtos/tuplas/quarteto.d.ts +1 -0
  216. package/construtos/tuplas/quarteto.d.ts.map +1 -1
  217. package/construtos/tuplas/quarteto.js +3 -0
  218. package/construtos/tuplas/quarteto.js.map +1 -1
  219. package/construtos/tuplas/quinteto.d.ts +1 -0
  220. package/construtos/tuplas/quinteto.d.ts.map +1 -1
  221. package/construtos/tuplas/quinteto.js +3 -0
  222. package/construtos/tuplas/quinteto.js.map +1 -1
  223. package/construtos/tuplas/septeto.d.ts +1 -0
  224. package/construtos/tuplas/septeto.d.ts.map +1 -1
  225. package/construtos/tuplas/septeto.js +3 -0
  226. package/construtos/tuplas/septeto.js.map +1 -1
  227. package/construtos/tuplas/sexteto.d.ts +1 -0
  228. package/construtos/tuplas/sexteto.d.ts.map +1 -1
  229. package/construtos/tuplas/sexteto.js +3 -0
  230. package/construtos/tuplas/sexteto.js.map +1 -1
  231. package/construtos/tuplas/trio.d.ts +1 -0
  232. package/construtos/tuplas/trio.d.ts.map +1 -1
  233. package/construtos/tuplas/trio.js +3 -0
  234. package/construtos/tuplas/trio.js.map +1 -1
  235. package/construtos/unario.d.ts +1 -0
  236. package/construtos/unario.d.ts.map +1 -1
  237. package/construtos/unario.js +3 -0
  238. package/construtos/unario.js.map +1 -1
  239. package/construtos/variavel.d.ts +1 -0
  240. package/construtos/variavel.d.ts.map +1 -1
  241. package/construtos/variavel.js +3 -0
  242. package/construtos/variavel.js.map +1 -1
  243. package/construtos/vetor.d.ts +1 -0
  244. package/construtos/vetor.d.ts.map +1 -1
  245. package/construtos/vetor.js +3 -0
  246. package/construtos/vetor.js.map +1 -1
  247. package/interfaces/interpretador-interface.d.ts +1 -1
  248. package/interfaces/interpretador-interface.d.ts.map +1 -1
  249. package/interfaces/primitiva-interface.d.ts +1 -0
  250. package/interfaces/primitiva-interface.d.ts.map +1 -1
  251. package/interfaces/retornos/index.d.ts +1 -0
  252. package/interfaces/retornos/index.d.ts.map +1 -1
  253. package/interfaces/retornos/index.js +1 -0
  254. package/interfaces/retornos/index.js.map +1 -1
  255. package/interpretador/dialetos/pitugues/comum.d.ts +16 -0
  256. package/interpretador/dialetos/pitugues/comum.d.ts.map +1 -0
  257. package/interpretador/dialetos/pitugues/comum.js +267 -0
  258. package/interpretador/dialetos/pitugues/comum.js.map +1 -0
  259. package/interpretador/dialetos/pitugues/index.d.ts +1 -0
  260. package/interpretador/dialetos/pitugues/index.d.ts.map +1 -1
  261. package/interpretador/dialetos/pitugues/index.js +1 -0
  262. package/interpretador/dialetos/pitugues/index.js.map +1 -1
  263. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts +8 -0
  264. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.d.ts.map +1 -0
  265. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js +51 -0
  266. package/interpretador/dialetos/pitugues/interpretador-pitugues-com-depuracao.js.map +1 -0
  267. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +0 -9
  268. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
  269. package/interpretador/dialetos/pitugues/interpretador-pitugues.js +37 -234
  270. package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
  271. package/interpretador/interpretador-base.d.ts.map +1 -1
  272. package/interpretador/interpretador-base.js +4 -1
  273. package/interpretador/interpretador-base.js.map +1 -1
  274. package/interpretador/interpretador.d.ts +1 -0
  275. package/interpretador/interpretador.d.ts.map +1 -1
  276. package/interpretador/interpretador.js +14 -6
  277. package/interpretador/interpretador.js.map +1 -1
  278. package/lexador/dialetos/lexador-pitugues.d.ts +1 -0
  279. package/lexador/dialetos/lexador-pitugues.d.ts.map +1 -1
  280. package/lexador/dialetos/lexador-pitugues.js +33 -0
  281. package/lexador/dialetos/lexador-pitugues.js.map +1 -1
  282. package/lexador/micro-lexador-pitugues.d.ts +1 -0
  283. package/lexador/micro-lexador-pitugues.d.ts.map +1 -1
  284. package/lexador/micro-lexador-pitugues.js +5 -1
  285. package/lexador/micro-lexador-pitugues.js.map +1 -1
  286. package/package.json +1 -1
  287. package/tipo-dados-elementar.d.ts +1 -1
  288. package/tipo-dados-elementar.d.ts.map +1 -1
  289. package/tipos-de-simbolos/pitugues.d.ts +1 -0
  290. package/tipos-de-simbolos/pitugues.d.ts.map +1 -1
  291. package/tipos-de-simbolos/pitugues.js +1 -0
  292. package/tipos-de-simbolos/pitugues.js.map +1 -1
  293. package/umd/delegua.js +692 -467
  294. package/avaliador-sintatico/retornos/index.d.ts +0 -2
  295. package/avaliador-sintatico/retornos/index.d.ts.map +0 -1
  296. package/avaliador-sintatico/retornos/index.js +0 -18
  297. package/avaliador-sintatico/retornos/index.js.map +0 -1
  298. package/avaliador-sintatico/retornos/retorno-primario.d.ts +0 -4
  299. package/avaliador-sintatico/retornos/retorno-primario.d.ts.map +0 -1
  300. package/avaliador-sintatico/retornos/retorno-primario.js +0 -3
  301. package/avaliador-sintatico/retornos/retorno-primario.js.map +0 -1
  302. package/interpretador/interpretador-com-depuracao.d.ts +0 -182
  303. package/interpretador/interpretador-com-depuracao.d.ts.map +0 -1
  304. package/interpretador/interpretador-com-depuracao.js +0 -563
  305. package/interpretador/interpretador-com-depuracao.js.map +0 -1
@@ -1,563 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.InterpretadorComDepuracao = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const espaco_memoria_1 = require("./espaco-memoria");
9
- const declaracoes_1 = require("../declaracoes");
10
- const quebras_1 = require("../quebras");
11
- const construtos_1 = require("../construtos");
12
- const inferenciador_1 = require("../inferenciador");
13
- const interpretador_1 = require("./interpretador");
14
- /**
15
- * Implementação do Interpretador com suporte a depuração.
16
- * Herda o Interpretador padrão de Delégua e implementa métodos a mais, que são
17
- * usados pelo servidor de depuração.
18
- * Alguns métodos do Interpretador original, como `executarBloco` e `interpretar`,
19
- * são reimplementados aqui.
20
- *
21
- * A separação entre `Interpretador` e `InterpretadorComDepuracao` se faz
22
- * necessária por uma série de motivos.
23
- * O primeiro deles é o desempenho. A depuração torna o desempenho do
24
- * Interpretador com depuração inferior ao Interpretador original pelas
25
- * várias verificações de controle que precisam ser feitas para a
26
- * funcionalidade do suporte a depuração, como verificar pontos de parada,
27
- * estados da pilha de execução e variáveis.
28
- * O segundo deles é manter o Interpretador original tão simples quanto possível.
29
- * Uma implementação mais simples normalmente é mais robusta.
30
- * O terceiro deles é o uso de memória. O Interpretador original não possui
31
- * uma série de variáveis implementadas aqui, o que o torna mais econômico em
32
- * recursos de máquina.
33
- */
34
- class InterpretadorComDepuracao extends interpretador_1.Interpretador {
35
- constructor(diretorioBase, funcaoDeRetorno, funcaoDeRetornoMesmaLinha) {
36
- super(diretorioBase, false, funcaoDeRetorno, funcaoDeRetornoMesmaLinha);
37
- this.pontosParada = [];
38
- this.pontoDeParadaAtivo = false;
39
- this.avisoPontoParadaAtivado = () => console.log('Aviso: Ponto de parada ativado.');
40
- this.escopoAtual = 0;
41
- this.executandoChamada = false;
42
- this.passos = 0;
43
- }
44
- /**
45
- * Quando um construto ou declaração possui id, significa que o interpretador
46
- * deve resolver a avaliação e guardar seu valor até o final do escopo.
47
- * Isso serve para quando a linguagem está em modo de depuração, e o contexto
48
- * da execução deixa de existir com um ponto de parada, por exemplo.
49
- * @param expressao A expressão a ser avaliada.
50
- * @returns O resultado da avaliação.
51
- */
52
- async avaliar(expressao) {
53
- if (expressao.hasOwnProperty('id')) {
54
- const escopoAtual = this.pilhaEscoposExecucao.topoDaPilha();
55
- const idChamadaComArgumentos = await this.gerarIdResolucaoChamada(expressao);
56
- if (escopoAtual.espacoMemoria.resolucoesChamadas.hasOwnProperty(idChamadaComArgumentos)) {
57
- return escopoAtual.espacoMemoria.resolucoesChamadas[idChamadaComArgumentos];
58
- }
59
- }
60
- return await expressao.aceitar(this);
61
- }
62
- /**
63
- * Resolve problema de literais que tenham vírgulas, e confundem a resolução de chamadas.
64
- * @param valor O valor do argumento, que pode ser um literal com virgulas.
65
- * @returns Uma string com vírgulas escapadas.
66
- */
67
- escaparVirgulas(valor) {
68
- return String(valor).replace(/,/i, ',');
69
- }
70
- /**
71
- * Gera um identificador para resolução de chamadas.
72
- * Usado para não chamar funções repetidamente quando usando instruções
73
- * de passo, como "próximo" ou "adentrar-escopo".
74
- * @param expressao A expressão de chamada.
75
- * @returns Uma `Promise` que resolve como `string`.
76
- */
77
- async gerarIdResolucaoChamada(expressao) {
78
- const argumentosResolvidos = [];
79
- if (expressao.argumentos && expressao.argumentos.length > 0) {
80
- for (let argumento of expressao.argumentos) {
81
- if (argumento instanceof construtos_1.Leia) {
82
- argumentosResolvidos.push(`leia_${argumento.id}`);
83
- }
84
- else {
85
- argumentosResolvidos.push(await this.avaliar(argumento));
86
- }
87
- }
88
- }
89
- return argumentosResolvidos.reduce((acumulador, argumento) => (acumulador += `,${this.escaparVirgulas(argumento.hasOwnProperty('valor') ? argumento.valor : argumento)}`), expressao.id);
90
- }
91
- async visitarExpressaoDeChamada(expressao) {
92
- const _idChamadaComArgumentos = await this.gerarIdResolucaoChamada(expressao);
93
- // Usado na abertura do bloco de escopo da chamada.
94
- this.idChamadaAtual = _idChamadaComArgumentos;
95
- this.executandoChamada = true;
96
- this.proximoEscopo = 'funcao';
97
- const retorno = await super.visitarExpressaoDeChamada(expressao);
98
- this.executandoChamada = false;
99
- const escopoAtual = this.pilhaEscoposExecucao.topoDaPilha();
100
- escopoAtual.espacoMemoria.resolucoesChamadas[_idChamadaComArgumentos] = retorno;
101
- return retorno;
102
- }
103
- async visitarDeclaracaoEnquanto(declaracao) {
104
- const escopoAtual = this.pilhaEscoposExecucao.topoDaPilha();
105
- switch (this.comando) {
106
- case 'proximo':
107
- if (this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
108
- escopoAtual.emLacoRepeticao = true;
109
- return this.executarBloco(declaracao.corpo.declaracoes);
110
- }
111
- escopoAtual.emLacoRepeticao = false;
112
- return null;
113
- default:
114
- let retornoExecucao;
115
- while (!(retornoExecucao instanceof quebras_1.Quebra) &&
116
- !this.pontoDeParadaAtivo &&
117
- this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
118
- escopoAtual.emLacoRepeticao = true;
119
- try {
120
- retornoExecucao = await this.executar(declaracao.corpo);
121
- if (retornoExecucao instanceof quebras_1.SustarQuebra) {
122
- return null;
123
- }
124
- if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
125
- retornoExecucao = null;
126
- }
127
- }
128
- catch (erro) {
129
- return Promise.reject(erro);
130
- }
131
- }
132
- escopoAtual.emLacoRepeticao = false;
133
- return retornoExecucao;
134
- }
135
- }
136
- /**
137
- * Execução de uma escrita na saída configurada, que pode ser `console` (padrão) ou
138
- * alguma função para escrever numa página Web.
139
- * Se ponto de parada foi ativado durante a avaliação de argumentos, não escreve.
140
- * @param declaracao A declaração.
141
- * @returns Sempre nulo, por convenção de visita.
142
- */
143
- async visitarDeclaracaoEscreva(declaracao) {
144
- try {
145
- const formatoTexto = await this.avaliarArgumentosEscreva(declaracao.argumentos);
146
- if (this.pontoDeParadaAtivo) {
147
- return null;
148
- }
149
- this.funcaoDeRetorno(formatoTexto);
150
- return null;
151
- }
152
- catch (erro) {
153
- this.erros.push({
154
- erroInterno: erro,
155
- linha: declaracao.linha,
156
- hashArquivo: declaracao.hashArquivo,
157
- });
158
- }
159
- }
160
- async visitarDeclaracaoPara(declaracao) {
161
- // Aqui precisamos clonar a declaração porque modificamos
162
- // algumas propriedades que indicam o estado da execução dela.
163
- // Por exemplo, se chamamos uma função que tem dentro dela um bloco Para,
164
- // cada execução do bloco precisa de uma inicialização diferente.
165
- const cloneDeclaracao = lodash_1.default.cloneDeep(declaracao);
166
- const corpoExecucao = cloneDeclaracao.corpo;
167
- const declaracaoInicializador = Array.isArray(cloneDeclaracao.inicializador)
168
- ? declaracao.inicializador[0]
169
- : declaracao.inicializador;
170
- if (declaracaoInicializador !== null) {
171
- await this.avaliar(declaracaoInicializador);
172
- // O incremento vai ao final do bloco de escopo.
173
- if (cloneDeclaracao.incrementar !== null) {
174
- corpoExecucao.declaracoes.push(new declaracoes_1.Expressao(cloneDeclaracao.incrementar));
175
- }
176
- }
177
- cloneDeclaracao.inicializada = true;
178
- const escopoAtual = this.pilhaEscoposExecucao.topoDaPilha();
179
- switch (this.comando) {
180
- case 'proximo':
181
- if (cloneDeclaracao.condicao !== null &&
182
- this.eVerdadeiro(await this.avaliar(cloneDeclaracao.condicao))) {
183
- escopoAtual.emLacoRepeticao = true;
184
- const resultadoBloco = this.executarBloco(corpoExecucao.declaracoes);
185
- return resultadoBloco;
186
- }
187
- escopoAtual.emLacoRepeticao = false;
188
- return null;
189
- default:
190
- let retornoExecucao;
191
- while (!(retornoExecucao instanceof quebras_1.Quebra) && !this.pontoDeParadaAtivo) {
192
- if (cloneDeclaracao.condicao !== null &&
193
- !this.eVerdadeiro(await this.avaliar(cloneDeclaracao.condicao))) {
194
- break;
195
- }
196
- try {
197
- retornoExecucao = await this.executar(corpoExecucao);
198
- if (retornoExecucao instanceof quebras_1.SustarQuebra) {
199
- return null;
200
- }
201
- if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
202
- retornoExecucao = null;
203
- }
204
- }
205
- catch (erro) {
206
- return Promise.reject(erro);
207
- }
208
- }
209
- // escopoAtual.emLacoRepeticao = false;
210
- return retornoExecucao;
211
- }
212
- }
213
- /**
214
- * Ao executar um retorno, manter o valor retornado no Interpretador para
215
- * uso por linhas que foram executadas com o comando `próximo` do depurador.
216
- * @param declaracao Uma declaracao Retorna
217
- * @returns O resultado da execução da visita.
218
- */
219
- async visitarExpressaoRetornar(declaracao) {
220
- const retorno = await super.visitarExpressaoRetornar(declaracao);
221
- // O escopo atual é marcado como finalizado, para notificar a
222
- // instrução de que deve ser descartado.
223
- const escopoAtual = this.pilhaEscoposExecucao.topoDaPilha();
224
- escopoAtual.finalizado = true;
225
- // Acha o primeiro escopo de função.
226
- const escopoFuncao = this.pilhaEscoposExecucao.obterEscopoPorTipo('funcao');
227
- if (escopoFuncao === undefined) {
228
- return Promise.reject('retorna() chamado fora de execução de função.');
229
- }
230
- if (escopoFuncao.idChamada !== undefined) {
231
- escopoAtual.espacoMemoria.resolucoesChamadas[escopoFuncao.idChamada] =
232
- retorno && retorno.hasOwnProperty('valor') ? retorno.valor : retorno;
233
- }
234
- return retorno;
235
- }
236
- /**
237
- * Se bloco de execução já foi instanciado antes (por exemplo, quando há um ponto de parada e a
238
- * execução do código é retomada pelo depurador), retoma a execução do bloco do ponto em que havia parado.
239
- * Se bloco de execução ainda não foi instanciado, empilha declarações na pilha de escopos de execução,
240
- * cria um novo ambiente e executa as declarações empilhadas.
241
- * Se depurador comandou uma instrução 'adentrar-escopo', execução do bloco não ocorre, mas
242
- * ponteiros de escopo e execução são atualizados.
243
- * @param declaracoes Um vetor de declaracoes a ser executado.
244
- * @param ambiente O ambiente de execução quando houver, como parâmetros, argumentos, etc.
245
- */
246
- async executarBloco(declaracoes, ambiente) {
247
- // Se o escopo atual não é o último.
248
- if (this.escopoAtual < this.pilhaEscoposExecucao.elementos() - 1) {
249
- this.escopoAtual++;
250
- const proximoEscopo = this.pilhaEscoposExecucao.naPosicao(this.escopoAtual);
251
- let retornoExecucao;
252
- // Sempre executa a próxima instrução, mesmo que haja ponto de parada.
253
- retornoExecucao = await this.executar(proximoEscopo.declaracoes[proximoEscopo.declaracaoAtual]);
254
- proximoEscopo.declaracaoAtual++;
255
- for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
256
- proximoEscopo.declaracaoAtual < proximoEscopo.declaracoes.length; proximoEscopo.declaracaoAtual++) {
257
- this.pontoDeParadaAtivo = this.verificarPontoParada(proximoEscopo.declaracoes[proximoEscopo.declaracaoAtual]);
258
- if (this.pontoDeParadaAtivo) {
259
- this.avisoPontoParadaAtivado();
260
- break;
261
- }
262
- retornoExecucao = await this.executar(proximoEscopo.declaracoes[proximoEscopo.declaracaoAtual]);
263
- // Um ponto de parada ativo pode ter vindo de um escopo mais interno.
264
- // Por isso verificamos outra parada aqui para evitar que
265
- // `this.declaracaoAtual` seja incrementado.
266
- if (this.pontoDeParadaAtivo) {
267
- this.avisoPontoParadaAtivado();
268
- break;
269
- }
270
- }
271
- this.pilhaEscoposExecucao.removerUltimo();
272
- this.escopoAtual--;
273
- return retornoExecucao;
274
- }
275
- else {
276
- this.abrirNovoBlocoEscopo(declaracoes, ambiente, this.proximoEscopo || 'outro');
277
- const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
278
- if (this.idChamadaAtual) {
279
- ultimoEscopo.idChamada = this.idChamadaAtual;
280
- this.idChamadaAtual = undefined;
281
- }
282
- this.proximoEscopo = undefined;
283
- if (this.comando !== 'adentrarEscopo') {
284
- return await this.executarUltimoEscopo();
285
- }
286
- }
287
- }
288
- /**
289
- * Para fins de depuração, verifica se há ponto de parada no mesmo pragma da declaração.
290
- * @param declaracao A declaração a ser executada.
291
- * @returns True quando execução deve parar. False caso contrário.
292
- */
293
- verificarPontoParada(declaracao) {
294
- const buscaPontoParada = this.pontosParada.filter((p) => p.hashArquivo === declaracao.hashArquivo && p.linha === declaracao.linha);
295
- if (buscaPontoParada.length > 0) {
296
- console.log(`Ponto de parada encontrado. Linha: ${declaracao.linha}.`);
297
- return true;
298
- }
299
- return false;
300
- }
301
- /**
302
- * No interpretador com depuração, este método é dividido em dois outros métodos privados:
303
- * - `this.executarUmPassoNoEscopo`, que executa apenas uma instrução e nada mais;
304
- * - `this.executarUltimoEscopoComandoContinuar`, que é a execução trivial de um escopo inteiro,
305
- * ou com todas as instruções, ou até encontrar um ponto de parada.
306
- * @param manterAmbiente Se verdadeiro, junta elementos do último escopo com o escopo
307
- * imediatamente abaixo.
308
- * @param naoVerificarPrimeiraExecucao Booleano que pede ao Interpretador para não
309
- * verificar o ponto de parada na primeira execução.
310
- * Normalmente usado pelo Servidor de Depuração para continuar uma linha.
311
- * @returns O retorno da execução.
312
- */
313
- async executarUltimoEscopo(manterAmbiente = false, naoVerificarPrimeiraExecucao = false) {
314
- switch (this.comando) {
315
- case 'adentrarEscopo':
316
- case 'proximo':
317
- if (!this.executandoChamada) {
318
- return this.executarUmPassoNoEscopo();
319
- }
320
- return this.executarUltimoEscopoComandoContinuar(manterAmbiente, naoVerificarPrimeiraExecucao);
321
- default:
322
- return this.executarUltimoEscopoComandoContinuar(manterAmbiente, naoVerificarPrimeiraExecucao);
323
- }
324
- }
325
- descartarTodosEscoposFinalizados() {
326
- let i = this.pilhaEscoposExecucao.pilha.length - 1;
327
- while (i > 0) {
328
- let ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
329
- if (ultimoEscopo.declaracaoAtual >= ultimoEscopo.declaracoes.length ||
330
- ultimoEscopo.finalizado) {
331
- this.pilhaEscoposExecucao.removerUltimo();
332
- const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
333
- escopoAnterior.espacoMemoria.resolucoesChamadas = Object.assign(escopoAnterior.espacoMemoria.resolucoesChamadas, ultimoEscopo.espacoMemoria.resolucoesChamadas);
334
- this.escopoAtual--;
335
- }
336
- else {
337
- break;
338
- }
339
- i--;
340
- }
341
- }
342
- descartarEscopoPorRetornoFuncao() {
343
- let ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
344
- while (ultimoEscopo.tipo !== 'funcao') {
345
- this.pilhaEscoposExecucao.removerUltimo();
346
- const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
347
- escopoAnterior.espacoMemoria.resolucoesChamadas = Object.assign(escopoAnterior.espacoMemoria.resolucoesChamadas, ultimoEscopo.espacoMemoria.resolucoesChamadas);
348
- this.escopoAtual--;
349
- ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
350
- }
351
- this.pilhaEscoposExecucao.removerUltimo();
352
- const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
353
- escopoAnterior.espacoMemoria.resolucoesChamadas = Object.assign(escopoAnterior.espacoMemoria.resolucoesChamadas, ultimoEscopo.espacoMemoria.resolucoesChamadas);
354
- this.escopoAtual--;
355
- }
356
- async executarUmPassoNoEscopo() {
357
- const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
358
- let retornoExecucao;
359
- if (this.passos > 0) {
360
- this.passos--;
361
- retornoExecucao = await this.executar(ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual]);
362
- if (!this.pontoDeParadaAtivo && !ultimoEscopo.emLacoRepeticao) {
363
- ultimoEscopo.declaracaoAtual++;
364
- }
365
- if (ultimoEscopo.declaracaoAtual >= ultimoEscopo.declaracoes.length ||
366
- ultimoEscopo.finalizado) {
367
- if (retornoExecucao instanceof quebras_1.RetornoQuebra) {
368
- this.descartarEscopoPorRetornoFuncao();
369
- }
370
- else {
371
- this.descartarTodosEscoposFinalizados();
372
- }
373
- }
374
- if (this.pilhaEscoposExecucao.elementos() === 1) {
375
- this.finalizacaoDaExecucao();
376
- }
377
- }
378
- return retornoExecucao;
379
- }
380
- /**
381
- * Continua a interpretação parcial do último ponto em que parou.
382
- * Pode ser tanto o começo da execução inteira, ou pós comando do depurador
383
- * quando há um ponto de parada.
384
- * @param manterAmbiente Se verdadeiro, junta elementos do último escopo com o escopo
385
- * imediatamente abaixo.
386
- * @param naoVerificarPrimeiraExecucao Booleano que pede ao Interpretador para não
387
- * verificar o ponto de parada na primeira execução.
388
- * Normalmente usado pelo Servidor de Depuração para continuar uma linha.
389
- * @returns Um objeto de retorno, com erros encontrados se houverem.
390
- */
391
- async executarUltimoEscopoComandoContinuar(manterAmbiente = false, naoVerificarPrimeiraExecucao = false) {
392
- const ultimoEscopo = this.pilhaEscoposExecucao.topoDaPilha();
393
- let retornoExecucao;
394
- try {
395
- for (; !(retornoExecucao instanceof quebras_1.Quebra) &&
396
- ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length; ultimoEscopo.declaracaoAtual++) {
397
- if (naoVerificarPrimeiraExecucao) {
398
- naoVerificarPrimeiraExecucao = false;
399
- }
400
- else {
401
- this.pontoDeParadaAtivo = this.verificarPontoParada(ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual]);
402
- if (this.pontoDeParadaAtivo) {
403
- this.avisoPontoParadaAtivado();
404
- break;
405
- }
406
- }
407
- const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
408
- this.linhaDeclaracaoAtual = declaracaoAtual.linha;
409
- this.hashArquivoDeclaracaoAtual = declaracaoAtual.hashArquivo;
410
- retornoExecucao = await this.executar(declaracaoAtual);
411
- // Um ponto de parada ativo pode ter vindo de um escopo mais interno.
412
- // Por isso verificamos outra parada aqui para evitar que
413
- // `this.declaracaoAtual` seja incrementado.
414
- if (this.pontoDeParadaAtivo) {
415
- this.avisoPontoParadaAtivado();
416
- break;
417
- }
418
- }
419
- return retornoExecucao;
420
- }
421
- catch (erro) {
422
- this.erros.push(erro);
423
- }
424
- finally {
425
- if (!this.pontoDeParadaAtivo && this.comando !== 'adentrarEscopo') {
426
- const escopoFinalizado = this.pilhaEscoposExecucao.removerUltimo();
427
- const escopoAnterior = this.pilhaEscoposExecucao.topoDaPilha();
428
- escopoAnterior.espacoMemoria.resolucoesChamadas = Object.assign(escopoAnterior.espacoMemoria.resolucoesChamadas, ultimoEscopo.espacoMemoria.resolucoesChamadas);
429
- this.montao.excluirReferencias(...escopoFinalizado.espacoMemoria.enderecosMontao);
430
- if (manterAmbiente) {
431
- escopoAnterior.espacoMemoria.valores = Object.assign(escopoAnterior.espacoMemoria.valores, ultimoEscopo.espacoMemoria.valores);
432
- }
433
- this.escopoAtual--;
434
- }
435
- if (this.pilhaEscoposExecucao.elementos() === 1) {
436
- this.finalizacaoDaExecucao();
437
- }
438
- }
439
- }
440
- /**
441
- * Continua a interpretação, conforme comando do depurador.
442
- * Quando um ponto de parada é ativado, a pilha de execução do TypeScript é perdida.
443
- * Esse método cria uma nova pilha de execução do lado do JS, começando do último elemento executado do
444
- * primeiro escopo, subindo até o último elemento executado do último escopo.
445
- * Se entre escopos houver ponto de parada ativo, a execução é suspensa até o próximo comando
446
- * do desenvolvedor.
447
- * @see executarUltimoEscopo
448
- */
449
- async instrucaoContinuarInterpretacao(escopo = 1) {
450
- let retornoExecucao;
451
- if (escopo < this.escopoAtual) {
452
- retornoExecucao = await this.instrucaoContinuarInterpretacao(escopo + 1);
453
- }
454
- if (this.pontoDeParadaAtivo) {
455
- return;
456
- }
457
- await this.executarUltimoEscopoComandoContinuar(false, true);
458
- }
459
- /**
460
- * Empilha um escopo se for possível.
461
- * Se não for, apenas executa a instrução corrente.
462
- */
463
- async adentrarEscopo() {
464
- throw new Error('Método não implementado.');
465
- }
466
- /**
467
- * Interpreta apenas uma instrução a partir do ponto de parada ativo, conforme comando do depurador.
468
- * Esse método cria uma nova pilha de execução do lado do JS, começando do último elemento executado do
469
- * primeiro escopo, subindo até o último elemento executado do último escopo.
470
- * @param escopo Indica o escopo a ser visitado. Usado para construir uma pilha de chamadas do lado JS.
471
- */
472
- async instrucaoPasso(escopo = 1) {
473
- this.passos = 1;
474
- const escopoVisitado = this.pilhaEscoposExecucao.naPosicao(escopo);
475
- if (escopo < this.escopoAtual) {
476
- await this.instrucaoPasso(escopo + 1);
477
- }
478
- else {
479
- if (escopoVisitado.declaracaoAtual >= escopoVisitado.declaracoes.length ||
480
- escopoVisitado.finalizado) {
481
- this.pilhaEscoposExecucao.removerUltimo();
482
- }
483
- if (this.pilhaEscoposExecucao.elementos() === 1) {
484
- return this.finalizacaoDaExecucao();
485
- }
486
- await this.executarUmPassoNoEscopo();
487
- }
488
- }
489
- /**
490
- * Interpreta restante do bloco de execução em que o ponto de parada está, conforme comando do depurador.
491
- * Se houver outros pontos de parada no mesmo escopo à frente da instrução atual, todos são ignorados.
492
- * @param escopo Indica o escopo a ser visitado. Usado para construir uma pilha de chamadas do lado JS.
493
- */
494
- async instrucaoProximoESair() {
495
- this.executarUltimoEscopoComandoContinuar(false, true);
496
- }
497
- /**
498
- * Prepara a pilha de escopos para uma situação de depuração.
499
- * Não há execução de código neste caso.
500
- * @param declaracoes Um vetor de declarações.
501
- */
502
- prepararParaDepuracao(declaracoes) {
503
- this.declaracoes = declaracoes;
504
- this.abrirNovoBlocoEscopo(declaracoes);
505
- }
506
- abrirNovoBlocoEscopo(declaracoes, ambiente, tipoEscopo = 'outro') {
507
- const escopoExecucao = {
508
- declaracoes: declaracoes,
509
- declaracaoAtual: 0,
510
- espacoMemoria: ambiente || new espaco_memoria_1.EspacoMemoria(),
511
- finalizado: false,
512
- tipo: tipoEscopo,
513
- emLacoRepeticao: false,
514
- };
515
- this.pilhaEscoposExecucao.empilhar(escopoExecucao);
516
- this.escopoAtual++;
517
- }
518
- /**
519
- * Interpretação utilizada pelo depurador para avaliar valores de variáveis.
520
- * Diferentemente da interpretação tradicional, não possui indicadores
521
- * de performance porque eles não fazem sentido aqui.
522
- * @param declaracoes Um vetor de declarações.
523
- * @returns Um objeto de retorno, com erros encontrados se houverem.
524
- */
525
- async interpretar(declaracoes, manterAmbiente = false) {
526
- this.erros = [];
527
- this.declaracoes = declaracoes;
528
- this.linhaDeclaracaoAtual = -1;
529
- this.hashArquivoDeclaracaoAtual = -1;
530
- this.abrirNovoBlocoEscopo(declaracoes);
531
- const resultado = await super.executarUltimoEscopo(manterAmbiente);
532
- // Corrigir contador de escopos
533
- this.escopoAtual--;
534
- const retorno = {
535
- erros: this.erros,
536
- // resultado: this.resultadoInterpretador // Removido para simplificar `this.executar()`.
537
- resultado: [resultado],
538
- };
539
- this.resultadoInterpretador = [];
540
- return retorno;
541
- }
542
- /**
543
- * Obtém o valor de uma variável por nome.
544
- * Em versões anteriores, o mecanismo de avaliação fazia toda a avaliação tradicional,
545
- * passando por Lexador, Avaliador Sintático e Interpretador.
546
- * Isso tem sua cota de problemas, sobretudo porque a avaliação insere e descarta escopos,
547
- * entrando em condição de corrida com a interpretação com depuração.
548
- * @param nome O nome da variável.
549
- */
550
- obterVariavel(nome) {
551
- const valorOuVariavel = this.pilhaEscoposExecucao.obterValorVariavel({
552
- lexema: nome,
553
- });
554
- return valorOuVariavel.hasOwnProperty('valor')
555
- ? valorOuVariavel
556
- : {
557
- valor: valorOuVariavel,
558
- tipo: (0, inferenciador_1.inferirTipoVariavel)(valorOuVariavel),
559
- };
560
- }
561
- }
562
- exports.InterpretadorComDepuracao = InterpretadorComDepuracao;
563
- //# sourceMappingURL=interpretador-com-depuracao.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interpretador-com-depuracao.js","sourceRoot":"","sources":["../../fontes/interpretador/interpretador-com-depuracao.ts"],"names":[],"mappings":"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"}