@designliquido/delegua 0.26.3 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/bin/package.json +1 -1
  2. package/fontes/analisador-semantico/analisador-semantico.d.ts +8 -5
  3. package/fontes/analisador-semantico/analisador-semantico.js +55 -12
  4. package/fontes/analisador-semantico/analisador-semantico.js.map +1 -1
  5. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.d.ts +2 -2
  6. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js +12 -7
  7. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js.map +1 -1
  8. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +2 -0
  9. package/fontes/avaliador-sintatico/avaliador-sintatico.js +60 -10
  10. package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +1 -1
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +2 -2
  14. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
  15. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +2 -2
  16. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  17. package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js +5 -16
  18. package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js.map +1 -1
  19. package/fontes/avaliador-sintatico/micro-avaliador-sintatico.js +1 -1
  20. package/fontes/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
  21. package/fontes/construtos/{acesso-metodo.d.ts → acesso-metodo-ou-propriedade.d.ts} +1 -1
  22. package/fontes/construtos/{acesso-metodo.js → acesso-metodo-ou-propriedade.js} +4 -4
  23. package/fontes/construtos/acesso-metodo-ou-propriedade.js.map +1 -0
  24. package/fontes/construtos/index.d.ts +1 -1
  25. package/fontes/construtos/index.js +1 -1
  26. package/fontes/construtos/index.js.map +1 -1
  27. package/fontes/declaracoes/leia-multiplo.d.ts +2 -4
  28. package/fontes/declaracoes/leia-multiplo.js +2 -3
  29. package/fontes/declaracoes/leia-multiplo.js.map +1 -1
  30. package/fontes/declaracoes/var.d.ts +1 -0
  31. package/fontes/declaracoes/var.js +1 -0
  32. package/fontes/declaracoes/var.js.map +1 -1
  33. package/fontes/interfaces/erros/diagnostico-analisador-semantico.d.ts +14 -0
  34. package/fontes/interfaces/erros/diagnostico-analisador-semantico.js +11 -0
  35. package/fontes/interfaces/erros/diagnostico-analisador-semantico.js.map +1 -0
  36. package/fontes/interfaces/erros/index.d.ts +1 -1
  37. package/fontes/interfaces/erros/index.js +1 -1
  38. package/fontes/interfaces/erros/index.js.map +1 -1
  39. package/fontes/interfaces/retornos/retorno-analisador-semantico.d.ts +2 -2
  40. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +2 -2
  41. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  42. package/fontes/interpretador/dialetos/potigol/comum.d.ts +2 -2
  43. package/fontes/interpretador/dialetos/potigol/comum.js.map +1 -1
  44. package/fontes/interpretador/dialetos/potigol/interpretador-potigol-com-depuracao.d.ts +2 -2
  45. package/fontes/interpretador/dialetos/potigol/interpretador-potigol-com-depuracao.js.map +1 -1
  46. package/fontes/interpretador/dialetos/potigol/interpretador-potigol.d.ts +3 -2
  47. package/fontes/interpretador/dialetos/potigol/interpretador-potigol.js +13 -0
  48. package/fontes/interpretador/dialetos/potigol/interpretador-potigol.js.map +1 -1
  49. package/fontes/interpretador/interpretador-base.d.ts +1 -0
  50. package/fontes/interpretador/interpretador-base.js +142 -135
  51. package/fontes/interpretador/interpretador-base.js.map +1 -1
  52. package/fontes/tipos-de-dados/delegua.d.ts +8 -0
  53. package/fontes/tipos-de-dados/delegua.js +10 -0
  54. package/fontes/tipos-de-dados/delegua.js.map +1 -0
  55. package/fontes/tipos-de-dados/listas-delegua.d.ts +6 -0
  56. package/fontes/tipos-de-dados/listas-delegua.js +8 -0
  57. package/fontes/tipos-de-dados/listas-delegua.js.map +1 -0
  58. package/fontes/tipos-de-dados/listas-primitivos.d.ts +5 -0
  59. package/fontes/tipos-de-dados/listas-primitivos.js +7 -0
  60. package/fontes/tipos-de-dados/listas-primitivos.js.map +1 -0
  61. package/fontes/tipos-de-dados/primitivos.d.ts +16 -0
  62. package/fontes/tipos-de-dados/primitivos.js +18 -0
  63. package/fontes/tipos-de-dados/primitivos.js.map +1 -0
  64. package/fontes/tradutores/tradutor-assembly-x64.js +1 -1
  65. package/fontes/tradutores/tradutor-assembly-x64.js.map +1 -1
  66. package/fontes/tradutores/tradutor-assemblyscript.d.ts +3 -3
  67. package/fontes/tradutores/tradutor-assemblyscript.js +1 -1
  68. package/fontes/tradutores/tradutor-assemblyscript.js.map +1 -1
  69. package/fontes/tradutores/tradutor-javascript.d.ts +3 -3
  70. package/fontes/tradutores/tradutor-javascript.js +1 -1
  71. package/fontes/tradutores/tradutor-javascript.js.map +1 -1
  72. package/fontes/tradutores/tradutor-python.d.ts +3 -3
  73. package/fontes/tradutores/tradutor-python.js +1 -1
  74. package/fontes/tradutores/tradutor-python.js.map +1 -1
  75. package/package.json +1 -1
  76. package/fontes/construtos/acesso-metodo.js.map +0 -1
  77. package/fontes/interfaces/erros/erro-analisador-semantico.d.ts +0 -7
  78. package/fontes/interfaces/erros/erro-analisador-semantico.js +0 -3
  79. package/fontes/interfaces/erros/erro-analisador-semantico.js.map +0 -1
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designliquido/delegua",
3
- "version": "0.26.2",
3
+ "version": "0.27.0",
4
4
  "description": "Linguagem de programação simples e moderna usando português estruturado, com suporte a múltiplos dialetos",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,8 +1,8 @@
