@designliquido/delegua 0.20.13 → 0.20.15

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 (173) hide show
  1. package/bin/package.json +1 -1
  2. package/fontes/analisador-semantico/analisador-semantico.d.ts +1 -1
  3. package/fontes/analisador-semantico/analisador-semantico.js +1 -1
  4. package/fontes/analisador-semantico/analisador-semantico.js.map +1 -1
  5. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  6. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +2 -2
  7. package/fontes/avaliador-sintatico/avaliador-sintatico.js +3 -3
  8. package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  9. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +34 -14
  10. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +2 -0
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +7 -5
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  14. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +1 -1
  15. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js.map +1 -1
  16. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +1 -1
  17. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
  18. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.d.ts +1 -1
  19. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js +9 -9
  20. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js.map +1 -1
  21. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +1 -1
  22. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  23. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js +1 -1
  24. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js.map +1 -1
  25. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-potigol.d.ts +20 -0
  26. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-potigol.js +96 -0
  27. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-potigol.js.map +1 -0
  28. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.d.ts +1 -1
  29. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +3 -3
  30. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +1 -1
  31. package/fontes/avaliador-sintatico/dialetos/index.d.ts +1 -0
  32. package/fontes/avaliador-sintatico/dialetos/index.js +1 -0
  33. package/fontes/avaliador-sintatico/dialetos/index.js.map +1 -1
  34. package/fontes/avaliador-sintatico/index.d.ts +1 -0
  35. package/fontes/avaliador-sintatico/index.js +1 -0
  36. package/fontes/avaliador-sintatico/index.js.map +1 -1
  37. package/fontes/avaliador-sintatico/micro-avaliador-sintatico.d.ts +36 -0
  38. package/fontes/avaliador-sintatico/micro-avaliador-sintatico.js +286 -0
  39. package/fontes/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -0
  40. package/fontes/bibliotecas/primitivas-vetor.js +5 -5
  41. package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
  42. package/fontes/construtos/{atribuicao-sobrescrita.d.ts → atribuicao-por-indice.d.ts} +1 -1
  43. package/fontes/construtos/{atribuicao-sobrescrita.js → atribuicao-por-indice.js} +5 -5
  44. package/fontes/construtos/atribuicao-por-indice.js.map +1 -0
  45. package/fontes/construtos/index.d.ts +1 -1
  46. package/fontes/construtos/index.js +1 -1
  47. package/fontes/construtos/index.js.map +1 -1
  48. package/fontes/construtos/literal.js +1 -1
  49. package/fontes/construtos/literal.js.map +1 -1
  50. package/fontes/interfaces/resolvedor-interface.d.ts +1 -1
  51. package/fontes/interfaces/visitante-comum-interface.d.ts +1 -1
  52. package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +32 -11
  53. package/fontes/interpretador/dialetos/birl/interpretador-birl.js +267 -28
  54. package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
  55. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +1 -1
  56. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +1 -1
  57. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  58. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +1 -1
  59. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +1 -1
  60. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  61. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +1 -1
  62. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +2 -2
  63. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  64. package/fontes/interpretador/inferenciador.js.map +1 -1
  65. package/fontes/interpretador/interpretador-base.d.ts +6 -2
  66. package/fontes/interpretador/interpretador-base.js +28 -19
  67. package/fontes/interpretador/interpretador-base.js.map +1 -1
  68. package/fontes/lexador/dialetos/index.d.ts +1 -0
  69. package/fontes/lexador/dialetos/index.js +1 -0
  70. package/fontes/lexador/dialetos/index.js.map +1 -1
  71. package/fontes/lexador/dialetos/lexador-birl.js +14 -2
  72. package/fontes/lexador/dialetos/lexador-birl.js.map +1 -1
  73. package/fontes/lexador/dialetos/lexador-egua-classico.js +2 -2
  74. package/fontes/lexador/dialetos/lexador-egua-classico.js.map +1 -1
  75. package/fontes/lexador/dialetos/lexador-eguap.js +3 -3
  76. package/fontes/lexador/dialetos/lexador-eguap.js.map +1 -1
  77. package/fontes/lexador/dialetos/lexador-guarani.js +2 -2
  78. package/fontes/lexador/dialetos/lexador-guarani.js.map +1 -1
  79. package/fontes/lexador/dialetos/lexador-mapler.js +3 -3
  80. package/fontes/lexador/dialetos/lexador-mapler.js.map +1 -1
  81. package/fontes/lexador/dialetos/lexador-portugol-ipt.js +3 -3
  82. package/fontes/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  83. package/fontes/lexador/dialetos/lexador-portugol-studio.js +3 -2
  84. package/fontes/lexador/dialetos/lexador-portugol-studio.js.map +1 -1
  85. package/fontes/lexador/dialetos/lexador-potigol.d.ts +11 -0
  86. package/fontes/lexador/dialetos/lexador-potigol.js +254 -0
  87. package/fontes/lexador/dialetos/lexador-potigol.js.map +1 -0
  88. package/fontes/lexador/dialetos/lexador-visualg.js +3 -3
  89. package/fontes/lexador/dialetos/lexador-visualg.js.map +1 -1
  90. package/fontes/lexador/dialetos/palavras-reservadas/birl.d.ts +1 -2
  91. package/fontes/lexador/dialetos/palavras-reservadas/birl.js +2 -1
  92. package/fontes/lexador/dialetos/palavras-reservadas/birl.js.map +1 -1
  93. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.d.ts +2 -6
  94. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js +4 -6
  95. package/fontes/lexador/dialetos/palavras-reservadas/egua-classico.js.map +1 -1
  96. package/fontes/lexador/dialetos/palavras-reservadas/guarani.d.ts +1 -2
  97. package/fontes/lexador/dialetos/palavras-reservadas/guarani.js +2 -1
  98. package/fontes/lexador/dialetos/palavras-reservadas/guarani.js.map +1 -1
  99. package/fontes/lexador/dialetos/palavras-reservadas/index.d.ts +3 -3
  100. package/fontes/lexador/dialetos/palavras-reservadas/index.js +7 -17
  101. package/fontes/lexador/dialetos/palavras-reservadas/index.js.map +1 -1
  102. package/fontes/lexador/dialetos/palavras-reservadas/mapler.d.ts +1 -2
  103. package/fontes/lexador/dialetos/palavras-reservadas/mapler.js +2 -1
  104. package/fontes/lexador/dialetos/palavras-reservadas/mapler.js.map +1 -1
  105. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +1 -2
  106. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.js +2 -1
  107. package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.js.map +1 -1
  108. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.d.ts +1 -2
  109. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js +2 -1
  110. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js.map +1 -1
  111. package/fontes/lexador/dialetos/palavras-reservadas/potigol.d.ts +10 -0
  112. package/fontes/lexador/dialetos/palavras-reservadas/potigol.js +18 -0
  113. package/fontes/lexador/dialetos/palavras-reservadas/potigol.js.map +1 -0
  114. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.d.ts +1 -2
  115. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js +2 -1
  116. package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js.map +1 -1
  117. package/fontes/lexador/dialetos/palavras-reservadas/visualg.d.ts +1 -2
  118. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +2 -1
  119. package/fontes/lexador/dialetos/palavras-reservadas/visualg.js.map +1 -1
  120. package/fontes/lexador/index.d.ts +1 -0
  121. package/fontes/lexador/index.js +1 -0
  122. package/fontes/lexador/index.js.map +1 -1
  123. package/fontes/lexador/lexador.js +2 -2
  124. package/fontes/lexador/lexador.js.map +1 -1
  125. package/fontes/lexador/micro-lexador.d.ts +29 -0
  126. package/fontes/lexador/micro-lexador.js +208 -0
  127. package/fontes/lexador/micro-lexador.js.map +1 -0
  128. package/fontes/lexador/palavras-reservadas.d.ts +9 -2
  129. package/fontes/lexador/palavras-reservadas.js +10 -1
  130. package/fontes/lexador/palavras-reservadas.js.map +1 -1
  131. package/fontes/tipos-de-simbolos/birl.d.ts +18 -2
  132. package/fontes/tipos-de-simbolos/birl.js +18 -2
  133. package/fontes/tipos-de-simbolos/birl.js.map +1 -1
  134. package/fontes/tipos-de-simbolos/egua-classico.d.ts +0 -2
  135. package/fontes/tipos-de-simbolos/egua-classico.js +0 -2
  136. package/fontes/tipos-de-simbolos/egua-classico.js.map +1 -1
  137. package/fontes/tipos-de-simbolos/microgramaticas/delegua.d.ts +46 -0
  138. package/fontes/tipos-de-simbolos/microgramaticas/delegua.js +48 -0
  139. package/fontes/tipos-de-simbolos/microgramaticas/delegua.js.map +1 -0
  140. package/fontes/tipos-de-simbolos/potigol.d.ts +27 -0
  141. package/fontes/tipos-de-simbolos/potigol.js +29 -0
  142. package/fontes/tipos-de-simbolos/potigol.js.map +1 -0
  143. package/fontes/tradutores/index.d.ts +3 -0
  144. package/fontes/tradutores/index.js +3 -0
  145. package/fontes/tradutores/index.js.map +1 -1
  146. package/fontes/tradutores/python/python3-lexer.d.ts +5 -5
  147. package/fontes/tradutores/python/python3-lexer.js +567 -841
  148. package/fontes/tradutores/python/python3-lexer.js.map +1 -1
  149. package/fontes/tradutores/python/python3-listener.d.ts +184 -173
  150. package/fontes/tradutores/python/python3-listener.js +1 -0
  151. package/fontes/tradutores/python/python3-listener.js.map +1 -1
  152. package/fontes/tradutores/python/python3-parser.d.ts +85 -73
  153. package/fontes/tradutores/python/python3-parser.js +1485 -1415
  154. package/fontes/tradutores/python/python3-parser.js.map +1 -1
  155. package/fontes/tradutores/python/python3-visitor.d.ts +94 -87
  156. package/fontes/tradutores/python/python3-visitor.js +1 -0
  157. package/fontes/tradutores/python/python3-visitor.js.map +1 -1
  158. package/fontes/tradutores/tradutor-javascript.d.ts +5 -5
  159. package/fontes/tradutores/tradutor-javascript.js +8 -8
  160. package/fontes/tradutores/tradutor-javascript.js.map +1 -1
  161. package/fontes/tradutores/tradutor-portugol-ipt.d.ts +21 -0
  162. package/fontes/tradutores/tradutor-portugol-ipt.js +61 -0
  163. package/fontes/tradutores/tradutor-portugol-ipt.js.map +1 -0
  164. package/fontes/tradutores/tradutor-python.d.ts +16 -1
  165. package/fontes/tradutores/tradutor-python.js +41 -28
  166. package/fontes/tradutores/tradutor-python.js.map +1 -1
  167. package/fontes/tradutores/tradutor-reverso-python.d.ts +32 -0
  168. package/fontes/tradutores/tradutor-reverso-python.js +72 -0
  169. package/fontes/tradutores/tradutor-reverso-python.js.map +1 -0
  170. package/fontes/tradutores/tradutor-visualg.js +8 -8
  171. package/fontes/tradutores/tradutor-visualg.js.map +1 -1
  172. package/package.json +1 -1
  173. package/fontes/construtos/atribuicao-sobrescrita.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"micro-avaliador-sintatico.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/micro-avaliador-sintatico.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ exports.default = {
