@designliquido/delegua 0.66.0 → 0.67.1
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/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts +5 -0
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +73 -2
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
- package/bin/package.json +1 -1
- package/estilizador/estilizador-delegua.d.ts +55 -0
- package/estilizador/estilizador-delegua.d.ts.map +1 -0
- package/estilizador/estilizador-delegua.js +228 -0
- package/estilizador/estilizador-delegua.js.map +1 -0
- package/estilizador/index.d.ts +3 -0
- package/estilizador/index.d.ts.map +1 -0
- package/estilizador/index.js +19 -0
- package/estilizador/index.js.map +1 -0
- package/estilizador/regras/convencao-nomenclatura.d.ts +79 -0
- package/estilizador/regras/convencao-nomenclatura.d.ts.map +1 -0
- package/estilizador/regras/convencao-nomenclatura.js +148 -0
- package/estilizador/regras/convencao-nomenclatura.js.map +1 -0
- package/estilizador/regras/fortalecer-tipos.d.ts +28 -0
- package/estilizador/regras/fortalecer-tipos.d.ts.map +1 -0
- package/estilizador/regras/fortalecer-tipos.js +84 -0
- package/estilizador/regras/fortalecer-tipos.js.map +1 -0
- package/estilizador/regras/index.d.ts +3 -0
- package/estilizador/regras/index.d.ts.map +1 -0
- package/estilizador/regras/index.js +19 -0
- package/estilizador/regras/index.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/interfaces/estilizador-comum-interface.d.ts +85 -0
- package/interfaces/estilizador-comum-interface.d.ts.map +1 -0
- package/interfaces/estilizador-comum-interface.js +3 -0
- package/interfaces/estilizador-comum-interface.js.map +1 -0
- package/interfaces/index.d.ts +1 -0
- package/interfaces/index.d.ts.map +1 -1
- package/interfaces/index.js +1 -0
- package/interfaces/index.js.map +1 -1
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +31 -9
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +1 -1
- package/interpretador/depuracao/interpretador-base-com-depuracao.js +1 -1
- package/interpretador/depuracao/interpretador-com-depuracao.d.ts +1 -1
- package/interpretador/depuracao/interpretador-com-depuracao.js +1 -1
- package/package.json +1 -1
- package/umd/delegua.js +860 -351
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Declaracao } from '../../declaracoes';
|
|
2
|
+
import { RegraEstilizacao } from '../../interfaces/estilizador-comum-interface';
|
|
3
|
+
/**
|
|
4
|
+
* Opções de convenção de nomenclatura.
|
|
5
|
+
*/
|
|
6
|
+
export interface OpcoesConvencaoNomenclatura {
|
|
7
|
+
/**
|
|
8
|
+
* Convenção para variáveis.
|
|
9
|
+
* - 'caixaCamelo': primeiraPalavraMinuscula
|
|
10
|
+
* - 'caixa_cobra': primeira_palavra_minuscula
|
|
11
|
+
* - 'CaixaPascal': PrimeiraPalavraMaiuscula
|
|
12
|
+
*/
|
|
13
|
+
variavel?: 'caixaCamelo' | 'caixa_cobra' | 'CaixaPascal';
|
|
14
|
+
/**
|
|
15
|
+
* Convenção para constantes.
|
|
16
|
+
* - 'CAIXA_ALTA': TODAS_MAIUSCULAS
|
|
17
|
+
* - 'caixaCamelo': primeiraPalavraMinuscula
|
|
18
|
+
*/
|
|
19
|
+
constante?: 'CAIXA_ALTA' | 'caixaCamelo';
|
|
20
|
+
/**
|
|
21
|
+
* Convenção para funções.
|
|
22
|
+
* - 'caixaCamelo': primeiraPalavraMinuscula
|
|
23
|
+
* - 'caixa_cobra': primeira_palavra_minuscula
|
|
24
|
+
* - 'CaixaPascal': PrimeiraPalavraMaiuscula
|
|
25
|
+
*/
|
|
26
|
+
funcao?: 'caixaCamelo' | 'caixa_cobra' | 'CaixaPascal';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Regra que enforça convenções de nomenclatura.
|
|
30
|
+
*
|
|
31
|
+
* Exemplos:
|
|
32
|
+
* - Variáveis em caixaCamelo: `var meuNome` (não `var MeuNome` ou `var meu_nome`)
|
|
33
|
+
* - Constantes em CAIXA_ALTA: `constante PI_VALOR` (não `constante piValor`)
|
|
34
|
+
* - Funções em caixaCamelo: `função calcularTotal()` (não `função CalcularTotal()`)
|
|
35
|
+
*/
|
|
36
|
+
export declare class RegraConvencaoNomenclatura implements RegraEstilizacao {
|
|
37
|
+
nome: string;
|
|
38
|
+
descricao: string;
|
|
39
|
+
private opcoes;
|
|
40
|
+
constructor(opcoes?: OpcoesConvencaoNomenclatura);
|
|
41
|
+
aplicarEmDeclaracao(declaracao: Declaracao): Declaracao;
|
|
42
|
+
/**
|
|
43
|
+
* Aplica convenção em declaração Var.
|
|
44
|
+
*/
|
|
45
|
+
private aplicarConvencaoVar;
|
|
46
|
+
/**
|
|
47
|
+
* Aplica convenção em declaração Const.
|
|
48
|
+
*/
|
|
49
|
+
private aplicarConvencaoConst;
|
|
50
|
+
/**
|
|
51
|
+
* Aplica convenção em declaração de Função.
|
|
52
|
+
*/
|
|
53
|
+
private aplicarConvencaoFuncao;
|
|
54
|
+
/**
|
|
55
|
+
* Converte um nome para a convenção especificada.
|
|
56
|
+
*/
|
|
57
|
+
private converterNome;
|
|
58
|
+
/**
|
|
59
|
+
* Converte nome para camelCase.
|
|
60
|
+
*/
|
|
61
|
+
private paraCamelCase;
|
|
62
|
+
/**
|
|
63
|
+
* Converte nome para snake_case.
|
|
64
|
+
*/
|
|
65
|
+
private paraSnakeCase;
|
|
66
|
+
/**
|
|
67
|
+
* Converte nome para PascalCase.
|
|
68
|
+
*/
|
|
69
|
+
private paraPascalCase;
|
|
70
|
+
/**
|
|
71
|
+
* Converte nome para UPPER_CASE.
|
|
72
|
+
*/
|
|
73
|
+
private paraUpperCase;
|
|
74
|
+
/**
|
|
75
|
+
* Valida se um nome está na convenção especificada.
|
|
76
|
+
*/
|
|
77
|
+
validarNome(nome: string, convencao: string): boolean;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=convencao-nomenclatura.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convencao-nomenclatura.d.ts","sourceRoot":"","sources":["../../../fontes/estilizador/regras/convencao-nomenclatura.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;IAEzD;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IAEzC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,gBAAgB;IAC/D,IAAI,SAA4B;IAChC,SAAS,SAA6E;IAEtF,OAAO,CAAC,MAAM,CAA8B;gBAEhC,MAAM,GAAE,2BAAgC;IAQpD,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAmBvD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAGxD"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegraConvencaoNomenclatura = void 0;
|
|
4
|
+
const declaracoes_1 = require("../../declaracoes");
|
|
5
|
+
/**
|
|
6
|
+
* Regra que enforça convenções de nomenclatura.
|
|
7
|
+
*
|
|
8
|
+
* Exemplos:
|
|
9
|
+
* - Variáveis em caixaCamelo: `var meuNome` (não `var MeuNome` ou `var meu_nome`)
|
|
10
|
+
* - Constantes em CAIXA_ALTA: `constante PI_VALOR` (não `constante piValor`)
|
|
11
|
+
* - Funções em caixaCamelo: `função calcularTotal()` (não `função CalcularTotal()`)
|
|
12
|
+
*/
|
|
13
|
+
class RegraConvencaoNomenclatura {
|
|
14
|
+
constructor(opcoes = {}) {
|
|
15
|
+
this.nome = 'convencao-nomenclatura';
|
|
16
|
+
this.descricao = 'Enforça convenções de nomenclatura para variáveis, constantes e funções';
|
|
17
|
+
this.opcoes = {
|
|
18
|
+
variavel: opcoes.variavel || 'caixaCamelo',
|
|
19
|
+
constante: opcoes.constante || 'CAIXA_ALTA',
|
|
20
|
+
funcao: opcoes.funcao || 'caixaCamelo',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
aplicarEmDeclaracao(declaracao) {
|
|
24
|
+
// Valida/transforma nomes de variáveis
|
|
25
|
+
if (declaracao instanceof declaracoes_1.Var) {
|
|
26
|
+
return this.aplicarConvencaoVar(declaracao);
|
|
27
|
+
}
|
|
28
|
+
// Valida/transforma nomes de constantes
|
|
29
|
+
if (declaracao instanceof declaracoes_1.Const) {
|
|
30
|
+
return this.aplicarConvencaoConst(declaracao);
|
|
31
|
+
}
|
|
32
|
+
// Valida/transforma nomes de funções
|
|
33
|
+
if (declaracao instanceof declaracoes_1.FuncaoDeclaracao) {
|
|
34
|
+
return this.aplicarConvencaoFuncao(declaracao);
|
|
35
|
+
}
|
|
36
|
+
return declaracao;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Aplica convenção em declaração Var.
|
|
40
|
+
*/
|
|
41
|
+
aplicarConvencaoVar(declaracao) {
|
|
42
|
+
if (!this.opcoes.variavel)
|
|
43
|
+
return declaracao;
|
|
44
|
+
const nomeAtual = declaracao.simbolo.lexema;
|
|
45
|
+
const nomeConvertido = this.converterNome(nomeAtual, this.opcoes.variavel);
|
|
46
|
+
if (nomeAtual !== nomeConvertido) {
|
|
47
|
+
declaracao.simbolo.lexema = nomeConvertido;
|
|
48
|
+
}
|
|
49
|
+
return declaracao;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Aplica convenção em declaração Const.
|
|
53
|
+
*/
|
|
54
|
+
aplicarConvencaoConst(declaracao) {
|
|
55
|
+
if (!this.opcoes.constante)
|
|
56
|
+
return declaracao;
|
|
57
|
+
const nomeAtual = declaracao.simbolo.lexema;
|
|
58
|
+
const nomeConvertido = this.converterNome(nomeAtual, this.opcoes.constante);
|
|
59
|
+
if (nomeAtual !== nomeConvertido) {
|
|
60
|
+
declaracao.simbolo.lexema = nomeConvertido;
|
|
61
|
+
}
|
|
62
|
+
return declaracao;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Aplica convenção em declaração de Função.
|
|
66
|
+
*/
|
|
67
|
+
aplicarConvencaoFuncao(declaracao) {
|
|
68
|
+
if (!this.opcoes.funcao)
|
|
69
|
+
return declaracao;
|
|
70
|
+
const nomeAtual = declaracao.simbolo.lexema;
|
|
71
|
+
const nomeConvertido = this.converterNome(nomeAtual, this.opcoes.funcao);
|
|
72
|
+
if (nomeAtual !== nomeConvertido) {
|
|
73
|
+
declaracao.simbolo.lexema = nomeConvertido;
|
|
74
|
+
}
|
|
75
|
+
return declaracao;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Converte um nome para a convenção especificada.
|
|
79
|
+
*/
|
|
80
|
+
converterNome(nome, convencao) {
|
|
81
|
+
switch (convencao) {
|
|
82
|
+
case 'caixaCamelo':
|
|
83
|
+
return this.paraCamelCase(nome);
|
|
84
|
+
case 'caixa_cobra':
|
|
85
|
+
return this.paraSnakeCase(nome);
|
|
86
|
+
case 'CaixaPascal':
|
|
87
|
+
return this.paraPascalCase(nome);
|
|
88
|
+
case 'CAIXA_ALTA':
|
|
89
|
+
return this.paraUpperCase(nome);
|
|
90
|
+
default:
|
|
91
|
+
return nome;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Converte nome para camelCase.
|
|
96
|
+
*/
|
|
97
|
+
paraCamelCase(nome) {
|
|
98
|
+
// Se tem underscores, divide por eles
|
|
99
|
+
if (nome.includes('_')) {
|
|
100
|
+
const palavras = nome.split(/[_\s]+/);
|
|
101
|
+
return (palavras[0].toLowerCase() +
|
|
102
|
+
palavras
|
|
103
|
+
.slice(1)
|
|
104
|
+
.map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase())
|
|
105
|
+
.join(''));
|
|
106
|
+
}
|
|
107
|
+
// Se está em PascalCase, converte para camelCase
|
|
108
|
+
if (nome.charAt(0) === nome.charAt(0).toUpperCase()) {
|
|
109
|
+
return nome.charAt(0).toLowerCase() + nome.slice(1);
|
|
110
|
+
}
|
|
111
|
+
// Já está em camelCase
|
|
112
|
+
return nome;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Converte nome para snake_case.
|
|
116
|
+
*/
|
|
117
|
+
paraSnakeCase(nome) {
|
|
118
|
+
return (nome
|
|
119
|
+
// Adiciona underscore antes de letras maiúsculas
|
|
120
|
+
.replace(/([A-Z])/g, '_$1')
|
|
121
|
+
.toLowerCase()
|
|
122
|
+
// Remove underscores duplicados
|
|
123
|
+
.replace(/__+/g, '_')
|
|
124
|
+
// Remove underscore inicial se houver
|
|
125
|
+
.replace(/^_/, ''));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Converte nome para PascalCase.
|
|
129
|
+
*/
|
|
130
|
+
paraPascalCase(nome) {
|
|
131
|
+
const palavras = nome.split(/[_\s]+/);
|
|
132
|
+
return palavras.map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase()).join('');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Converte nome para UPPER_CASE.
|
|
136
|
+
*/
|
|
137
|
+
paraUpperCase(nome) {
|
|
138
|
+
return this.paraSnakeCase(nome).toUpperCase();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Valida se um nome está na convenção especificada.
|
|
142
|
+
*/
|
|
143
|
+
validarNome(nome, convencao) {
|
|
144
|
+
return nome === this.converterNome(nome, convencao);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.RegraConvencaoNomenclatura = RegraConvencaoNomenclatura;
|
|
148
|
+
//# sourceMappingURL=convencao-nomenclatura.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convencao-nomenclatura.js","sourceRoot":"","sources":["../../../fontes/estilizador/regras/convencao-nomenclatura.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Declaracao } from '../../declaracoes';
|
|
2
|
+
import { RegraEstilizacao } from '../../interfaces/estilizador-comum-interface';
|
|
3
|
+
/**
|
|
4
|
+
* Regra que fortalece tipos, convertendo `qualquer` para tipos inferidos.
|
|
5
|
+
*
|
|
6
|
+
* Exemplos:
|
|
7
|
+
* - `var x = 5` com tipo `qualquer` → `var x: número = 5`
|
|
8
|
+
* - `var nomes = []` com tipo `qualquer` → `var nomes: vetor = []`
|
|
9
|
+
* - `constante PI = 3.14` com tipo `qualquer` → `constante PI: número = 3.14`
|
|
10
|
+
*/
|
|
11
|
+
export declare class RegraFortalecerTipos implements RegraEstilizacao {
|
|
12
|
+
nome: string;
|
|
13
|
+
descricao: string;
|
|
14
|
+
aplicarEmDeclaracao(declaracao: Declaracao): Declaracao;
|
|
15
|
+
/**
|
|
16
|
+
* Fortalece o tipo de uma declaração Var.
|
|
17
|
+
*/
|
|
18
|
+
private fortalecerTipoVar;
|
|
19
|
+
/**
|
|
20
|
+
* Fortalece o tipo de uma declaração Const.
|
|
21
|
+
*/
|
|
22
|
+
private fortalecerTipoConst;
|
|
23
|
+
/**
|
|
24
|
+
* Infere o tipo de um construto.
|
|
25
|
+
*/
|
|
26
|
+
private inferirTipoDeConstruto;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=fortalecer-tipos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fortalecer-tipos.d.ts","sourceRoot":"","sources":["../../../fontes/estilizador/regras/fortalecer-tipos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAGhF;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IACzD,IAAI,SAAsB;IAC1B,SAAS,SAAoE;IAE7E,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAcvD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAcjC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RegraFortalecerTipos = void 0;
|
|
4
|
+
const declaracoes_1 = require("../../declaracoes");
|
|
5
|
+
const construtos_1 = require("../../construtos");
|
|
6
|
+
const inferenciador_1 = require("../../inferenciador");
|
|
7
|
+
/**
|
|
8
|
+
* Regra que fortalece tipos, convertendo `qualquer` para tipos inferidos.
|
|
9
|
+
*
|
|
10
|
+
* Exemplos:
|
|
11
|
+
* - `var x = 5` com tipo `qualquer` → `var x: número = 5`
|
|
12
|
+
* - `var nomes = []` com tipo `qualquer` → `var nomes: vetor = []`
|
|
13
|
+
* - `constante PI = 3.14` com tipo `qualquer` → `constante PI: número = 3.14`
|
|
14
|
+
*/
|
|
15
|
+
class RegraFortalecerTipos {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.nome = 'fortalecer-tipos';
|
|
18
|
+
this.descricao = 'Converte tipos `qualquer` para tipos inferidos quando possível';
|
|
19
|
+
}
|
|
20
|
+
aplicarEmDeclaracao(declaracao) {
|
|
21
|
+
// Fortalece tipos em declarações Var
|
|
22
|
+
if (declaracao instanceof declaracoes_1.Var) {
|
|
23
|
+
return this.fortalecerTipoVar(declaracao);
|
|
24
|
+
}
|
|
25
|
+
// Fortalece tipos em declarações Const
|
|
26
|
+
if (declaracao instanceof declaracoes_1.Const) {
|
|
27
|
+
return this.fortalecerTipoConst(declaracao);
|
|
28
|
+
}
|
|
29
|
+
return declaracao;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fortalece o tipo de uma declaração Var.
|
|
33
|
+
*/
|
|
34
|
+
fortalecerTipoVar(declaracao) {
|
|
35
|
+
// Se o tipo já foi explicitamente definido, não modifica
|
|
36
|
+
if (declaracao.tipoExplicito && declaracao.tipo !== 'qualquer') {
|
|
37
|
+
return declaracao;
|
|
38
|
+
}
|
|
39
|
+
// Se há um inicializador, tenta inferir o tipo
|
|
40
|
+
if (declaracao.inicializador) {
|
|
41
|
+
const tipoInferido = this.inferirTipoDeConstruto(declaracao.inicializador);
|
|
42
|
+
if (tipoInferido && tipoInferido !== 'qualquer') {
|
|
43
|
+
declaracao.tipo = tipoInferido;
|
|
44
|
+
declaracao.tipoExplicito = true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return declaracao;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Fortalece o tipo de uma declaração Const.
|
|
51
|
+
*/
|
|
52
|
+
fortalecerTipoConst(declaracao) {
|
|
53
|
+
// Se o tipo já foi explicitamente definido, não modifica
|
|
54
|
+
if (declaracao.tipoExplicito && declaracao.tipo !== 'qualquer') {
|
|
55
|
+
return declaracao;
|
|
56
|
+
}
|
|
57
|
+
// Se há um inicializador, tenta inferir o tipo
|
|
58
|
+
if (declaracao.inicializador) {
|
|
59
|
+
const tipoInferido = this.inferirTipoDeConstruto(declaracao.inicializador);
|
|
60
|
+
if (tipoInferido && tipoInferido !== 'qualquer') {
|
|
61
|
+
declaracao.tipo = tipoInferido;
|
|
62
|
+
declaracao.tipoExplicito = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return declaracao;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Infere o tipo de um construto.
|
|
69
|
+
*/
|
|
70
|
+
inferirTipoDeConstruto(construto) {
|
|
71
|
+
// Se é um literal, usa o tipo do literal
|
|
72
|
+
if (construto instanceof construtos_1.Literal) {
|
|
73
|
+
const tipoInferido = (0, inferenciador_1.inferirTipoVariavel)(construto.valor);
|
|
74
|
+
return typeof tipoInferido === 'string' ? tipoInferido : 'qualquer';
|
|
75
|
+
}
|
|
76
|
+
// Se o construto tem tipo definido, usa esse tipo
|
|
77
|
+
if ('tipo' in construto && construto.tipo) {
|
|
78
|
+
return construto.tipo;
|
|
79
|
+
}
|
|
80
|
+
return 'qualquer';
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.RegraFortalecerTipos = RegraFortalecerTipos;
|
|
84
|
+
//# sourceMappingURL=fortalecer-tipos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fortalecer-tipos.js","sourceRoot":"","sources":["../../../fontes/estilizador/regras/fortalecer-tipos.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAC/C,iDAAsD;AAEtD,uDAA0D;AAE1D;;;;;;;GAOG;AACH,MAAa,oBAAoB;IAAjC;QACI,SAAI,GAAG,kBAAkB,CAAC;QAC1B,cAAS,GAAG,gEAAgE,CAAC;IA6EjF,CAAC;IA3EG,mBAAmB,CAAC,UAAsB;QACtC,qCAAqC;QACrC,IAAI,UAAU,YAAY,iBAAG,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,uCAAuC;QACvC,IAAI,UAAU,YAAY,mBAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,UAAe;QACrC,yDAAyD;QACzD,IAAI,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7D,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,+CAA+C;QAC/C,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAE3E,IAAI,YAAY,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC9C,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC/B,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;YACpC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAiB;QACzC,yDAAyD;QACzD,IAAI,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7D,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,+CAA+C;QAC/C,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAE3E,IAAI,YAAY,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC9C,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC/B,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;YACpC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,SAAoB;QAC/C,yCAAyC;QACzC,IAAI,SAAS,YAAY,oBAAO,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAA,mCAAmB,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;QACxE,CAAC;QAED,kDAAkD;QAClD,IAAI,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC,IAAc,CAAC;QACpC,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AA/ED,oDA+EC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../fontes/estilizador/regras/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./fortalecer-tipos"), exports);
|
|
18
|
+
__exportStar(require("./convencao-nomenclatura"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../fontes/estilizador/regras/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC"}
|
package/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './avaliador-sintatico';
|
|
|
2
2
|
export * from './construtos';
|
|
3
3
|
export * from './declaracoes';
|
|
4
4
|
export { PontoParada } from './depuracao';
|
|
5
|
+
export * from './estilizador';
|
|
5
6
|
export * from './formatadores';
|
|
6
7
|
export * from './geracao-identificadores';
|
|
7
8
|
export * from './interfaces';
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
package/index.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./avaliador-sintatico"), exports);
|
|
18
18
|
__exportStar(require("./construtos"), exports);
|
|
19
19
|
__exportStar(require("./declaracoes"), exports);
|
|
20
|
+
__exportStar(require("./estilizador"), exports);
|
|
20
21
|
__exportStar(require("./formatadores"), exports);
|
|
21
22
|
__exportStar(require("./geracao-identificadores"), exports);
|
|
22
23
|
__exportStar(require("./interfaces"), exports);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,+CAA6B;AAC7B,gDAA8B;AAE9B,iDAA+B;AAC/B,4DAA0C;AAC1C,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B;AAC1B,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../fontes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,+CAA6B;AAC7B,gDAA8B;AAE9B,gDAA8B;AAC9B,iDAA+B;AAC/B,4DAA0C;AAC1C,+CAA6B;AAC7B,kDAAgC;AAChC,4CAA0B;AAC1B,+CAA6B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Declaracao } from '../declaracoes/declaracao';
|
|
2
|
+
import { Construto } from '../construtos';
|
|
3
|
+
/**
|
|
4
|
+
* Define uma regra de transformação/estilização de código.
|
|
5
|
+
*/
|
|
6
|
+
export interface RegraEstilizacao {
|
|
7
|
+
/**
|
|
8
|
+
* Nome da regra para identificação e logs.
|
|
9
|
+
*/
|
|
10
|
+
nome: string;
|
|
11
|
+
/**
|
|
12
|
+
* Descrição do que a regra faz.
|
|
13
|
+
*/
|
|
14
|
+
descricao: string;
|
|
15
|
+
/**
|
|
16
|
+
* Aplica a regra em uma declaração.
|
|
17
|
+
* @param declaracao A declaração a ser verificada/transformada.
|
|
18
|
+
* @returns A declaração (modificada ou não).
|
|
19
|
+
*/
|
|
20
|
+
aplicarEmDeclaracao?(declaracao: Declaracao): Declaracao;
|
|
21
|
+
/**
|
|
22
|
+
* Aplica a regra em um construto.
|
|
23
|
+
* @param construto O construto a ser verificado/transformado.
|
|
24
|
+
* @returns O construto (modificado ou não).
|
|
25
|
+
*/
|
|
26
|
+
aplicarEmConstruto?(construto: Construto): Construto;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Interface base para estilizadores de código.
|
|
30
|
+
* Um estilizador aplica transformações no AST para enforcar convenções e melhorar a qualidade do código.
|
|
31
|
+
*/
|
|
32
|
+
export interface EstilizadorComumInterface {
|
|
33
|
+
/**
|
|
34
|
+
* Regras de estilização ativas.
|
|
35
|
+
*/
|
|
36
|
+
regras: RegraEstilizacao[];
|
|
37
|
+
/**
|
|
38
|
+
* Adiciona uma regra de estilização.
|
|
39
|
+
* @param regra A regra a ser adicionada.
|
|
40
|
+
*/
|
|
41
|
+
adicionarRegra(regra: RegraEstilizacao): void;
|
|
42
|
+
/**
|
|
43
|
+
* Remove uma regra de estilização pelo nome.
|
|
44
|
+
* @param nomeRegra O nome da regra a ser removida.
|
|
45
|
+
*/
|
|
46
|
+
removerRegra(nomeRegra: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Aplica as regras de estilização em um conjunto de declarações.
|
|
49
|
+
* @param declaracoes As declarações a serem estilizadas.
|
|
50
|
+
* @returns As declarações estilizadas (modificadas ou não).
|
|
51
|
+
*/
|
|
52
|
+
estilizar(declaracoes: Declaracao[]): Declaracao[];
|
|
53
|
+
/**
|
|
54
|
+
* Valida se o código atende todas as regras sem aplicar transformações.
|
|
55
|
+
* @param declaracoes As declarações a serem validadas.
|
|
56
|
+
* @returns Array de violações encontradas.
|
|
57
|
+
*/
|
|
58
|
+
validar(declaracoes: Declaracao[]): ViolacaoEstilo[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Representa uma violação de estilo encontrada.
|
|
62
|
+
*/
|
|
63
|
+
export interface ViolacaoEstilo {
|
|
64
|
+
/**
|
|
65
|
+
* Nome da regra violada.
|
|
66
|
+
*/
|
|
67
|
+
regra: string;
|
|
68
|
+
/**
|
|
69
|
+
* Mensagem descritiva da violação.
|
|
70
|
+
*/
|
|
71
|
+
mensagem: string;
|
|
72
|
+
/**
|
|
73
|
+
* Linha onde a violação ocorreu.
|
|
74
|
+
*/
|
|
75
|
+
linha: number;
|
|
76
|
+
/**
|
|
77
|
+
* Hash do arquivo onde a violação ocorreu.
|
|
78
|
+
*/
|
|
79
|
+
hashArquivo: number;
|
|
80
|
+
/**
|
|
81
|
+
* Severidade da violação.
|
|
82
|
+
*/
|
|
83
|
+
severidade: 'erro' | 'aviso' | 'informacao';
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=estilizador-comum-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estilizador-comum-interface.d.ts","sourceRoot":"","sources":["../../fontes/interfaces/estilizador-comum-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IAEzD;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;;OAIG;IACH,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAEnD;;;;OAIG;IACH,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estilizador-comum-interface.js","sourceRoot":"","sources":["../../fontes/interfaces/estilizador-comum-interface.ts"],"names":[],"mappings":""}
|
package/interfaces/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fontes/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fontes/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
package/interfaces/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./avaliador-sintatico-interface"), exports);
|
|
18
|
+
__exportStar(require("./estilizador-comum-interface"), exports);
|
|
18
19
|
__exportStar(require("./formatador-comum-interface"), exports);
|
|
19
20
|
__exportStar(require("./interpretador-com-depuracao-interface"), exports);
|
|
20
21
|
__exportStar(require("./interpretador-interface"), exports);
|
package/interfaces/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../fontes/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,+DAA6C;AAC7C,0EAAwD;AACxD,4DAA0C;AAC1C,sDAAoC;AACpC,wDAAsC;AACtC,oDAAkC;AAClC,wDAAsC;AACtC,yDAAuC;AACvC,8EAA4D;AAC5D,wEAAsD;AACtD,sDAAoC;AACpC,uDAAqC;AACrC,uDAAqC;AACrC,8DAA4C;AAC5C,gEAA8C;AAE9C,+CAA6B;AAC7B,0CAAwB;AACxB,6CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../fontes/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,gEAA8C;AAC9C,+DAA6C;AAC7C,0EAAwD;AACxD,4DAA0C;AAC1C,sDAAoC;AACpC,wDAAsC;AACtC,oDAAkC;AAClC,wDAAsC;AACtC,yDAAuC;AACvC,8EAA4D;AAC5D,wEAAsD;AACtD,sDAAoC;AACpC,uDAAqC;AACrC,uDAAqC;AACrC,8DAA4C;AAC5C,gEAA8C;AAE9C,+CAA6B;AAC7B,0CAAwB;AACxB,6CAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comum.d.ts","sourceRoot":"","sources":["../../../fontes/interpretador/depuracao/comum.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAQ,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAS,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAa,IAAI,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EACH,kCAAkC,EAErC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAyC,aAAa,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAkB,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAgFlD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CACzB,aAAa,EAAE,kCAAkC,EACjD,SAAS,EAAE,SAAS,GAAG,UAAU,GAClC,OAAO,CAAC,GAAG,CAAC,CAad;AAED,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,kCAAkC,EACjD,kCAAkC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,EACxE,SAAS,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAYd;AAED,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,kCAAkC,EACjD,UAAU,EAAE,QAAQ,GACrB,OAAO,CAAC,GAAG,CAAC,CAuCd;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC1C,aAAa,EAAE,kCAAkC,EACjD,UAAU,EAAE,OAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CAmBd;AAED,wBAAsB,qBAAqB,CACvC,aAAa,EAAE,kCAAkC,EACjD,UAAU,EAAE,IAAI,GACjB,OAAO,CAAC,GAAG,CAAC,CAsEd;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC1C,aAAa,EAAE,kCAAkC,EACjD,iCAAiC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,EACxE,UAAU,EAAE,OAAO,GACpB,OAAO,CAAC,aAAa,CAAC,CAgCxB;AAsBD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CACzC,aAAa,EAAE,kCAAkC,EACjD,SAAS,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAqGd;AAoID;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAC/B,aAAa,EAAE,kCAAkC,EACjD,WAAW,EAAE,UAAU,EAAE,EACzB,aAAa,CAAC,EAAE,aAAa,GAC9B,OAAO,CAAC,GAAG,CAAC,CA+Dd;
|
|
1
|
+
{"version":3,"file":"comum.d.ts","sourceRoot":"","sources":["../../../fontes/interpretador/depuracao/comum.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAQ,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAS,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAa,IAAI,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EACH,kCAAkC,EAErC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAyC,aAAa,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAkB,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAgFlD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CACzB,aAAa,EAAE,kCAAkC,EACjD,SAAS,EAAE,SAAS,GAAG,UAAU,GAClC,OAAO,CAAC,GAAG,CAAC,CAad;AAED,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,kCAAkC,EACjD,kCAAkC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,EACxE,SAAS,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAYd;AAED,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,kCAAkC,EACjD,UAAU,EAAE,QAAQ,GACrB,OAAO,CAAC,GAAG,CAAC,CAuCd;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC1C,aAAa,EAAE,kCAAkC,EACjD,UAAU,EAAE,OAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CAmBd;AAED,wBAAsB,qBAAqB,CACvC,aAAa,EAAE,kCAAkC,EACjD,UAAU,EAAE,IAAI,GACjB,OAAO,CAAC,GAAG,CAAC,CAsEd;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC1C,aAAa,EAAE,kCAAkC,EACjD,iCAAiC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,EACxE,UAAU,EAAE,OAAO,GACpB,OAAO,CAAC,aAAa,CAAC,CAgCxB;AAsBD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CACzC,aAAa,EAAE,kCAAkC,EACjD,SAAS,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,CAqGd;AAoID;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAC/B,aAAa,EAAE,kCAAkC,EACjD,WAAW,EAAE,UAAU,EAAE,EACzB,aAAa,CAAC,EAAE,aAAa,GAC9B,OAAO,CAAC,GAAG,CAAC,CA+Dd;AAqHD;;;;;;;;;;GAUG;AACH,wBAAsB,oCAAoC,CACtD,aAAa,EAAE,kCAAkC,EACjD,mBAAmB,UAAQ,EAC3B,4BAA4B,UAAQ,GACrC,OAAO,CAAC,GAAG,CAAC,CAiEd;AAED;;;;;;;;GAQG;AACH,wBAAsB,+BAA+B,CACjD,aAAa,EAAE,kCAAkC,EACjD,MAAM,SAAI,GACX,OAAO,CAAC,GAAG,CAAC,CAUd;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAChC,aAAa,EAAE,kCAAkC,EACjD,MAAM,SAAI,gBA6Bb;AAWD,wBAAgB,oBAAoB,CAChC,aAAa,EAAE,kCAAkC,EACjD,WAAW,EAAE,UAAU,EAAE,EACzB,aAAa,CAAC,EAAE,aAAa,EAC7B,UAAU,GAAE,kBAA4B,QAY3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACtC,aAAa,EAAE,kCAAkC,EACjD,mBAAmB,UAAQ,EAC3B,4BAA4B,UAAQ,GACrC,OAAO,CAAC,GAAG,CAAC,CAqBd;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,aAAa,EAAE,kCAAkC,EACjD,IAAI,EAAE,MAAM,GACb,GAAG,CAaL"}
|
|
@@ -528,26 +528,30 @@ async function executarUmPassoNoEscopo(interpretador) {
|
|
|
528
528
|
let retornoExecucao;
|
|
529
529
|
if (interpretador.passos > 0) {
|
|
530
530
|
interpretador.passos--;
|
|
531
|
-
//
|
|
531
|
+
// Executa a declaração atual
|
|
532
532
|
const declaracaoAtual = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
|
|
533
|
-
interpretador.linhaDeclaracaoAtual = declaracaoAtual.linha;
|
|
534
|
-
interpretador.hashArquivoDeclaracaoAtual = declaracaoAtual.hashArquivo;
|
|
535
|
-
interpretador.pontoDeParadaAtivo = verificarPontoParada(interpretador, declaracaoAtual);
|
|
536
|
-
if (interpretador.pontoDeParadaAtivo) {
|
|
537
|
-
interpretador.avisoPontoParadaAtivado();
|
|
538
|
-
return retornoExecucao;
|
|
539
|
-
}
|
|
540
533
|
retornoExecucao = await interpretador.executar(declaracaoAtual);
|
|
541
534
|
// Verifica se entramos em um novo escopo durante a execução
|
|
542
535
|
const escoposDepois = interpretador.pilhaEscoposExecucao.elementos();
|
|
543
536
|
const entroEmNovoEscopo = escoposDepois > escoposAntes;
|
|
544
537
|
// Não incrementa se:
|
|
545
|
-
// - Há um ponto de parada ativo
|
|
538
|
+
// - Há um ponto de parada ativo (de escopo interno)
|
|
546
539
|
// - Estamos em um laço de repetição (o laço gerencia a iteração)
|
|
547
540
|
// - Entramos em um novo escopo (precisamos executar o novo escopo antes de avançar)
|
|
548
541
|
if (!interpretador.pontoDeParadaAtivo && !ultimoEscopo.emLacoRepeticao && !entroEmNovoEscopo) {
|
|
549
542
|
ultimoEscopo.declaracaoAtual++;
|
|
550
543
|
}
|
|
544
|
+
// Após executar e avançar, verifica se há ponto de parada na PRÓXIMA declaração
|
|
545
|
+
if (!interpretador.pontoDeParadaAtivo &&
|
|
546
|
+
ultimoEscopo.declaracaoAtual < ultimoEscopo.declaracoes.length) {
|
|
547
|
+
const proximaDeclaracao = ultimoEscopo.declaracoes[ultimoEscopo.declaracaoAtual];
|
|
548
|
+
interpretador.linhaDeclaracaoAtual = proximaDeclaracao.linha;
|
|
549
|
+
interpretador.hashArquivoDeclaracaoAtual = proximaDeclaracao.hashArquivo;
|
|
550
|
+
interpretador.pontoDeParadaAtivo = verificarPontoParada(interpretador, proximaDeclaracao);
|
|
551
|
+
if (interpretador.pontoDeParadaAtivo) {
|
|
552
|
+
interpretador.avisoPontoParadaAtivado();
|
|
553
|
+
}
|
|
554
|
+
}
|
|
551
555
|
if (ultimoEscopo.declaracaoAtual >= ultimoEscopo.declaracoes.length ||
|
|
552
556
|
ultimoEscopo.finalizado) {
|
|
553
557
|
if (retornoExecucao instanceof quebras_1.RetornoQuebra) {
|
|
@@ -555,6 +559,19 @@ async function executarUmPassoNoEscopo(interpretador) {
|
|
|
555
559
|
}
|
|
556
560
|
else {
|
|
557
561
|
descartarTodosEscoposFinalizados(interpretador);
|
|
562
|
+
// Se escopos foram descartados, precisamos incrementar o contador do escopo pai
|
|
563
|
+
// para avançar além da declaração que criou o escopo aninhado
|
|
564
|
+
const escoposAposLimpeza = interpretador.pilhaEscoposExecucao.elementos();
|
|
565
|
+
if (escoposAposLimpeza < escoposAntes && escoposAposLimpeza > 0) {
|
|
566
|
+
// Escopos foram removidos, avançar o contador do escopo pai
|
|
567
|
+
const escopoAtual = interpretador.pilhaEscoposExecucao.topoDaPilha();
|
|
568
|
+
// Só incrementa se ainda há declarações para executar neste escopo
|
|
569
|
+
// e não estamos em um laço de repetição
|
|
570
|
+
if (!escopoAtual.emLacoRepeticao &&
|
|
571
|
+
escopoAtual.declaracaoAtual < escopoAtual.declaracoes.length) {
|
|
572
|
+
escopoAtual.declaracaoAtual++;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
558
575
|
}
|
|
559
576
|
}
|
|
560
577
|
if (interpretador.pilhaEscoposExecucao.elementos() === 1) {
|
|
@@ -649,6 +666,11 @@ async function instrucaoContinuarInterpretacao(interpretador, escopo = 1) {
|
|
|
649
666
|
async function instrucaoPasso(interpretador, escopo = 1) {
|
|
650
667
|
// Limpa o ponto de parada para permitir a execução
|
|
651
668
|
interpretador.pontoDeParadaAtivo = false;
|
|
669
|
+
// Define comando como 'proximo' se não estiver definido (ex: chamado diretamente por instrucaoPasso)
|
|
670
|
+
// Preserva se já estiver definido (ex: 'adentrarEscopo' definido por adentrarEscopo())
|
|
671
|
+
if (!interpretador.comando) {
|
|
672
|
+
interpretador.comando = 'proximo';
|
|
673
|
+
}
|
|
652
674
|
interpretador.passos = 1;
|
|
653
675
|
const escopoVisitado = interpretador.pilhaEscoposExecucao.naPosicao(escopo);
|
|
654
676
|
if (escopo < interpretador.escopoAtual) {
|