1
1
  import { Atribuir, Chamada, ExpressaoRegular, FimPara, FormatacaoEscrita, Literal, Super, TipoDe } from '../construtos';
2
- import { Bloco, Classe, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, LeiaMultiplo, Para, ParaCada, Retorna, Se, Sustar, Tente, Var, VarMultiplo } from '../declaracoes';
2
+ import { Bloco, Classe, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Falhar, Fazer, FuncaoDeclaracao, Importar, Leia, LeiaMultiplo, Para, ParaCada, Retorna, Se, Sustar, Tente, Var, VarMultiplo } from '../declaracoes';
3
3
  import { SimboloInterface } from '../interfaces';
4
4
  import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface';
5
- import { ErroAnalisadorSemantico } from '../interfaces/erros';
5
+ import { DiagnosticoAnalisadorSemantico } from '../interfaces/erros';
6
6
  import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
7
7
  import { TiposDadosInterface } from '../interfaces/tipos-dados-interface';
8
8
  import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
@@ -25,14 +25,16 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
25
25
  [nomeFuncao: string]: FuncaoHipoteticaInterface;
26
26
  };
27
27
  atual: number;
28
- erros: ErroAnalisadorSemantico[];
28
+ diagnosticos: DiagnosticoAnalisadorSemantico[];
29
29
  constructor();
30
30
  visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<any>;
31
- erro(simbolo: SimboloInterface, mensagemDeErro: string): void;
31
+ erro(simbolo: SimboloInterface, mensagem: string): void;
32
+ aviso(simbolo: SimboloInterface, mensagem: string): void;
32
33
  verificarTipoAtribuido(declaracao: Var | Const): void;
33
34
  visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
34
35
  private verificarTipoDe;
35
- visitarExpressaoFalhar(expressao: any): Promise<any>;
36
+ visitarExpressaoFalhar(expressao: Falhar): Promise<any>;
37
+ private verificarFalhar;
36
38
  visitarExpressaoLiteral(expressao: Literal): Promise<any>;
37
39
  visitarExpressaoAgrupamento(expressao: any): Promise<any>;
38
40
  visitarExpressaoUnaria(expressao: any): Promise<void>;
@@ -67,6 +69,7 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
67
69
  visitarExpressaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<void>;
68
70
  visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
69
71
  visitarDeclaracaoConst(declaracao: Const): Promise<any>;
72
+ virificarTipoDeclaracaoConst(declaracao: Const): Promise<any>;
70
73
  visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any>;
71
74
  visitarDeclaracaoVar(declaracao: Var): Promise<any>;
72
75
  visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<any>;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AnalisadorSemantico = void 0;
4
4
  const construtos_1 = require("../construtos");
5
5
  const declaracoes_1 = require("../declaracoes");