38
38
  }
39
39
  return vetor;
40
40
  }
41
- return vetor.sort();
41
+ return vetor.sort((a, b) => a - b);
42
42
  },
43
43
  remover: (interpretador, vetor, elemento) => {
44
44
  const index = vetor.indexOf(elemento);
@@ -47,12 +47,12 @@ exports.default = {
47
47
  return Promise.resolve(vetor);
48
48
  },
49
49
  removerPrimeiro: (interpretador, vetor) => {
50
- vetor.shift();
51
- return Promise.resolve(vetor);
50
+ let elemento = vetor.shift();
51
+ return Promise.resolve(elemento);
52
52
  },
53
53
  removerUltimo: (interpretador, vetor) => {
54
- vetor.pop();
55
- return Promise.resolve(vetor);
54
+ let elemento = vetor.pop();
55
+ return Promise.resolve(elemento);
56
56
  },
57
57
  somar: (interpretador, vetor) => Promise.resolve(vetor.reduce((a, b) => a + b)),
58
58
  tamanho: (interpretador, vetor) => Promise.resolve(vetor.length),
@@ -1 +1 @@
1
- {"version":3,"file":"primitivas-vetor.js","sourceRoot":"","sources":["../../../fontes/bibliotecas/primitivas-vetor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitivas-vetor.js","sourceRoot":"","sources":["../../../fontes/bibliotecas/primitivas-vetor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { VisitanteComumInterface } from '../interfaces';
2
2
  import { Construto } from './construto';
3
- export declare class AtribuicaoSobrescrita implements Construto {
3
+ export declare class AtribuicaoPorIndice implements Construto {
4
4
  linha: number;
5
5
  hashArquivo: number;
6
6
  objeto: any;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AtribuicaoSobrescrita = void 0;
4
- class AtribuicaoSobrescrita {
3
+ exports.AtribuicaoPorIndice = void 0;
4
+ class AtribuicaoPorIndice {
5
5
  constructor(hashArquivo, linha, objeto, indice, valor) {
6
6
  this.linha = linha;
7
7
  this.hashArquivo = hashArquivo;
@@ -10,8 +10,8 @@ class AtribuicaoSobrescrita {
10
10
  this.valor = valor;
11
11
  }
12
12
  async aceitar(visitante) {
13
- return await visitante.visitarExpressaoAtribuicaoSobrescrita(this);
13
+ return await visitante.visitarExpressaoAtribuicaoPorIndice(this);
14
14
  }
15
15
  }
16
- exports.AtribuicaoSobrescrita = AtribuicaoSobrescrita;
17
- //# sourceMappingURL=atribuicao-sobrescrita.js.map
16
+ exports.AtribuicaoPorIndice = AtribuicaoPorIndice;
17
+ //# sourceMappingURL=atribuicao-por-indice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atribuicao-por-indice.js","sourceRoot":"","sources":["../../../fontes/construtos/atribuicao-por-indice.ts"],"names":[],"mappings":";;;AAGA,MAAa,mBAAmB;IAQ5B,YAAY,WAAmB,EAAE,KAAa,EAAE,MAAW,EAAE,MAAW,EAAE,KAAU;QAChF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAkC;QAC5C,OAAO,MAAM,SAAS,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;CACJ;AApBD,kDAoBC"}
@@ -1,4 +1,4 @@
1
- export * from './atribuicao-sobrescrita';
1
+ export * from './atribuicao-por-indice';
2
2
  export * from './atribuir';
3
3
  export * from './binario';
4
4
  export * from './chamada';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./atribuicao-sobrescrita"), exports);
17
+ __exportStar(require("./atribuicao-por-indice"), exports);
18
18
  __exportStar(require("./atribuir"), exports);
19
19
  __exportStar(require("./binario"), exports);
20
20
  __exportStar(require("./chamada"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/construtos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,6CAA2B;AAC3B,uDAAqC;AACrC,2CAAyB;AACzB,kDAAgC;AAChC,gDAA8B;AAC9B,yCAAuB;AACvB,4CAA0B;AAC1B,2CAAyB;AACzB,2DAAyC;AACzC,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/construtos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,6CAA2B;AAC3B,uDAAqC;AACrC,2CAAyB;AACzB,kDAAgC;AAChC,gDAA8B;AAC9B,yCAAuB;AACvB,4CAA0B;AAC1B,2CAAyB;AACzB,2DAAyC;AACzC,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB"}
@@ -8,7 +8,7 @@ class Literal {
8
8
  this.valor = valor;
9
9
  }
10
10
  async aceitar(visitante) {
11
- return Promise.resolve(visitante.visitarExpressaoLiteral(this));
11
+ return await visitante.visitarExpressaoLiteral(this);
12
12
  }
13
13
  }
14
14
  exports.Literal = Literal;
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../fontes/construtos/literal.ts"],"names":[],"mappings":";;;AAKA,MAAa,OAAO;IAMhB,YAAY,WAAmB,EAAE,KAAa,EAAE,KAAmB;QAC/D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAkC;QAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;CACJ;AAhBD,0BAgBC"}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../fontes/construtos/literal.ts"],"names":[],"mappings":";;;AAKA,MAAa,OAAO;IAMhB,YAAY,WAAmB,EAAE,KAAa,EAAE,KAAmB;QAC/D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAkC;QAC5C,OAAO,MAAM,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;CACJ;AAhBD,0BAgBC"}
@@ -32,7 +32,7 @@ export interface ResolvedorInterface {
32
32
  visitarExpressaoAcessoIndiceVariavel(expressao: any): any;
33
33
  visitarExpressaoContinua(declaracao?: any): any;
34
34
  visitarExpressaoSustar(declaracao?: any): any;
35
- visitarExpressaoAtribuicaoSobrescrita(expressao?: any): any;
35
+ visitarExpressaoAtribuicaoPorIndice(expressao?: any): any;
36
36
  visitarExpressaoLiteral(expressao?: any): any;
37
37
  visitarExpressaoLogica(expressao?: any): any;
38
38
  visitarExpressaoUnaria(expressao?: any): any;
@@ -33,7 +33,7 @@ export interface VisitanteComumInterface {
33
33
  visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
34
34
  visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
35
35
  visitarExpressaoDeleguaFuncao(expressao: any): any;
36
- visitarExpressaoAtribuicaoSobrescrita(expressao: any): Promise<any>;
36
+ visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
37
37
  visitarExpressaoAcessoIndiceVariavel(expressao: any): any;
38
38
  visitarExpressaoDefinirValor(expressao: any): any;
39
39
  visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): any;
@@ -1,7 +1,7 @@
1
- import { Construto, Atribuir, Literal, FimPara, FormatacaoEscrita, Super } from '../../../construtos';
1
+ import { Construto, Atribuir, Literal, FimPara, FormatacaoEscrita, Super, Variavel, Unario } from '../../../construtos';
2
2
  import { Declaracao, Expressao, Leia, Para, ParaCada, Se, Fazer, Escolha, Tente, Enquanto, Importar, Escreva, EscrevaMesmaLinha, Bloco, Var, Const, Continua, Sustar, Retorna, FuncaoDeclaracao, Classe } from '../../../declaracoes';
3
3
  import { EspacoVariaveis } from '../../../espaco-variaveis';
4
- import { InterpretadorInterface } from '../../../interfaces';
4
+ import { InterpretadorInterface, SimboloInterface, VariavelInterface } from '../../../interfaces';
5
5
  import { ErroInterpretador } from '../../../interfaces/erros/erro-interpretador';
6
6
  import { PilhaEscoposExecucaoInterface } from '../../../interfaces/pilha-escopos-execucao-interface';
7
7
  import { RetornoInterpretador } from '../../../interfaces/retornos';
@@ -18,13 +18,34 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
18
18
  regexInterpolacao: RegExp;
19
19
  constructor(diretorioBase: string, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function);
20
20
  avaliar(expressao: Construto | Declaracao): Promise<any>;
21
+ /**
22
+ * Empilha declarações na pilha de escopos de execução, cria um novo ambiente e
23
+ * executa as declarações empilhadas.
24
+ * Se o retorno do último bloco foi uma exceção (normalmente um erro em tempo de execução),
25
+ * atira a exceção daqui.
26
+ * Isso é usado, por exemplo, em blocos tente ... pegue ... finalmente.
27
+ * @param declaracoes Um vetor de declaracoes a ser executado.
28
+ * @param ambiente O ambiente de execução quando houver, como parâmetros, argumentos, etc.
29
+ */
21
30
  executarBloco(declaracoes: Declaracao[], ambiente?: EspacoVariaveis): Promise<any>;
22
31
  visitarExpressaoAgrupamento(expressao: any): Promise<any>;
23
- visitarExpressaoUnaria(expressao: any): void;
24
- visitarExpressaoBinaria(expressao: any): void;
32
+ protected verificarOperandoNumero(operador: SimboloInterface, operando: any): void;
33
+ visitarExpressaoUnaria(expressao: Unario): Promise<any>;
34
+ protected eIgual(esquerda: VariavelInterface | any, direita: VariavelInterface | any): boolean;
35
+ /**
36
+ * Verifica se operandos são números, que podem ser tanto variáveis puras do JavaScript
37
+ * (neste caso, `number`), ou podem ser variáveis de Delégua com inferência (`VariavelInterface`).
38
+ * @param operador O símbolo do operador.
39
+ * @param direita O operando direito.
40
+ * @param esquerda O operando esquerdo.
41
+ * @returns Se ambos os operandos são números ou não.
42
+ */
43
+ protected verificarOperandosNumeros(operador: SimboloInterface, direita: VariavelInterface | any, esquerda: VariavelInterface | any): void;
44
+ visitarExpressaoBinaria(expressao: any): Promise<any>;
25
45
  visitarExpressaoDeChamada(expressao: any): void;
26
46
  visitarDeclaracaoDeAtribuicao(expressao: Atribuir): void;
27
- visitarExpressaoDeVariavel(expressao: any): void;
47
+ protected procurarVariavel(simbolo: SimboloInterface): any;
48
+ visitarExpressaoDeVariavel(expressao: Variavel): any;
28
49
  visitarDeclaracaoDeExpressao(declaracao: Expressao): void;
29
50
  /**
30
51
  * Execução da leitura de valores da entrada configurada no
@@ -40,11 +61,11 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
40
61
  */
41
62
  private buscarVariaveisInterpolacao;
42
63
  /**
43
- * Retira a interpolação de um texto.
44
- * @param {texto} texto O texto
45
- * @param {any[]} variaveis A lista de variaveis interpoladas
46
- * @returns O texto com o valor das variaveis.
47
- */
64
+ * Retira a interpolação de um texto.
65
+ * @param {texto} texto O texto
66
+ * @param {any[]} variaveis A lista de variaveis interpoladas
67
+ * @returns O texto com o valor das variaveis.
68
+ */
48
69
  private retirarInterpolacao;
49
70
  visitarExpressaoLiteral(expressao: Literal): any;
50
71
  visitarExpressaoLogica(expressao: any): void;
@@ -87,7 +108,7 @@ export declare class InterpretadorBirl implements InterpretadorInterface {
87
108
  visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
88
109
  visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
89
110
  visitarExpressaoDeleguaFuncao(expressao: any): void;
90
- visitarExpressaoAtribuicaoSobrescrita(expressao: any): Promise<any>;
111
+ visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
91
112
  visitarExpressaoAcessoIndiceVariavel(expressao: any): void;
92
113
  visitarExpressaoDefinirValor(expressao: any): void;
93
114
  visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.InterpretadorBirl = void 0;
7
+ const construtos_1 = require("../../../construtos");
4
8
  const espaco_variaveis_1 = require("../../../espaco-variaveis");
5
9
  const estruturas_1 = require("../../../estruturas");
6
10
  const excecoes_1 = require("../../../excecoes");
7
11
  const quebras_1 = require("../../../quebras");
12
+ const inferenciador_1 = require("../../inferenciador");
8
13
  const pilha_escopos_execucao_1 = require("../../pilha-escopos-execucao");
14
+ const birl_1 = __importDefault(require("../../../tipos-de-simbolos/birl"));
9
15
  class InterpretadorBirl {
10
16
  constructor(diretorioBase, funcaoDeRetorno = null, funcaoDeRetornoMesmaLinha = null) {
11
17
  this.funcaoDeRetorno = null;
@@ -24,7 +30,7 @@ class InterpretadorBirl {
24
30
  ambiente: new espaco_variaveis_1.EspacoVariaveis(),
25
31
  finalizado: false,
26
32
  tipo: 'outro',
27
- emLacoRepeticao: false
33
+ emLacoRepeticao: false,
28
34
  };
29
35
  this.pilhaEscoposExecucao.empilhar(escopoExecucao);
30
36
  }
@@ -38,17 +44,199 @@ class InterpretadorBirl {
38
44
  } */
39
45
  return await expressao.aceitar(this);
40
46
  }
41
- executarBloco(declaracoes, ambiente) {
42
- throw new Error('Método não implementado.');
47
+ /**
48
+ * Empilha declarações na pilha de escopos de execução, cria um novo ambiente e
49
+ * executa as declarações empilhadas.
50
+ * Se o retorno do último bloco foi uma exceção (normalmente um erro em tempo de execução),
51
+ * atira a exceção daqui.
52
+ * Isso é usado, por exemplo, em blocos tente ... pegue ... finalmente.
53
+ * @param declaracoes Um vetor de declaracoes a ser executado.
54
+ * @param ambiente O ambiente de execução quando houver, como parâmetros, argumentos, etc.
55
+ */
56
+ async executarBloco(declaracoes, ambiente) {
57
+ const escopoExecucao = {
58
+ declaracoes: declaracoes,
59
+ declaracaoAtual: 0,
60
+ ambiente: ambiente || new espaco_variaveis_1.EspacoVariaveis(),
61
+ finalizado: false,
62
+ tipo: 'outro',
63
+ emLacoRepeticao: false,
64
+ };
65
+ this.pilhaEscoposExecucao.empilhar(escopoExecucao);
66
+ const retornoUltimoEscopo = await this.executarUltimoEscopo();
67
+ if (retornoUltimoEscopo instanceof excecoes_1.ErroEmTempoDeExecucao) {
68
+ return Promise.reject(retornoUltimoEscopo);
69
+ }
70
+ return retornoUltimoEscopo;
43
71
  }
44
72
  visitarExpressaoAgrupamento(expressao) {
45
73
  throw new Error('Método não implementado.');
46
74
  }
47
- visitarExpressaoUnaria(expressao) {
48
- throw new Error('Método não implementado.');
75
+ verificarOperandoNumero(operador, operando) {
76
+ if (typeof operando === 'number' || operando.tipo === 'número')
77
+ return;
78
+ throw new excecoes_1.ErroEmTempoDeExecucao(operador, 'Operando precisa ser um número.', Number(operador.linha));
79
+ }
80
+ async visitarExpressaoUnaria(expressao) {
81
+ const operando = await this.avaliar(expressao.operando);
82
+ let valor = operando.hasOwnProperty('valor') ? operando.valor : operando;
83
+ switch (expressao.operador.tipo) {
84
+ case birl_1.default.SUBTRACAO:
85
+ this.verificarOperandoNumero(expressao.operador, valor);
86
+ return -valor;
87
+ case birl_1.default.NEGACAO:
88
+ return !this.eVerdadeiro(valor);
89
+ case birl_1.default.BIT_NOT:
90
+ return ~valor;
91
+ // Para incrementar e decrementar, primeiro precisamos saber se o operador
92
+ // veio antes do literal ou variável.
93
+ // Se veio antes e o operando é uma variável, precisamos incrementar/decrementar,
94
+ // armazenar o valor da variável pra só então devolver o valor.
95
+ case birl_1.default.INCREMENTAR:
96
+ if (expressao.incidenciaOperador === 'ANTES') {
97
+ valor++;
98
+ if (expressao.operando instanceof construtos_1.Variavel) {
99
+ this.pilhaEscoposExecucao.atribuirVariavel(expressao.operando.simbolo, valor);
100
+ }
101
+ return valor;
102
+ }
103
+ const valorAnteriorIncremento = valor;
104
+ this.pilhaEscoposExecucao.atribuirVariavel(expressao.operando.simbolo, ++valor);
105
+ return valorAnteriorIncremento;
106
+ case birl_1.default.DECREMENTAR:
107
+ if (expressao.incidenciaOperador === 'ANTES') {
108
+ valor--;
109
+ if (expressao.operando instanceof construtos_1.Variavel) {
110
+ this.pilhaEscoposExecucao.atribuirVariavel(expressao.operando.simbolo, valor);
111
+ }
112
+ return valor;
113
+ }
114
+ const valorAnteriorDecremento = valor;
115
+ this.pilhaEscoposExecucao.atribuirVariavel(expressao.operando.simbolo, --valor);
116
+ return valorAnteriorDecremento;
117
+ }
118
+ return null;
49
119
  }
50
- visitarExpressaoBinaria(expressao) {
51
- throw new Error('Método não implementado.');
120
+ eIgual(esquerda, direita) {
121
+ if (esquerda === null && direita === null)
122
+ return true;
123
+ if (esquerda === null)
124
+ return false;
125
+ return esquerda === direita;
126
+ }
127
+ /**
128
+ * Verifica se operandos são números, que podem ser tanto variáveis puras do JavaScript
129
+ * (neste caso, `number`), ou podem ser variáveis de Delégua com inferência (`VariavelInterface`).
130
+ * @param operador O símbolo do operador.
131
+ * @param direita O operando direito.
132
+ * @param esquerda O operando esquerdo.
133
+ * @returns Se ambos os operandos são números ou não.
134
+ */
135
+ verificarOperandosNumeros(operador, direita, esquerda) {
136
+ const tipoDireita = direita.tipo ? direita.tipo : typeof direita === 'number' ? 'número' : String(NaN);
137
+ const tipoEsquerda = esquerda.tipo
138
+ ? esquerda.tipo
139
+ : typeof esquerda === 'number'
140
+ ? 'número'
141
+ : String(NaN);
142
+ if (tipoDireita === 'número' && tipoEsquerda === 'número')
143
+ return;
144
+ throw new excecoes_1.ErroEmTempoDeExecucao(operador, 'Operadores precisam ser números.', operador.linha);
145
+ }
146
+ async visitarExpressaoBinaria(expressao) {
147
+ try {
148
+ const esquerda = await this.avaliar(expressao.esquerda);
149
+ const direita = await this.avaliar(expressao.direita);
150
+ const valorEsquerdo = (esquerda === null || esquerda === void 0 ? void 0 : esquerda.hasOwnProperty('valor')) ? esquerda.valor : esquerda;
151
+ const valorDireito = (direita === null || direita === void 0 ? void 0 : direita.hasOwnProperty('valor')) ? direita.valor : direita;
152
+ const tipoEsquerdo = (esquerda === null || esquerda === void 0 ? void 0 : esquerda.hasOwnProperty('tipo'))
153
+ ? esquerda.tipo
154
+ : (0, inferenciador_1.inferirTipoVariavel)(esquerda);
155
+ const tipoDireito = (direita === null || direita === void 0 ? void 0 : direita.hasOwnProperty('tipo')) ? direita.tipo : (0, inferenciador_1.inferirTipoVariavel)(direita);
156
+ switch (expressao.operador.tipo) {
157
+ case birl_1.default.EXPONENCIACAO:
158
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
159
+ return Math.pow(valorEsquerdo, valorDireito);
160
+ case birl_1.default.MAIOR:
161
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
162
+ return Number(valorEsquerdo) > Number(valorDireito);
163
+ case birl_1.default.MAIOR_IGUAL:
164
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
165
+ return Number(valorEsquerdo) >= Number(valorDireito);
166
+ case birl_1.default.MENOR:
167
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
168
+ return Number(valorEsquerdo) < Number(valorDireito);
169
+ case birl_1.default.MENOR_IGUAL:
170
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
171
+ return Number(valorEsquerdo) <= Number(valorDireito);
172
+ case birl_1.default.SUBTRACAO:
173
+ case birl_1.default.MENOS_IGUAL:
174
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
175
+ return Number(valorEsquerdo) - Number(valorDireito);
176
+ case birl_1.default.ADICAO:
177
+ case birl_1.default.MAIS_IGUAL:
178
+ if (tipoEsquerdo === 'número' && tipoDireito === 'número') {
179
+ return Number(valorEsquerdo) + Number(valorDireito);
180
+ }
181
+ else {
182
+ return String(valorEsquerdo) + String(valorDireito);
183
+ }
184
+ case birl_1.default.DIVISAO:
185
+ case birl_1.default.DIVISAO_IGUAL:
186
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
187
+ return Number(valorEsquerdo) / Number(valorDireito);
188
+ case birl_1.default.DIVISAO_INTEIRA:
189
+ case birl_1.default.DIVISAO_INTEIRA_IGUAL:
190
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
191
+ return Math.floor(Number(valorEsquerdo) / Number(valorDireito));
192
+ case birl_1.default.MULTIPLICACAO:
193
+ case birl_1.default.MULTIPLICACAO_IGUAL:
194
+ if (tipoEsquerdo === 'texto' || tipoDireito === 'texto') {
195
+ // Sem ambos os valores resolvem como texto, multiplica normal.
196
+ // Se apenas um resolve como texto, o outro repete o
197
+ // texto n vezes, sendo n o valor do outro.
198
+ if (tipoEsquerdo === 'texto' && tipoDireito === 'texto') {
199
+ return Number(valorEsquerdo) * Number(valorDireito);
200
+ }
201
+ if (tipoEsquerdo === 'texto') {
202
+ return valorEsquerdo.repeat(Number(valorDireito));
203
+ }
204
+ return valorDireito.repeat(Number(valorEsquerdo));
205
+ }
206
+ return Number(valorEsquerdo) * Number(valorDireito);
207
+ case birl_1.default.MODULO:
208
+ case birl_1.default.MODULO_IGUAL:
209
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
210
+ return Number(valorEsquerdo) % Number(valorDireito);
211
+ case birl_1.default.BIT_AND:
212
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
213
+ return Number(valorEsquerdo) & Number(valorDireito);
214
+ case birl_1.default.BIT_XOR:
215
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
216
+ return Number(valorEsquerdo) ^ Number(valorDireito);
217
+ case birl_1.default.BIT_OR:
218
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
219
+ return Number(valorEsquerdo) | Number(valorDireito);
220
+ case birl_1.default.MENOR_MENOR:
221
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
222
+ return Number(valorEsquerdo) << Number(valorDireito);
223
+ case birl_1.default.MAIOR_MAIOR:
224
+ this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
225
+ return Number(valorEsquerdo) >> Number(valorDireito);
226
+ case birl_1.default.DIFERENTE:
227
+ return !this.eIgual(valorEsquerdo, valorDireito);
228
+ case birl_1.default.IGUAL_IGUAL:
229
+ return this.eIgual(valorEsquerdo, valorDireito);
230
+ }
231
+ }
232
+ catch (erro) {
233
+ this.erros.push({
234
+ erroInterno: erro,
235
+ linha: expressao.linha,
236
+ hashArquivo: expressao.hashArquivo,
237
+ });
238
+ return Promise.reject(erro);
239
+ }
52
240
  }
53
241
  visitarExpressaoDeChamada(expressao) {
54
242
  throw new Error('Método não implementado.');
@@ -56,8 +244,11 @@ class InterpretadorBirl {
56
244
  visitarDeclaracaoDeAtribuicao(expressao) {
57
245
  throw new Error('Método não implementado.');
58
246
  }
247
+ procurarVariavel(simbolo) {
248
+ return this.pilhaEscoposExecucao.obterValorVariavel(simbolo);
249
+ }
59
250
  visitarExpressaoDeVariavel(expressao) {
60
- throw new Error('Método não implementado.');
251
+ return this.procurarVariavel(expressao.simbolo);
61
252
  }
62
253
  visitarDeclaracaoDeExpressao(declaracao) {
63
254
  throw new Error('Método não implementado.');
@@ -90,11 +281,11 @@ class InterpretadorBirl {
90
281
  });
91
282
  }
92
283
  /**
93
- * Retira a interpolação de um texto.
94
- * @param {texto} texto O texto
95
- * @param {any[]} variaveis A lista de variaveis interpoladas
96
- * @returns O texto com o valor das variaveis.
97
- */
284
+ * Retira a interpolação de um texto.
285
+ * @param {texto} texto O texto
286
+ * @param {any[]} variaveis A lista de variaveis interpoladas
287
+ * @returns O texto com o valor das variaveis.
288
+ */
98
289
  retirarInterpolacao(texto, variaveis) {
99
290
  const valoresVariaveis = variaveis.map((v) => ({
100
291
  valorResolvido: this.pilhaEscoposExecucao.obterVariavelPorNome(v.variavel),
@@ -110,17 +301,55 @@ class InterpretadorBirl {
110
301
  return textoFinal;
111
302
  }
112
303
  visitarExpressaoLiteral(expressao) {
113
- if (this.regexInterpolacao.test(expressao.valor)) {
114
- const variaveis = this.buscarVariaveisInterpolacao(expressao.valor);
115
- return this.retirarInterpolacao(expressao.valor, variaveis);
304
+ if (expressao.valor === birl_1.default.ADICAO) {
305
+ return 1;
306
+ }
307
+ else if (expressao.valor === birl_1.default.SUBTRACAO) {
308
+ return -1;
309
+ }
310
+ else {
311
+ return expressao.valor;
116
312
  }
117
- return expressao.valor;
118
313
  }
119
314
  visitarExpressaoLogica(expressao) {
120
315
  throw new Error('Método não implementado.');
121
316
  }
122
- visitarDeclaracaoPara(declaracao) {
123
- throw new Error('Método não implementado.');
317
+ async visitarDeclaracaoPara(declaracao) {
318
+ if (declaracao.inicializador !== null) {
319
+ if (declaracao.inicializador instanceof Array) {
320
+ await this.avaliar(declaracao.inicializador[0]);
321
+ }
322
+ else {
323
+ await this.avaliar(declaracao.inicializador);
324
+ }
325
+ }
326
+ let retornoExecucao;
327
+ while (!(retornoExecucao instanceof quebras_1.Quebra)) {
328
+ if (declaracao.condicao !== null && !this.eVerdadeiro(await this.avaliar(declaracao.condicao))) {
329
+ break;
330
+ }
331
+ try {
332
+ retornoExecucao = await this.executar(declaracao.corpo);
333
+ if (retornoExecucao instanceof quebras_1.SustarQuebra) {
334
+ return null;
335
+ }
336
+ if (retornoExecucao instanceof quebras_1.ContinuarQuebra) {
337
+ retornoExecucao = null;
338
+ }
339
+ }
340
+ catch (erro) {
341
+ this.erros.push({
342
+ erroInterno: erro,
343
+ linha: declaracao.linha,
344
+ hashArquivo: declaracao.hashArquivo,
345
+ });
346
+ return Promise.reject(erro);
347
+ }
348
+ if (declaracao.incrementar !== null) {
349
+ await this.avaliar(declaracao.incrementar);
350
+ }
351
+ }
352
+ return retornoExecucao;
124
353
  }
125
354
  visitarDeclaracaoParaCada(declaracao) {
126
355
  throw new Error('Método não implementado.');
@@ -210,8 +439,8 @@ class InterpretadorBirl {
210
439
  visitarExpressaoEscrevaMesmaLinha(declaracao) {
211
440
  throw new Error('Método não implementado.');
212
441
  }
213
- visitarExpressaoBloco(declaracao) {
214
- throw new Error('Método não implementado.');
442
+ async visitarExpressaoBloco(declaracao) {
443
+ return await this.executarBloco(declaracao.declaracoes);
215
444
  }
216
445
  async avaliacaoDeclaracaoVar(declaracao) {
217
446
  let valorOuOutraVariavel = null;
@@ -258,7 +487,7 @@ class InterpretadorBirl {
258
487
  visitarExpressaoDeleguaFuncao(expressao) {
259
488
  throw new Error('Método não implementado.');
260
489
  }
261
- visitarExpressaoAtribuicaoSobrescrita(expressao) {
490
+ visitarExpressaoAtribuicaoPorIndice(expressao) {
262
491
  throw new Error('Método não implementado.');
263
492
  }
264
493
  visitarExpressaoAcessoIndiceVariavel(expressao) {
@@ -316,14 +545,24 @@ class InterpretadorBirl {
316
545
  * pelo modo LAIR.
317
546
  */
318
547
  async executar(declaracao, mostrarResultado = false) {
319
- const resultado = await declaracao.aceitar(this);
320
- if (mostrarResultado) {
321
- this.funcaoDeRetorno(this.paraTexto(resultado));
548
+ let resultado = null;
549
+ // Tratar caso Bloco
550
+ if (declaracao instanceof Array) {
551
+ for (const decl of declaracao) {
552
+ resultado = await this.executar(decl, mostrarResultado);
553
+ }
554
+ return resultado;
322
555
  }
323
- if (resultado || typeof resultado === 'boolean') {
324
- this.resultadoInterpretador.push(this.paraTexto(resultado));
556
+ else {
557
+ resultado = await declaracao.aceitar(this);
558
+ if (mostrarResultado) {
559
+ this.funcaoDeRetorno(this.paraTexto(resultado));
560
+ }
561
+ if (resultado || typeof resultado === 'boolean') {
562
+ this.resultadoInterpretador.push(this.paraTexto(resultado));
563
+ }
564
+ return resultado;
325
565
  }
326
- return resultado;
327
566
  }
328
567
  /**
329
568
  * Executa o último escopo empilhado no topo na pilha de escopos do interpretador.