@designliquido/delegua 0.7.5 → 0.8.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.
- package/bin/package.json +70 -65
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +63 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +180 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +188 -188
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.d.ts +34 -32
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +154 -148
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.d.ts +7 -6
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js +144 -142
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-eguap.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.d.ts +48 -0
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js +291 -0
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.js.map +1 -0
- package/fontes/construtos/construto.d.ts +1 -0
- package/fontes/construtos/literal.d.ts +2 -2
- package/fontes/construtos/literal.js.map +1 -1
- package/fontes/construtos/super.d.ts +4 -4
- package/fontes/construtos/super.js.map +1 -1
- package/fontes/construtos/vetor.d.ts +3 -3
- package/fontes/construtos/vetor.js.map +1 -1
- package/fontes/declaracoes/bloco.d.ts +2 -2
- package/fontes/declaracoes/bloco.js.map +1 -1
- package/fontes/declaracoes/escolha.d.ts +5 -2
- package/fontes/declaracoes/escolha.js +6 -3
- package/fontes/declaracoes/escolha.js.map +1 -1
- package/fontes/declaracoes/escreva.d.ts +3 -3
- package/fontes/declaracoes/escreva.js.map +1 -1
- package/fontes/declaracoes/index.d.ts +1 -0
- package/fontes/declaracoes/index.js +1 -0
- package/fontes/declaracoes/index.js.map +1 -1
- package/fontes/declaracoes/leia.d.ts +12 -0
- package/fontes/declaracoes/leia.js +37 -0
- package/fontes/declaracoes/leia.js.map +1 -0
- package/fontes/declaracoes/var.d.ts +3 -2
- package/fontes/declaracoes/var.js.map +1 -1
- package/fontes/delegua.d.ts +2 -2
- package/fontes/delegua.js +37 -21
- package/fontes/delegua.js.map +1 -1
- package/fontes/interfaces/avaliador-sintatico-interface.d.ts +3 -5
- package/fontes/interfaces/interpretador-interface.d.ts +8 -7
- package/fontes/interfaces/lexador-interface.d.ts +2 -2
- package/fontes/interpretador/dialetos/egua-classico.d.ts +7 -1
- package/fontes/interpretador/dialetos/egua-classico.js +38 -30
- package/fontes/interpretador/dialetos/egua-classico.js.map +1 -1
- package/fontes/interpretador/interpretador.d.ts +19 -3
- package/fontes/interpretador/interpretador.js +51 -33
- package/fontes/interpretador/interpretador.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-egua-classico.js +35 -35
- package/fontes/lexador/dialetos/lexador-egua-classico.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-eguap.js +35 -35
- package/fontes/lexador/dialetos/lexador-eguap.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-visualg.d.ts +16 -0
- package/fontes/lexador/dialetos/lexador-visualg.js +225 -0
- package/fontes/lexador/dialetos/lexador-visualg.js.map +1 -0
- package/fontes/lexador/dialetos/palavras-reservadas/visualg.d.ts +26 -0
- package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +32 -0
- package/fontes/lexador/dialetos/palavras-reservadas/visualg.js.map +1 -0
- package/fontes/lexador/lexador-base-linha-unica.d.ts +33 -0
- package/fontes/lexador/lexador-base-linha-unica.js +92 -0
- package/fontes/lexador/lexador-base-linha-unica.js.map +1 -0
- package/fontes/lexador/lexador.d.ts +3 -3
- package/fontes/lexador/lexador.js +43 -43
- package/fontes/lexador/lexador.js.map +1 -1
- package/fontes/lexador/palavras-reservadas.js +33 -33
- package/fontes/lexador/palavras-reservadas.js.map +1 -1
- package/fontes/tipos/avaliador-sintatico-egua-e-eguap-classico-returno-tipo.d.ts +5 -0
- package/fontes/tipos/avaliador-sintatico-egua-e-eguap-classico-returno-tipo.js +3 -0
- package/fontes/tipos/avaliador-sintatico-egua-e-eguap-classico-returno-tipo.js.map +1 -0
- package/fontes/tipos-de-simbolos/comum.d.ts +18 -0
- package/fontes/tipos-de-simbolos/comum.js +20 -0
- package/fontes/tipos-de-simbolos/comum.js.map +1 -0
- package/fontes/{tipos-de-simbolos.d.ts → tipos-de-simbolos/delegua.d.ts} +0 -0
- package/fontes/{tipos-de-simbolos.js → tipos-de-simbolos/delegua.js} +1 -1
- package/fontes/tipos-de-simbolos/delegua.js.map +1 -0
- package/fontes/{lexador/dialetos/tipos-de-simbolos-eguap.d.ts → tipos-de-simbolos/eguap.d.ts} +0 -0
- package/fontes/{lexador/dialetos/tipos-de-simbolos-eguap.js → tipos-de-simbolos/eguap.js} +1 -1
- package/fontes/tipos-de-simbolos/eguap.js.map +1 -0
- package/fontes/tipos-de-simbolos/visualg.d.ts +47 -0
- package/fontes/tipos-de-simbolos/visualg.js +49 -0
- package/fontes/tipos-de-simbolos/visualg.js.map +1 -0
- package/package.json +70 -65
- package/testes/avaliador-sintatico.test.js.map +1 -1
- package/testes/egua-classico/avaliador-sintatico.test.js +4 -1
- package/testes/egua-classico/avaliador-sintatico.test.js.map +1 -1
- package/testes/lexador.test.js +45 -45
- package/testes/lexador.test.js.map +1 -1
- package/testes/visualg/avaliador-sintatico.test.d.ts +1 -0
- package/testes/visualg/avaliador-sintatico.test.js +113 -0
- package/testes/visualg/avaliador-sintatico.test.js.map +1 -0
- package/testes/visualg/lexador.test.d.ts +1 -0
- package/testes/visualg/lexador.test.js +67 -0
- package/testes/visualg/lexador.test.js.map +1 -0
- package/fontes/lexador/dialetos/tipos-de-simbolos-eguap.js.map +0 -1
- package/fontes/tipos-de-simbolos.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escreva.js","sourceRoot":"","sources":["../../../fontes/declaracoes/escreva.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA,2CAA0C;
|
|
1
|
+
{"version":3,"file":"escreva.js","sourceRoot":"","sources":["../../../fontes/declaracoes/escreva.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA,2CAA0C;AAE1C;IAA6B,2BAAU;IAGnC,iBAAY,KAAa,EAAE,WAAmB,EAAE,UAAuB;QAAvE,YACI,kBAAM,KAAK,EAAE,WAAW,CAAC,SAE5B;QADG,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;;IACjC,CAAC;IAED,yBAAO,GAAP,UAAQ,SAAiC;QACrC,OAAO,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACL,cAAC;AAAD,CAAC,AAXD,CAA6B,uBAAU,GAWtC;AAXY,0BAAO"}
|
|
@@ -24,6 +24,7 @@ __exportStar(require("./expressao"), exports);
|
|
|
24
24
|
__exportStar(require("./fazer"), exports);
|
|
25
25
|
__exportStar(require("./funcao"), exports);
|
|
26
26
|
__exportStar(require("./importar"), exports);
|
|
27
|
+
__exportStar(require("./leia"), exports);
|
|
27
28
|
__exportStar(require("./para"), exports);
|
|
28
29
|
__exportStar(require("./sustar"), exports);
|
|
29
30
|
__exportStar(require("./retorna"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/declaracoes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,uCAAqB;AACrB,+CAA6B;AAC7B,0CAAwB;AACxB,wCAAsB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/declaracoes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,yCAAuB;AACvB,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,uCAAqB;AACrB,+CAA6B;AAC7B,0CAAwB;AACxB,wCAAsB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Construto } from "../construtos";
|
|
2
|
+
import { InterpretadorInterface } from "../interfaces";
|
|
3
|
+
import { Declaracao } from "./declaracao";
|
|
4
|
+
/**
|
|
5
|
+
* Declaração que pede a leitura de uma informação da entrada
|
|
6
|
+
* configurada no início da aplicação.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Leia extends Declaracao {
|
|
9
|
+
argumentos: Construto[];
|
|
10
|
+
constructor(linha: number, hashArquivo: number, argumentos: Construto[]);
|
|
11
|
+
aceitar(visitante: InterpretadorInterface): any;
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.Leia = void 0;
|
|
19
|
+
var declaracao_1 = require("./declaracao");
|
|
20
|
+
/**
|
|
21
|
+
* Declaração que pede a leitura de uma informação da entrada
|
|
22
|
+
* configurada no início da aplicação.
|
|
23
|
+
*/
|
|
24
|
+
var Leia = /** @class */ (function (_super) {
|
|
25
|
+
__extends(Leia, _super);
|
|
26
|
+
function Leia(linha, hashArquivo, argumentos) {
|
|
27
|
+
var _this = _super.call(this, linha, hashArquivo) || this;
|
|
28
|
+
_this.argumentos = argumentos;
|
|
29
|
+
return _this;
|
|
30
|
+
}
|
|
31
|
+
Leia.prototype.aceitar = function (visitante) {
|
|
32
|
+
return visitante.visitarExpressaoLeia(this);
|
|
33
|
+
};
|
|
34
|
+
return Leia;
|
|
35
|
+
}(declaracao_1.Declaracao));
|
|
36
|
+
exports.Leia = Leia;
|
|
37
|
+
//# sourceMappingURL=leia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leia.js","sourceRoot":"","sources":["../../../fontes/declaracoes/leia.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA,2CAA0C;AAE1C;;;GAGG;AACH;IAA0B,wBAAU;IAGhC,cAAY,KAAa,EAAE,WAAmB,EAAE,UAAuB;QAAvE,YACI,kBAAM,KAAK,EAAE,WAAW,CAAC,SAE5B;QADG,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;;IACjC,CAAC;IAED,sBAAO,GAAP,UAAQ,SAAiC;QACrC,OAAO,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACL,WAAC;AAAD,CAAC,AAXD,CAA0B,uBAAU,GAWnC;AAXY,oBAAI"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Construto } from "../construtos";
|
|
1
2
|
import { InterpretadorInterface, SimboloInterface } from "../interfaces";
|
|
2
3
|
import { Declaracao } from "./declaracao";
|
|
3
4
|
export declare class Var extends Declaracao {
|
|
4
5
|
simbolo: SimboloInterface;
|
|
5
|
-
inicializador:
|
|
6
|
-
constructor(simbolo: SimboloInterface, inicializador:
|
|
6
|
+
inicializador: Construto;
|
|
7
|
+
constructor(simbolo: SimboloInterface, inicializador: Construto);
|
|
7
8
|
aceitar(visitante: InterpretadorInterface): any;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"var.js","sourceRoot":"","sources":["../../../fontes/declaracoes/var.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"var.js","sourceRoot":"","sources":["../../../fontes/declaracoes/var.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA,2CAA0C;AAG1C;IAAyB,uBAAU;IAI/B,aAAY,OAAyB,EAAE,aAAwB;QAA/D,YACI,kBAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,SAGpD;QAFG,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,aAAa,GAAG,aAAa,CAAC;;IACvC,CAAC;IAED,qBAAO,GAAP,UAAQ,SAAiC;QACrC,OAAO,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACL,UAAC;AAAD,CAAC,AAbD,CAAyB,uBAAU,GAalC;AAbY,kBAAG"}
|
package/fontes/delegua.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AvaliadorSintaticoInterface, DeleguaInterface,
|
|
1
|
+
import { AvaliadorSintaticoInterface, DeleguaInterface, InterpretadorInterface, LexadorInterface, RetornoExecucaoInterface, SimboloInterface } from './interfaces';
|
|
2
2
|
import { ServidorDepuracao } from './depuracao';
|
|
3
3
|
import { ImportadorInterface } from './interfaces/importador-interface';
|
|
4
4
|
import { RetornoImportador } from './importador';
|
|
@@ -15,7 +15,7 @@ export declare class Delegua implements DeleguaInterface {
|
|
|
15
15
|
conteudoArquivosAbertos: {
|
|
16
16
|
[identificador: string]: string[];
|
|
17
17
|
};
|
|
18
|
-
interpretador: InterpretadorInterface
|
|
18
|
+
interpretador: InterpretadorInterface;
|
|
19
19
|
lexador: LexadorInterface;
|
|
20
20
|
avaliadorSintatico: AvaliadorSintaticoInterface;
|
|
21
21
|
importador: ImportadorInterface;
|
package/fontes/delegua.js
CHANGED
|
@@ -34,7 +34,7 @@ var chalk_1 = __importDefault(require("chalk"));
|
|
|
34
34
|
var lexador_1 = require("./lexador/lexador");
|
|
35
35
|
var avaliador_sintatico_1 = require("./avaliador-sintatico/avaliador-sintatico");
|
|
36
36
|
var interpretador_1 = require("./interpretador/interpretador");
|
|
37
|
-
var
|
|
37
|
+
var delegua_1 = __importDefault(require("./tipos-de-simbolos/delegua"));
|
|
38
38
|
var egua_classico_1 = require("./interpretador/dialetos/egua-classico");
|
|
39
39
|
var lexador_egua_classico_1 = require("./lexador/dialetos/lexador-egua-classico");
|
|
40
40
|
var lexador_eguap_1 = require("./lexador/dialetos/lexador-eguap");
|
|
@@ -44,6 +44,8 @@ var depuracao_1 = require("./depuracao");
|
|
|
44
44
|
var importador_1 = require("./importador");
|
|
45
45
|
var interpretador_com_depuracao_1 = require("./interpretador/interpretador-com-depuracao");
|
|
46
46
|
var dialetos_2 = require("./resolvedor/dialetos");
|
|
47
|
+
var lexador_visualg_1 = require("./lexador/dialetos/lexador-visualg");
|
|
48
|
+
var avaliador_sintatico_visualg_1 = require("./avaliador-sintatico/dialetos/avaliador-sintatico-visualg");
|
|
47
49
|
/**
|
|
48
50
|
* O núcleo da linguagem.
|
|
49
51
|
*
|
|
@@ -63,7 +65,7 @@ var Delegua = /** @class */ (function () {
|
|
|
63
65
|
switch (this.dialeto) {
|
|
64
66
|
case 'egua':
|
|
65
67
|
if (depurador) {
|
|
66
|
-
throw new Error(
|
|
68
|
+
throw new Error('Dialeto ' + this.dialeto + ' não suporta depuração.');
|
|
67
69
|
}
|
|
68
70
|
this.lexador = new lexador_egua_classico_1.LexadorEguaClassico();
|
|
69
71
|
this.avaliadorSintatico = new dialetos_1.AvaliadorSintaticoEguaClassico();
|
|
@@ -75,18 +77,24 @@ var Delegua = /** @class */ (function () {
|
|
|
75
77
|
this.lexador = new lexador_eguap_1.LexadorEguaP();
|
|
76
78
|
this.avaliadorSintatico = new avaliador_sintatico_eguap_1.AvaliadorSintaticoEguaP();
|
|
77
79
|
this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
|
|
78
|
-
this.interpretador = depurador
|
|
79
|
-
new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
|
|
80
|
-
new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
|
|
80
|
+
this.interpretador = depurador
|
|
81
|
+
? new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
|
|
82
|
+
: new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
|
|
81
83
|
console.log('Usando dialeto: ÉguaP');
|
|
82
84
|
break;
|
|
85
|
+
case 'visualg':
|
|
86
|
+
this.lexador = new lexador_visualg_1.LexadorVisuAlg();
|
|
87
|
+
this.avaliadorSintatico = new avaliador_sintatico_visualg_1.AvaliadorSintaticoVisuAlg();
|
|
88
|
+
this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
|
|
89
|
+
this.interpretador = new interpretador_1.Interpretador(this.importador, process.cwd(), false, console.log);
|
|
90
|
+
break;
|
|
83
91
|
default:
|
|
84
92
|
this.lexador = new lexador_1.Lexador(performance);
|
|
85
93
|
this.avaliadorSintatico = new avaliador_sintatico_1.AvaliadorSintatico(performance);
|
|
86
94
|
this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
|
|
87
|
-
this.interpretador = depurador
|
|
88
|
-
new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
|
|
89
|
-
new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
|
|
95
|
+
this.interpretador = depurador
|
|
96
|
+
? new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
|
|
97
|
+
: new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
|
|
90
98
|
console.log('Usando dialeto: padrão');
|
|
91
99
|
break;
|
|
92
100
|
}
|
|
@@ -101,7 +109,7 @@ var Delegua = /** @class */ (function () {
|
|
|
101
109
|
.version || '0.7');
|
|
102
110
|
}
|
|
103
111
|
catch (error) {
|
|
104
|
-
return '0.
|
|
112
|
+
return '0.7 (desenvolvimento)';
|
|
105
113
|
}
|
|
106
114
|
};
|
|
107
115
|
/**
|
|
@@ -134,12 +142,15 @@ var Delegua = /** @class */ (function () {
|
|
|
134
142
|
Delegua.prototype.executarUmaLinha = function (linha) {
|
|
135
143
|
var retornoLexador = this.lexador.mapear([linha], -1);
|
|
136
144
|
var retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(retornoLexador);
|
|
137
|
-
if (this.afericaoErros({
|
|
145
|
+
if (this.afericaoErros({
|
|
146
|
+
retornoLexador: retornoLexador,
|
|
147
|
+
retornoAvaliadorSintatico: retornoAvaliadorSintatico,
|
|
148
|
+
})) {
|
|
138
149
|
return { resultado: [] };
|
|
139
150
|
}
|
|
140
151
|
return this.executar({
|
|
141
152
|
retornoLexador: retornoLexador,
|
|
142
|
-
retornoAvaliadorSintatico: retornoAvaliadorSintatico
|
|
153
|
+
retornoAvaliadorSintatico: retornoAvaliadorSintatico,
|
|
143
154
|
}, true);
|
|
144
155
|
};
|
|
145
156
|
/**
|
|
@@ -148,7 +159,8 @@ var Delegua = /** @class */ (function () {
|
|
|
148
159
|
Delegua.prototype.iniciarDepuracao = function () {
|
|
149
160
|
this.servidorDepuracao = new depuracao_1.ServidorDepuracao(this);
|
|
150
161
|
this.servidorDepuracao.iniciarServidorDepuracao();
|
|
151
|
-
this.interpretador.finalizacaoDaExecucao =
|
|
162
|
+
this.interpretador.finalizacaoDaExecucao =
|
|
163
|
+
this.finalizarDepuracao.bind(this);
|
|
152
164
|
};
|
|
153
165
|
/**
|
|
154
166
|
* Pede ao servidor de depuração que finalize a execução.
|
|
@@ -174,7 +186,8 @@ var Delegua = /** @class */ (function () {
|
|
|
174
186
|
return true;
|
|
175
187
|
}
|
|
176
188
|
if (retornoImportador.retornoAvaliadorSintatico.erros.length > 0) {
|
|
177
|
-
for (var _b = 0, _c = retornoImportador
|
|
189
|
+
for (var _b = 0, _c = retornoImportador
|
|
190
|
+
.retornoAvaliadorSintatico.erros; _b < _c.length; _b++) {
|
|
178
191
|
var erroAvaliadorSintatico = _c[_b];
|
|
179
192
|
this.erro(erroAvaliadorSintatico.simbolo, erroAvaliadorSintatico.message);
|
|
180
193
|
}
|
|
@@ -194,11 +207,10 @@ var Delegua = /** @class */ (function () {
|
|
|
194
207
|
var errosExecucao = {
|
|
195
208
|
lexador: [],
|
|
196
209
|
avaliadorSintatico: [],
|
|
197
|
-
interpretador: []
|
|
210
|
+
interpretador: [],
|
|
198
211
|
};
|
|
199
212
|
if (this.modoDepuracao) {
|
|
200
|
-
this.interpretador
|
|
201
|
-
.prepararParaDepuracao(retornoImportador.retornoAvaliadorSintatico.declaracoes);
|
|
213
|
+
this.interpretador.prepararParaDepuracao(retornoImportador.retornoAvaliadorSintatico.declaracoes);
|
|
202
214
|
}
|
|
203
215
|
else {
|
|
204
216
|
var erros = this.executar(retornoImportador).erros;
|
|
@@ -226,8 +238,10 @@ var Delegua = /** @class */ (function () {
|
|
|
226
238
|
}
|
|
227
239
|
else {
|
|
228
240
|
var erroEmJavaScript = erroInterpretador;
|
|
229
|
-
console.error(chalk_1.default.red("Erro em JavaScript: ") +
|
|
230
|
-
|
|
241
|
+
console.error(chalk_1.default.red("Erro em JavaScript: ") +
|
|
242
|
+
"".concat(erroEmJavaScript.message));
|
|
243
|
+
console.error(chalk_1.default.red("Pilha de execu\u00E7\u00E3o: ") +
|
|
244
|
+
"".concat(erroEmJavaScript.stack));
|
|
231
245
|
}
|
|
232
246
|
}
|
|
233
247
|
}
|
|
@@ -246,7 +260,7 @@ var Delegua = /** @class */ (function () {
|
|
|
246
260
|
console.error(chalk_1.default.red("[Linha: ".concat(linha, "]")) + " Erro".concat(onde, ": ").concat(mensagem));
|
|
247
261
|
};
|
|
248
262
|
Delegua.prototype.erro = function (simbolo, mensagemDeErro) {
|
|
249
|
-
if (simbolo.tipo ===
|
|
263
|
+
if (simbolo.tipo === delegua_1.default.EOF) {
|
|
250
264
|
this.reportar(Number(simbolo.linha), ' no final', mensagemDeErro);
|
|
251
265
|
}
|
|
252
266
|
else {
|
|
@@ -261,10 +275,12 @@ var Delegua = /** @class */ (function () {
|
|
|
261
275
|
chalk.red(`Erro: [Arquivo: ${this.nomeArquivo}] [Linha: ${erro.simbolo.linha}]`) + ` ${erro.mensagem}`
|
|
262
276
|
);
|
|
263
277
|
else */
|
|
264
|
-
console.error(chalk_1.default.red("Erro: [Linha: ".concat(erro.simbolo.linha, "]")) +
|
|
278
|
+
console.error(chalk_1.default.red("Erro: [Linha: ".concat(erro.simbolo.linha, "]")) +
|
|
279
|
+
" ".concat(erro.mensagem));
|
|
265
280
|
}
|
|
266
281
|
else {
|
|
267
|
-
console.error(chalk_1.default.red("Erro: [Linha: ".concat(erro.linha || 0, "]")) +
|
|
282
|
+
console.error(chalk_1.default.red("Erro: [Linha: ".concat(erro.linha || 0, "]")) +
|
|
283
|
+
" ".concat(erro.mensagem));
|
|
268
284
|
}
|
|
269
285
|
};
|
|
270
286
|
return Delegua;
|
package/fontes/delegua.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegua.js","sourceRoot":"","sources":["../../fontes/delegua.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,4CAAgC;AAChC,iDAAqC;AACrC,gDAA0B;AAE1B,6CAA4C;AAC5C,iFAA+E;AAC/E,+DAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"delegua.js","sourceRoot":"","sources":["../../fontes/delegua.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,14 +13,12 @@ export interface AvaliadorSintaticoInterface {
|
|
|
13
13
|
erro(simbolo: SimboloInterface, mensagemDeErro: string): ErroAvaliadorSintatico;
|
|
14
14
|
verificarTipoSimboloAtual(tipo: string): boolean;
|
|
15
15
|
verificarTipoProximoSimbolo(tipo: string): boolean;
|
|
16
|
-
simboloAtual(): SimboloInterface;
|
|
17
|
-
simboloAnterior(): SimboloInterface;
|
|
18
16
|
estaNoFinal(): boolean;
|
|
19
17
|
avancarEDevolverAnterior(): any;
|
|
20
18
|
verificarSeSimboloAtualEIgualA(...argumentos: any[]): boolean;
|
|
21
19
|
primario(): any;
|
|
22
20
|
finalizarChamada(entidadeChamada: Construto): Construto;
|
|
23
|
-
chamar():
|
|
21
|
+
chamar(): Construto;
|
|
24
22
|
unario(): Construto;
|
|
25
23
|
exponenciacao(): Construto;
|
|
26
24
|
multiplicar(): Construto;
|
|
@@ -50,8 +48,8 @@ export interface AvaliadorSintaticoInterface {
|
|
|
50
48
|
declaracaoFazer(): Fazer;
|
|
51
49
|
resolverDeclaracao(): any;
|
|
52
50
|
declaracaoDeVariavel(): Var;
|
|
53
|
-
funcao(tipo:
|
|
54
|
-
corpoDaFuncao(tipo:
|
|
51
|
+
funcao(tipo: string): FuncaoDeclaracao;
|
|
52
|
+
corpoDaFuncao(tipo: string): Funcao;
|
|
55
53
|
declaracaoDeClasse(): Classe;
|
|
56
54
|
declaracao(): any;
|
|
57
55
|
analisar(retornoLexador: RetornoLexador, hashArquivo?: number): RetornoAvaliadorSintatico;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { EspacoVariaveis } from
|
|
2
|
-
import { Atribuir, Literal, Super } from
|
|
3
|
-
import { Bloco, Classe, Continua, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, Funcao, Importar, Para, Retorna, Se, Sustar, Tente, Var } from
|
|
4
|
-
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from
|
|
5
|
-
import { PilhaEscoposExecucaoInterface } from
|
|
6
|
-
import { RetornoInterpretador } from
|
|
7
|
-
import { SimboloInterface } from
|
|
1
|
+
import { EspacoVariaveis } from '../espaco-variaveis';
|
|
2
|
+
import { Atribuir, Literal, Super } from '../construtos';
|
|
3
|
+
import { Bloco, Classe, Continua, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, Funcao, Importar, Leia, Para, Retorna, Se, Sustar, Tente, Var } from '../declaracoes';
|
|
4
|
+
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
|
|
5
|
+
import { PilhaEscoposExecucaoInterface } from './pilha-escopos-execucao-interface';
|
|
6
|
+
import { RetornoInterpretador } from './retornos/retorno-interpretador';
|
|
7
|
+
import { SimboloInterface } from './simbolo-interface';
|
|
8
8
|
export interface InterpretadorInterface {
|
|
9
9
|
diretorioBase: any;
|
|
10
10
|
funcaoDeRetorno: Function;
|
|
@@ -23,6 +23,7 @@ export interface InterpretadorInterface {
|
|
|
23
23
|
procurarVariavel(nome: SimboloInterface, expressao: any): any;
|
|
24
24
|
visitarExpressaoDeVariavel(expressao: any): any;
|
|
25
25
|
visitarDeclaracaoDeExpressao(declaracao: Expressao): any;
|
|
26
|
+
visitarExpressaoLeia(expressao: Leia): any;
|
|
26
27
|
visitarExpressaoLogica(expressao: any): any;
|
|
27
28
|
visitarExpressaoSe(declaracao: Se): any;
|
|
28
29
|
visitarExpressaoPara(declaracao: Para): any;
|
|
@@ -2,7 +2,7 @@ import { RetornoLexador } from "./retornos/retorno-lexador";
|
|
|
2
2
|
import { SimboloInterface } from "./simbolo-interface";
|
|
3
3
|
export interface LexadorInterface {
|
|
4
4
|
simbolos: SimboloInterface[];
|
|
5
|
-
codigo: string[];
|
|
5
|
+
codigo: string | string[];
|
|
6
6
|
inicioSimbolo: number;
|
|
7
7
|
atual: number;
|
|
8
8
|
linha: number;
|
|
@@ -10,7 +10,7 @@ export interface LexadorInterface {
|
|
|
10
10
|
eAlfabeto(caractere: string): boolean;
|
|
11
11
|
eAlfabetoOuDigito(caractere: string): boolean;
|
|
12
12
|
eFinalDoCodigo(): boolean;
|
|
13
|
-
avancar(): void;
|
|
13
|
+
avancar(): string | void;
|
|
14
14
|
adicionarSimbolo(tipo: any, literal: any): void;
|
|
15
15
|
simboloAtual(): string;
|
|
16
16
|
proximoSimbolo(): string;
|
|
@@ -2,7 +2,7 @@ import { EspacoVariaveis } from '../../espaco-variaveis';
|
|
|
2
2
|
import { Delegua } from '../../delegua';
|
|
3
3
|
import { DeleguaFuncao } from '../../estruturas/funcao';
|
|
4
4
|
import { InterpretadorInterface, SimboloInterface, ResolvedorInterface, VariavelInterface } from '../../interfaces';
|
|
5
|
-
import { Classe, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, Funcao, Importar, Para, Se, Tente, Var } from '../../declaracoes';
|
|
5
|
+
import { Classe, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, Funcao, Importar, Leia, Para, Se, Tente, Var } from '../../declaracoes';
|
|
6
6
|
import { AcessoIndiceVariavel, Atribuir, Construto, Literal, Super, Variavel } from '../../construtos';
|
|
7
7
|
import { RetornoInterpretador } from '../../interfaces/retornos/retorno-interpretador';
|
|
8
8
|
import { ErroInterpretador } from '../erro-interpretador';
|
|
@@ -21,6 +21,7 @@ export declare class InterpretadorEguaClassico implements InterpretadorInterface
|
|
|
21
21
|
erros: ErroInterpretador[];
|
|
22
22
|
pilhaEscoposExecucao: PilhaEscoposExecucao;
|
|
23
23
|
constructor(Delegua: Delegua, resolvedor: ResolvedorInterface, diretorioBase: string);
|
|
24
|
+
visitarExpressaoLeia(expressao: Leia): void;
|
|
24
25
|
visitarExpressaoLiteral(expressao: Literal): any;
|
|
25
26
|
avaliar(expressao: Construto): VariavelInterface | any;
|
|
26
27
|
visitarExpressaoAgrupamento(expressao: any): any;
|
|
@@ -56,6 +57,11 @@ export declare class InterpretadorEguaClassico implements InterpretadorInterface
|
|
|
56
57
|
*/
|
|
57
58
|
executarBloco(declaracoes: Declaracao[], ambiente?: EspacoVariaveis): any;
|
|
58
59
|
visitarExpressaoBloco(declaracao: any): any;
|
|
60
|
+
/**
|
|
61
|
+
* Executa expressão de definição de variável.
|
|
62
|
+
* @param declaracao A declaração Var
|
|
63
|
+
* @returns Sempre retorna nulo.
|
|
64
|
+
*/
|
|
59
65
|
visitarExpressaoVar(declaracao: Var): any;
|
|
60
66
|
visitarExpressaoContinua(declaracao?: any): ContinuarQuebra;
|
|
61
67
|
visitarExpressaoSustar(declaracao?: any): SustarQuebra;
|
|
@@ -29,9 +29,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.InterpretadorEguaClassico = void 0;
|
|
30
30
|
var caminho = __importStar(require("path"));
|
|
31
31
|
var fs = __importStar(require("fs"));
|
|
32
|
-
var
|
|
32
|
+
var delegua_1 = __importDefault(require("../../tipos-de-simbolos/delegua"));
|
|
33
33
|
var espaco_variaveis_1 = require("../../espaco-variaveis");
|
|
34
|
-
var
|
|
34
|
+
var delegua_2 = require("../../delegua");
|
|
35
35
|
var biblioteca_global_1 = __importDefault(require("../../bibliotecas/biblioteca-global"));
|
|
36
36
|
var importar_biblioteca_1 = __importDefault(require("../../bibliotecas/importar-biblioteca"));
|
|
37
37
|
var chamavel_1 = require("../../estruturas/chamavel");
|
|
@@ -65,6 +65,9 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
65
65
|
this.pilhaEscoposExecucao.empilhar(escopoExecucao);
|
|
66
66
|
(0, biblioteca_global_1.default)(this, this.pilhaEscoposExecucao);
|
|
67
67
|
}
|
|
68
|
+
InterpretadorEguaClassico.prototype.visitarExpressaoLeia = function (expressao) {
|
|
69
|
+
throw new Error('Método não implementado.');
|
|
70
|
+
};
|
|
68
71
|
InterpretadorEguaClassico.prototype.visitarExpressaoLiteral = function (expressao) {
|
|
69
72
|
return expressao.valor;
|
|
70
73
|
};
|
|
@@ -89,12 +92,12 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
89
92
|
InterpretadorEguaClassico.prototype.visitarExpressaoUnaria = function (expr) {
|
|
90
93
|
var direita = this.avaliar(expr.direita);
|
|
91
94
|
switch (expr.operador.tipo) {
|
|
92
|
-
case
|
|
95
|
+
case delegua_1.default.SUBTRACAO:
|
|
93
96
|
this.verificarOperandoNumero(expr.operador, direita);
|
|
94
97
|
return -direita;
|
|
95
|
-
case
|
|
98
|
+
case delegua_1.default.NEGACAO:
|
|
96
99
|
return !this.eVerdadeiro(direita);
|
|
97
|
-
case
|
|
100
|
+
case delegua_1.default.BIT_NOT:
|
|
98
101
|
return ~direita;
|
|
99
102
|
}
|
|
100
103
|
return null;
|
|
@@ -128,25 +131,25 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
128
131
|
var tipoEsquerdo = esquerda.hasOwnProperty('tipo') ? esquerda.tipo : (0, inferenciador_1.inferirTipoVariavel)(esquerda);
|
|
129
132
|
var tipoDireito = direita.hasOwnProperty('tipo') ? direita.tipo : (0, inferenciador_1.inferirTipoVariavel)(direita);
|
|
130
133
|
switch (expressao.operador.tipo) {
|
|
131
|
-
case
|
|
134
|
+
case delegua_1.default.EXPONENCIACAO:
|
|
132
135
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
133
136
|
return Math.pow(valorEsquerdo, valorDireito);
|
|
134
|
-
case
|
|
137
|
+
case delegua_1.default.MAIOR:
|
|
135
138
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
136
139
|
return Number(valorEsquerdo) > Number(valorDireito);
|
|
137
|
-
case
|
|
140
|
+
case delegua_1.default.MAIOR_IGUAL:
|
|
138
141
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
139
142
|
return Number(valorEsquerdo) >= Number(valorDireito);
|
|
140
|
-
case
|
|
143
|
+
case delegua_1.default.MENOR:
|
|
141
144
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
142
145
|
return Number(valorEsquerdo) < Number(valorDireito);
|
|
143
|
-
case
|
|
146
|
+
case delegua_1.default.MENOR_IGUAL:
|
|
144
147
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
145
148
|
return Number(valorEsquerdo) <= Number(valorDireito);
|
|
146
|
-
case
|
|
149
|
+
case delegua_1.default.SUBTRACAO:
|
|
147
150
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
148
151
|
return Number(valorEsquerdo) - Number(valorDireito);
|
|
149
|
-
case
|
|
152
|
+
case delegua_1.default.ADICAO:
|
|
150
153
|
if (tipoEsquerdo === 'número' &&
|
|
151
154
|
tipoDireito === 'número') {
|
|
152
155
|
return Number(esquerda) + Number(direita);
|
|
@@ -156,33 +159,33 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
156
159
|
return String(esquerda) + String(direita);
|
|
157
160
|
}
|
|
158
161
|
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.operador, 'Operadores precisam ser dois números ou duas strings.');
|
|
159
|
-
case
|
|
162
|
+
case delegua_1.default.DIVISAO:
|
|
160
163
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
161
164
|
return Number(valorEsquerdo) / Number(valorDireito);
|
|
162
|
-
case
|
|
165
|
+
case delegua_1.default.MULTIPLICACAO:
|
|
163
166
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
164
167
|
return Number(valorEsquerdo) * Number(valorDireito);
|
|
165
|
-
case
|
|
168
|
+
case delegua_1.default.MODULO:
|
|
166
169
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
167
170
|
return Number(valorEsquerdo) % Number(valorDireito);
|
|
168
|
-
case
|
|
171
|
+
case delegua_1.default.BIT_AND:
|
|
169
172
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
170
173
|
return Number(valorEsquerdo) & Number(valorDireito);
|
|
171
|
-
case
|
|
174
|
+
case delegua_1.default.BIT_XOR:
|
|
172
175
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
173
176
|
return Number(valorEsquerdo) ^ Number(valorDireito);
|
|
174
|
-
case
|
|
177
|
+
case delegua_1.default.BIT_OR:
|
|
175
178
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
176
179
|
return Number(valorEsquerdo) | Number(valorDireito);
|
|
177
|
-
case
|
|
180
|
+
case delegua_1.default.MENOR_MENOR:
|
|
178
181
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
179
182
|
return Number(valorEsquerdo) << Number(valorDireito);
|
|
180
|
-
case
|
|
183
|
+
case delegua_1.default.MAIOR_MAIOR:
|
|
181
184
|
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
182
185
|
return Number(valorEsquerdo) >> Number(valorDireito);
|
|
183
|
-
case
|
|
186
|
+
case delegua_1.default.DIFERENTE:
|
|
184
187
|
return !this.eIgual(valorEsquerdo, valorDireito);
|
|
185
|
-
case
|
|
188
|
+
case delegua_1.default.IGUAL_IGUAL:
|
|
186
189
|
return this.eIgual(valorEsquerdo, valorDireito);
|
|
187
190
|
}
|
|
188
191
|
return null;
|
|
@@ -246,7 +249,7 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
246
249
|
};
|
|
247
250
|
InterpretadorEguaClassico.prototype.visitarExpressaoLogica = function (expressao) {
|
|
248
251
|
var esquerda = this.avaliar(expressao.esquerda);
|
|
249
|
-
if (expressao.operador.tipo ===
|
|
252
|
+
if (expressao.operador.tipo === delegua_1.default.EM) {
|
|
250
253
|
var direita = this.avaliar(expressao.direita);
|
|
251
254
|
if (Array.isArray(direita) || typeof direita === 'string') {
|
|
252
255
|
return direita.includes(esquerda);
|
|
@@ -259,12 +262,12 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
259
262
|
}
|
|
260
263
|
}
|
|
261
264
|
// se um estado for verdadeiro, retorna verdadeiro
|
|
262
|
-
if (expressao.operador.tipo ===
|
|
265
|
+
if (expressao.operador.tipo === delegua_1.default.OU) {
|
|
263
266
|
if (this.eVerdadeiro(esquerda))
|
|
264
267
|
return esquerda;
|
|
265
268
|
}
|
|
266
269
|
// se um estado for falso, retorna falso
|
|
267
|
-
if (expressao.operador.tipo ===
|
|
270
|
+
if (expressao.operador.tipo === delegua_1.default.E) {
|
|
268
271
|
if (!this.eVerdadeiro(esquerda))
|
|
269
272
|
return esquerda;
|
|
270
273
|
}
|
|
@@ -318,7 +321,7 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
318
321
|
} while (this.eVerdadeiro(this.avaliar(declaracao.condicaoEnquanto)));
|
|
319
322
|
};
|
|
320
323
|
InterpretadorEguaClassico.prototype.visitarExpressaoEscolha = function (declaracao) {
|
|
321
|
-
var condicaoEscolha = this.avaliar(declaracao.
|
|
324
|
+
var condicaoEscolha = this.avaliar(declaracao.identificadorOuLiteral);
|
|
322
325
|
var caminhos = declaracao.caminhos;
|
|
323
326
|
var caminhoPadrao = declaracao.caminhoPadrao;
|
|
324
327
|
var encontrado = false;
|
|
@@ -400,7 +403,7 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
400
403
|
throw new excecoes_1.ErroEmTempoDeExecucao(declaracao.simboloFechamento, 'Não foi possível ler o arquivo.', declaracao.linha);
|
|
401
404
|
}
|
|
402
405
|
dados = fs.readFileSync(caminhoTotal).toString();
|
|
403
|
-
var delegua = new
|
|
406
|
+
var delegua = new delegua_2.Delegua(this.Delegua.dialeto, false);
|
|
404
407
|
delegua.executar(dados);
|
|
405
408
|
var exportar = this.pilhaEscoposExecucao.obterTodasDeleguaFuncao();
|
|
406
409
|
var eDicionario = function (objeto) { return objeto.constructor === Object; };
|
|
@@ -450,12 +453,17 @@ var InterpretadorEguaClassico = /** @class */ (function () {
|
|
|
450
453
|
InterpretadorEguaClassico.prototype.visitarExpressaoBloco = function (declaracao) {
|
|
451
454
|
return this.executarBloco(declaracao.declaracoes);
|
|
452
455
|
};
|
|
456
|
+
/**
|
|
457
|
+
* Executa expressão de definição de variável.
|
|
458
|
+
* @param declaracao A declaração Var
|
|
459
|
+
* @returns Sempre retorna nulo.
|
|
460
|
+
*/
|
|
453
461
|
InterpretadorEguaClassico.prototype.visitarExpressaoVar = function (declaracao) {
|
|
454
|
-
var
|
|
462
|
+
var valorOuOutraVariavel = null;
|
|
455
463
|
if (declaracao.inicializador !== null) {
|
|
456
|
-
|
|
464
|
+
valorOuOutraVariavel = this.avaliar(declaracao.inicializador);
|
|
457
465
|
}
|
|
458
|
-
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, valor);
|
|
466
|
+
this.pilhaEscoposExecucao.definirVariavel(declaracao.simbolo.lexema, valorOuOutraVariavel.hasOwnProperty('valor') ? valorOuOutraVariavel.valor : valorOuOutraVariavel);
|
|
459
467
|
return null;
|
|
460
468
|
};
|
|
461
469
|
InterpretadorEguaClassico.prototype.visitarExpressaoContinua = function (declaracao) {
|