6
+ const erros_1 = require("../interfaces/erros");
6
7
  const pilha_variaveis_1 = require("./pilha-variaveis");
7
8
  class AnalisadorSemantico {
8
9
  constructor() {
@@ -10,17 +11,27 @@ class AnalisadorSemantico {
10
11
  this.variaveis = {};
11
12
  this.funcoes = {};
12
13
  this.atual = 0;
13
- this.erros = [];
14
+ this.diagnosticos = [];
14
15
  }
15
16
  visitarExpressaoExpressaoRegular(expressao) {
16
17
  return Promise.resolve();
17
18
  }
18
- erro(simbolo, mensagemDeErro) {
19
- this.erros.push({
19
+ erro(simbolo, mensagem) {
20
+ this.diagnosticos.push({
20
21
  simbolo: simbolo,
21
- mensagem: mensagemDeErro,
22
+ mensagem: mensagem,
22
23
  hashArquivo: simbolo.hashArquivo,
23
24
  linha: simbolo.linha,
25
+ severidade: erros_1.DiagnosticoSeveridade.ERRO
26
+ });
27
+ }
28
+ aviso(simbolo, mensagem) {
29
+ this.diagnosticos.push({
30
+ simbolo: simbolo,
31
+ mensagem: mensagem,
32
+ hashArquivo: simbolo.hashArquivo,
33
+ linha: simbolo.linha,
34
+ severidade: erros_1.DiagnosticoSeveridade.AVISO
24
35
  });
25
36
  }
26
37
  verificarTipoAtribuido(declaracao) {
@@ -82,6 +93,19 @@ class AnalisadorSemantico {
82
93
  return Promise.resolve();
83
94
  }
84
95
  visitarExpressaoFalhar(expressao) {
96
+ return this.verificarFalhar(expressao.explicacao);
97
+ }
98
+ verificarFalhar(valor) {
99
+ if (valor instanceof construtos_1.Binario) {
100
+ this.verificarFalhar(valor.direita);
101
+ this.verificarFalhar(valor.esquerda);
102
+ }
103
+ if (valor instanceof construtos_1.Agrupamento) {
104
+ return this.verificarFalhar(valor.expressao);
105
+ }
106
+ if (valor instanceof construtos_1.Variavel) {
107
+ return this.verificarVariavel(valor);
108
+ }
85
109
  return Promise.resolve();
86
110
  }
87
111
  visitarExpressaoLiteral(expressao) {
@@ -178,6 +202,11 @@ class AnalisadorSemantico {
178
202
  this.erro(expressao.simbolo, `Constante ${expressao.simbolo.lexema} não pode ser modificada.`);
179
203
  return Promise.resolve();
180
204
  }
205
+ else {
206
+ if (this.variaveis[expressao.simbolo.lexema]) {
207
+ this.variaveis[expressao.simbolo.lexema].valor = expressao.valor;
208
+ }
209
+ }
181
210
  }
182
211
  visitarExpressaoDeVariavel(expressao) {
183
212
  return Promise.resolve();
@@ -326,11 +355,15 @@ class AnalisadorSemantico {
326
355
  return Promise.resolve();
327
356
  }
328
357
  visitarDeclaracaoEscreva(declaracao) {
358
+ var _a;
329
359
  const variaveis = declaracao.argumentos.filter(arg => arg instanceof construtos_1.Variavel);
330
360
  for (let variavel of variaveis) {
331
361
  if (!this.variaveis[variavel.simbolo.lexema]) {
332
362
  this.erro(variavel.simbolo, `Variável '${variavel.simbolo.lexema}' não existe.`);
333
363
  }
364
+ if (((_a = this.variaveis[variavel.simbolo.lexema]) === null || _a === void 0 ? void 0 : _a.valor) === undefined) {
365
+ this.aviso(variavel.simbolo, `Variável '${variavel.simbolo.lexema}' não foi inicializada.`);
366
+ }
334
367
  }
335
368
  return Promise.resolve();
336
369
  }
@@ -343,12 +376,7 @@ class AnalisadorSemantico {
343
376
  visitarDeclaracaoConst(declaracao) {
344
377
  this.verificarTipoAtribuido(declaracao);
345
378
  if (this.variaveis.hasOwnProperty(declaracao.simbolo.lexema)) {
346
- this.erros.push({
347
- simbolo: declaracao.simbolo,
348
- mensagem: 'Declaração de constante já feita.',
349
- hashArquivo: declaracao.hashArquivo,
350
- linha: declaracao.linha,
351
- });
379
+ this.erro(declaracao.simbolo, 'Declaração de constante já feita.');
352
380
  }
353
381
  else {
354
382
  this.variaveis[declaracao.simbolo.lexema] = {
@@ -357,6 +385,21 @@ class AnalisadorSemantico {
357
385
  valor: declaracao.inicializador.valor
358
386
  };
359
387
  }
388
+ this.virificarTipoDeclaracaoConst(declaracao);
389
+ return Promise.resolve();
390
+ }
391
+ virificarTipoDeclaracaoConst(declaracao) {
392
+ if (declaracao.inicializador instanceof construtos_1.Binario) {
393
+ // verificar tipos iguais no lado esquerdo e direito
394
+ const binario = declaracao.inicializador;
395
+ this.verificarLadoBinario(binario.direita);
396
+ this.verificarLadoBinario(binario.esquerda);
397
+ const tipoDireita = typeof binario.direita.valor;
398
+ const tipoEsquerda = typeof binario.esquerda.valor;
399
+ if (tipoDireita !== tipoEsquerda) {
400
+ this.aviso(declaracao.simbolo, 'Declaração de constante com tipos diferentes.');
401
+ }
402
+ }
360
403
  return Promise.resolve();
361
404
  }
362
405
  visitarDeclaracaoConstMultiplo(declaracao) {
@@ -468,13 +511,13 @@ class AnalisadorSemantico {
468
511
  // this.pilhaVariaveis.empilhar()
469
512
  this.variaveis = {};
470
513
  this.atual = 0;
471
- this.erros = [];
514
+ this.diagnosticos = [];
472
515
  while (this.atual < declaracoes.length) {
473
516
  declaracoes[this.atual].aceitar(this);
474
517
  this.atual++;
475
518
  }
476
519
  return {
477
- erros: this.erros,
520
+ diagnosticos: this.diagnosticos,
478
521
  };
479
522
  }
480
523
  }
@@ -1 +1 @@
1
- {"version":3,"file":"analisador-semantico.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analisador-semantico.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Atribuir, ExpressaoRegular, FimPara, FormatacaoEscrita, Literal, Super, TipoDe } from '../../construtos';
2
2
  import { Bloco, Classe, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, LeiaMultiplo, Para, ParaCada, Retorna, Se, Sustar, Tente, Var, VarMultiplo } from '../../declaracoes';
3
3
  import { AnalisadorSemanticoInterface } from '../../interfaces/analisador-semantico-interface';
4
- import { ErroAnalisadorSemantico } from '../../interfaces/erros';
4
+ import { DiagnosticoAnalisadorSemantico } from '../../interfaces/erros';
5
5
  import { RetornoAnalisadorSemantico } from '../../interfaces/retornos/retorno-analisador-semantico';
6
6
  import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../quebras';
7
7
  import { PilhaVariaveis } from '../pilha-variaveis';
@@ -16,7 +16,7 @@ export declare class AnalisadorSemanticoBirl implements AnalisadorSemanticoInter
16
16
  [nomeVariavel: string]: VariavelHipoteticaInterface;
17
17
  };
18
18
  atual: number;
19
- erros: ErroAnalisadorSemantico[];
19
+ diagnosticos: DiagnosticoAnalisadorSemantico[];
20
20
  constructor();
21
21
  visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<any>;
22
22
  visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AnalisadorSemanticoBirl = void 0;
4
+ const erros_1 = require("../../interfaces/erros");
4
5
  const pilha_variaveis_1 = require("../pilha-variaveis");
5
6
  class AnalisadorSemanticoBirl {
6
7
  constructor() {
7
8
  this.pilhaVariaveis = new pilha_variaveis_1.PilhaVariaveis();
8
9
  this.variaveis = {};
9
10
  this.atual = 0;
10
- this.erros = [];
11
+ this.diagnosticos = [];
11
12
  }
12
13
  visitarExpressaoExpressaoRegular(expressao) {
13
14
  return Promise.resolve();
@@ -26,20 +27,22 @@ class AnalisadorSemanticoBirl {
26
27
  }
27
28
  visitarDeclaracaoDeAtribuicao(expressao) {
28
29
  if (!this.variaveis.hasOwnProperty(expressao.simbolo.lexema)) {
29
- this.erros.push({
30
+ this.diagnosticos.push({
30
31
  simbolo: expressao.simbolo,
31
32
  mensagem: `A variável ${expressao.simbolo.lexema} não foi declarada.`,
32
33
  hashArquivo: expressao.hashArquivo,
33
34
  linha: expressao.linha,
35
+ severidade: erros_1.DiagnosticoSeveridade.ERRO,
34
36
  });
35
37
  return Promise.resolve();
36
38
  }
37
39
  if (this.variaveis[expressao.simbolo.lexema].imutavel) {
38
- this.erros.push({
40
+ this.diagnosticos.push({
39
41
  simbolo: expressao.simbolo,
40
42
  mensagem: `Constante ${expressao.simbolo.lexema} não pode ser modificada.`,
41
43
  hashArquivo: expressao.hashArquivo,
42
44
  linha: expressao.linha,
45
+ severidade: erros_1.DiagnosticoSeveridade.ERRO,
43
46
  });
44
47
  return Promise.resolve();
45
48
  }
@@ -140,22 +143,24 @@ class AnalisadorSemanticoBirl {
140
143
  }
141
144
  visitarExpressaoLeia(expressao) {
142
145
  if (!this.variaveis.hasOwnProperty(expressao.argumentos[0].simbolo.lexema)) {
143
- this.erros.push({
146
+ this.diagnosticos.push({
144
147
  simbolo: expressao.argumentos[0].simbolo,
145
148
  mensagem: `A variável ${expressao.argumentos[0].simbolo.lexema} não foi declarada.`,
146
149
  hashArquivo: expressao.hashArquivo,
147
150
  linha: expressao.linha,
151
+ severidade: erros_1.DiagnosticoSeveridade.ERRO,
148
152
  });
149
153
  return Promise.resolve();
150
154
  }
151
155
  const tipoVariavelExpressão = this.variaveis[expressao.argumentos[0].simbolo.lexema].tipo;
152
156
  const tipoVariavelArgumento = expressao.argumentos[1].valor;
153
157
  if (tipoVariavelExpressão !== tipoVariavelArgumento) {
154
- this.erros.push({
158
+ this.diagnosticos.push({
155
159
  simbolo: expressao.argumentos[0].simbolo,
156
160
  mensagem: `A variável ${expressao.argumentos[0].simbolo.lexema} não é do tipo ${tipoVariavelArgumento}.`,
157
161
  hashArquivo: expressao.hashArquivo,
158
162
  linha: expressao.linha,
163
+ severidade: erros_1.DiagnosticoSeveridade.ERRO,
159
164
  });
160
165
  return Promise.resolve();
161
166
  }
@@ -188,13 +193,13 @@ class AnalisadorSemanticoBirl {
188
193
  analisar(declaracoes) {
189
194
  this.variaveis = {};
190
195
  this.atual = 0;
191
- this.erros = [];
196
+ this.diagnosticos = [];
192
197
  while (this.atual < declaracoes.length) {
193
198
  declaracoes[this.atual].aceitar(this);
194
199
  this.atual++;
195
200
  }
196
201
  return {
197
- erros: this.erros,
202
+ diagnosticos: this.diagnosticos,
198
203
  };
199
204
  }
200
205
  }
@@ -1 +1 @@
1
- {"version":3,"file":"analisador-semantico-birl.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/analisador-semantico-birl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analisador-semantico-birl.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/analisador-semantico-birl.ts"],"names":[],"mappings":"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"}
@@ -85,11 +85,13 @@ export declare class AvaliadorSintatico implements AvaliadorSintaticoInterface<S
85
85
  * ocorrer em blocos de escopo elementares.
86
86
  */
87
87
  resolverDeclaracao(): any;
88
+ protected declaracaoDesestruturacaoVariavel(): Declaracao[];
88
89
  /**
89
90
  * Caso símbolo atual seja `var`, devolve uma declaração de variável.
90
91
  * @returns Um Construto do tipo Var.
91
92
  */
92
93
  protected declaracaoDeVariaveis(): any;
94
+ protected declaracaoDesestruturacaoConstante(): Declaracao[];
93
95
  /**
94
96
  * Caso símbolo atual seja `const, constante ou fixo`, devolve uma declaração de const.
95
97
  * @returns Um Construto do tipo Const.
@@ -9,6 +9,7 @@ const browser_process_hrtime_1 = __importDefault(require("browser-process-hrtime
9
9
  const construtos_1 = require("../construtos");
10
10
  const erro_avaliador_sintatico_1 = require("./erro-avaliador-sintatico");
11
11
  const declaracoes_1 = require("../declaracoes");
12
+ const lexador_1 = require("../lexador");
12
13
  /**
13
14
  * O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
14
15
  * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
@@ -153,10 +154,19 @@ class AvaliadorSintatico {
153
154
  this.consumir(delegua_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
154
155
  return new construtos_1.Agrupamento(this.hashArquivo, Number(simboloAtual.linha), expressao);
155
156
  case delegua_1.default.SUPER:
156
- const simboloChave = this.avancarEDevolverAnterior();
157
- this.consumir(delegua_1.default.PONTO, "Esperado '.' após 'super'.");
158
- const metodo = this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome do método da Superclasse.');
159
- return new construtos_1.Super(this.hashArquivo, simboloChave, metodo);
157
+ const simboloSuper = this.avancarEDevolverAnterior();
158
+ // Se o próximo símbolo for uma abertura de parênteses, significa que
159
+ // é uma chamada ao construtor da classe ancestral (superclasse).
160
+ // Se o próximo símbolo for um ponto, significa que é uma chamada
161
+ // a um método da superclasse.
162
+ switch (this.simbolos[this.atual].tipo) {
163
+ case delegua_1.default.PARENTESE_ESQUERDO:
164
+ return new construtos_1.Super(this.hashArquivo, simboloSuper, new lexador_1.Simbolo(delegua_1.default.IDENTIFICADOR, 'construtor', null, simboloSuper.linha, this.hashArquivo));
165
+ default:
166
+ this.consumir(delegua_1.default.PONTO, "Esperado '.' após 'super'.");
167
+ const metodoSuperclasse = this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome do método da Superclasse.');
168
+ return new construtos_1.Super(this.hashArquivo, simboloSuper, metodoSuperclasse);
169
+ }
160
170
  case delegua_1.default.VERDADEIRO:
161
171
  this.avancarEDevolverAnterior();
162
172
  return new construtos_1.Literal(this.hashArquivo, Number(simboloAtual.linha), true);
@@ -168,9 +178,10 @@ class AvaliadorSintatico {
168
178
  case delegua_1.default.EXPRESSAO_REGULAR:
169
179
  let valor = '';
170
180
  let linhaAtual = this.simbolos[this.atual].linha;
171
- let eParExpressaoRegular = this.simbolos
172
- .filter(l => l.linha === linhaAtual && l.tipo === delegua_1.default.EXPRESSAO_REGULAR)
173
- .length % 2 === 0;
181
+ let eParExpressaoRegular = this.simbolos.filter((l) => l.linha === linhaAtual && l.tipo === delegua_1.default.EXPRESSAO_REGULAR)
182
+ .length %
183
+ 2 ===
184
+ 0;
174
185
  if (eParExpressaoRegular) {
175
186
  this.avancarEDevolverAnterior();
176
187
  while (!this.verificarTipoSimboloAtual(delegua_1.default.EXPRESSAO_REGULAR)) {
@@ -204,7 +215,7 @@ class AvaliadorSintatico {
204
215
  }
205
216
  else if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.PONTO)) {
206
217
  const nome = this.consumir(delegua_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
207
- expressao = new construtos_1.AcessoMetodo(this.hashArquivo, expressao, nome);
218
+ expressao = new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, expressao, nome);
208
219
  }
209
220
  else if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.COLCHETE_ESQUERDO)) {
210
221
  const indice = this.expressao();
@@ -353,7 +364,7 @@ class AvaliadorSintatico {
353
364
  const simbolo = expressao.simbolo;
354
365
  return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
355
366
  }
356
- else if (expressao instanceof construtos_1.AcessoMetodo) {
367
+ else if (expressao instanceof construtos_1.AcessoMetodoOuPropriedade) {
357
368
  const get = expressao;
358
369
  return new construtos_1.DefinirValor(this.hashArquivo, igual.linha, get.objeto, get.simbolo, valor);
359
370
  }
@@ -708,6 +719,22 @@ class AvaliadorSintatico {
708
719
  }
709
720
  return this.declaracaoExpressao();
710
721
  }
722
+ declaracaoDesestruturacaoVariavel() {
723
+ const identificadores = [];
724
+ do {
725
+ identificadores.push(this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome da variável.'));
726
+ } while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
727
+ this.consumir(delegua_1.default.CHAVE_DIREITA, 'Esperado chave direita para concluir relação de variáveis a serem desestruturadas.');
728
+ this.consumir(delegua_1.default.IGUAL, "Esperado igual após relação de propriedades da desestruturação.");
729
+ const inicializador = this.expressao();
730
+ // TODO: Para cada variável dos identificadores, emitir um `AcessoMetodoOuPropriedade` usando
731
+ // como prefixo o nome do inicializador, e o sufixo o nome de cada propriedade.
732
+ const retornos = [];
733
+ for (let identificador of identificadores) {
734
+ retornos.push(new declaracoes_1.Var(identificador, new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, inicializador, identificador)));
735
+ }
736
+ return retornos;
737
+ }
711
738
  /**
712
739
  * Caso símbolo atual seja `var`, devolve uma declaração de variável.
713
740
  * @returns Um Construto do tipo Var.
@@ -716,6 +743,9 @@ class AvaliadorSintatico {
716
743
  const identificadores = [];
717
744
  let retorno = [];
718
745
  let tipo = null;
746
+ if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.CHAVE_ESQUERDA)) {
747
+ return this.declaracaoDesestruturacaoVariavel();
748
+ }
719
749
  do {
720
750
  identificadores.push(this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome da variável.'));
721
751
  } while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
@@ -724,6 +754,7 @@ class AvaliadorSintatico {
724
754
  this.avancarEDevolverAnterior();
725
755
  }
726
756
  if (!this.verificarSeSimboloAtualEIgualA(delegua_1.default.IGUAL)) {
757
+ // Inicialização de variáveis sem valor.
727
758
  for (let [indice, identificador] of identificadores.entries()) {
728
759
  retorno.push(new declaracoes_1.Var(identificador, null, tipo));
729
760
  }
@@ -743,6 +774,22 @@ class AvaliadorSintatico {
743
774
  this.verificarSeSimboloAtualEIgualA(delegua_1.default.PONTO_E_VIRGULA);
744
775
  return retorno;
745
776
  }
777
+ declaracaoDesestruturacaoConstante() {
778
+ const identificadores = [];
779
+ do {
780
+ identificadores.push(this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome da variável.'));
781
+ } while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
782
+ this.consumir(delegua_1.default.CHAVE_DIREITA, 'Esperado chave direita para concluir relação de variáveis a serem desestruturadas.');
783
+ this.consumir(delegua_1.default.IGUAL, "Esperado igual após relação de propriedades da desestruturação.");
784
+ const inicializador = this.expressao();
785
+ // TODO: Para cada variável dos identificadores, emitir um `AcessoMetodoOuPropriedade` usando
786
+ // como prefixo o nome do inicializador, e o sufixo o nome de cada propriedade.
787
+ const retornos = [];
788
+ for (let identificador of identificadores) {
789
+ retornos.push(new declaracoes_1.Const(identificador, new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, inicializador, identificador)));
790
+ }
791
+ return retornos;
792
+ }
746
793
  /**
747
794
  * Caso símbolo atual seja `const, constante ou fixo`, devolve uma declaração de const.
748
795
  * @returns Um Construto do tipo Const.
@@ -750,6 +797,9 @@ class AvaliadorSintatico {
750
797
  declaracaoDeConstantes() {
751
798
  const identificadores = [];
752
799
  let tipo = null;
800
+ if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.CHAVE_ESQUERDA)) {
801
+ return this.declaracaoDesestruturacaoConstante();
802
+ }
753
803
  do {
754
804
  identificadores.push(this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome da constante.'));
755
805
  } while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
@@ -806,7 +856,7 @@ class AvaliadorSintatico {
806
856
  parametro.tipoDado = {
807
857
  nome: this.simbolos[this.atual - 2].lexema,
808
858
  tipo: tipoDadoParametro,
809
- tipoInvalido: !tipoDadoParametro ? this.simboloAtual().lexema : null
859
+ tipoInvalido: !tipoDadoParametro ? this.simboloAtual().lexema : null,
810
860
  };
811
861
  this.avancarEDevolverAnterior();
812
862
  }