@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.
Files changed (46) hide show
  1. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts +5 -0
  2. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  3. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +73 -2
  4. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  5. package/bin/package.json +1 -1
  6. package/estilizador/estilizador-delegua.d.ts +55 -0
  7. package/estilizador/estilizador-delegua.d.ts.map +1 -0
  8. package/estilizador/estilizador-delegua.js +228 -0
  9. package/estilizador/estilizador-delegua.js.map +1 -0
  10. package/estilizador/index.d.ts +3 -0
  11. package/estilizador/index.d.ts.map +1 -0
  12. package/estilizador/index.js +19 -0
  13. package/estilizador/index.js.map +1 -0
  14. package/estilizador/regras/convencao-nomenclatura.d.ts +79 -0
  15. package/estilizador/regras/convencao-nomenclatura.d.ts.map +1 -0
  16. package/estilizador/regras/convencao-nomenclatura.js +148 -0
  17. package/estilizador/regras/convencao-nomenclatura.js.map +1 -0
  18. package/estilizador/regras/fortalecer-tipos.d.ts +28 -0
  19. package/estilizador/regras/fortalecer-tipos.d.ts.map +1 -0
  20. package/estilizador/regras/fortalecer-tipos.js +84 -0
  21. package/estilizador/regras/fortalecer-tipos.js.map +1 -0
  22. package/estilizador/regras/index.d.ts +3 -0
  23. package/estilizador/regras/index.d.ts.map +1 -0
  24. package/estilizador/regras/index.js +19 -0
  25. package/estilizador/regras/index.js.map +1 -0
  26. package/index.d.ts +1 -0
  27. package/index.d.ts.map +1 -1
  28. package/index.js +1 -0
  29. package/index.js.map +1 -1
  30. package/interfaces/estilizador-comum-interface.d.ts +85 -0
  31. package/interfaces/estilizador-comum-interface.d.ts.map +1 -0
  32. package/interfaces/estilizador-comum-interface.js +3 -0
  33. package/interfaces/estilizador-comum-interface.js.map +1 -0
  34. package/interfaces/index.d.ts +1 -0
  35. package/interfaces/index.d.ts.map +1 -1
  36. package/interfaces/index.js +1 -0
  37. package/interfaces/index.js.map +1 -1
  38. package/interpretador/depuracao/comum.d.ts.map +1 -1
  39. package/interpretador/depuracao/comum.js +31 -9
  40. package/interpretador/depuracao/comum.js.map +1 -1
  41. package/interpretador/depuracao/interpretador-base-com-depuracao.d.ts +1 -1
  42. package/interpretador/depuracao/interpretador-base-com-depuracao.js +1 -1
  43. package/interpretador/depuracao/interpretador-com-depuracao.d.ts +1 -1
  44. package/interpretador/depuracao/interpretador-com-depuracao.js +1 -1
  45. package/package.json +1 -1
  46. 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,3 @@
1
+ export * from './fortalecer-tipos';
2
+ export * from './convencao-nomenclatura';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=estilizador-comum-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estilizador-comum-interface.js","sourceRoot":"","sources":["../../fontes/interfaces/estilizador-comum-interface.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  export * from './avaliador-sintatico-interface';
2
+ export * from './estilizador-comum-interface';
2
3
  export * from './formatador-comum-interface';
3
4
  export * from './interpretador-com-depuracao-interface';
4
5
  export * from './interpretador-interface';
@@ -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"}
@@ -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);
@@ -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;AAmGD;;;;;;;;;;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,gBAwBb;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"}
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
- // Verifica se ponto de parada antes de executar
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) {