@designliquido/delegua 1.23.3 → 1.23.5

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 (43) hide show
  1. package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
  2. package/analisador-semantico/analisador-semantico.js +1 -3
  3. package/analisador-semantico/analisador-semantico.js.map +1 -1
  4. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +3 -0
  5. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  6. package/avaliador-sintatico/avaliador-sintatico-base.js +16 -5
  7. package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  8. package/avaliador-sintatico/avaliador-sintatico.d.ts +2 -0
  9. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  10. package/avaliador-sintatico/avaliador-sintatico.js +45 -23
  11. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +9 -6
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +98 -27
  15. package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
  16. package/bin/package.json +1 -1
  17. package/construtos/binario.d.ts.map +1 -1
  18. package/construtos/binario.js +15 -0
  19. package/construtos/binario.js.map +1 -1
  20. package/interpretador/depuracao/comum.js +1 -1
  21. package/interpretador/depuracao/comum.js.map +1 -1
  22. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +2 -2
  23. package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -1
  24. package/interpretador/dialetos/pitugues/interpretador-pitugues.js +15 -25
  25. package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -1
  26. package/interpretador/estruturas/delegua-funcao.d.ts +1 -1
  27. package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
  28. package/interpretador/estruturas/delegua-funcao.js +21 -8
  29. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  30. package/interpretador/interpretador-base.d.ts +10 -1
  31. package/interpretador/interpretador-base.d.ts.map +1 -1
  32. package/interpretador/interpretador-base.js +92 -31
  33. package/interpretador/interpretador-base.js.map +1 -1
  34. package/interpretador/interpretador.d.ts +2 -7
  35. package/interpretador/interpretador.d.ts.map +1 -1
  36. package/interpretador/interpretador.js +41 -47
  37. package/interpretador/interpretador.js.map +1 -1
  38. package/lexador/lexador.d.ts +15 -13
  39. package/lexador/lexador.d.ts.map +1 -1
  40. package/lexador/lexador.js +52 -17
  41. package/lexador/lexador.js.map +1 -1
  42. package/package.json +1 -1
  43. package/umd/delegua.js +384 -164
@@ -1,5 +1,5 @@
1
1
  import { ConstrutoInterface } from '../../interfaces/construtos/construto-interface';
2
- import { AcessoMetodoOuPropriedade, Decorador, FuncaoConstruto, Leia, ListaCompreensao, ImportarComoConstruto } from '../../construtos';
2
+ import { AcessoMetodoOuPropriedade, Chamada, Decorador, FuncaoConstruto, Leia, ListaCompreensao, ImportarComoConstruto } from '../../construtos';
3
3
  import { Escreva, Se, Enquanto, Continua, Retorna, Escolha, Tente, Fazer, Var, FuncaoDeclaracao, Classe, Declaracao, Expressao, Sustar, Falhar, ParaCada, Comentario, PropriedadeClasse, TextoDocumentacao, Importar } from '../../declaracoes';
4
4
  import { AvaliadorSintaticoInterface, ParametroInterface, SimboloInterface } from '../../interfaces';
5
5
  import { Localizacao } from '../../lexador/dialetos/localizacao';
@@ -9,6 +9,7 @@ import { RetornoAvaliadorSintaticoInterface } from '../../interfaces/retornos/re
9
9
  import { PilhaEscopos } from '../pilha-escopos';
10
10
  import { InformacaoElementoSintatico } from '../../informacao-elemento-sintatico';
11
11
  import { ClasseDeModulo } from '../../interpretador/estruturas';
12
+ import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base';
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.
@@ -17,7 +18,7 @@ import { ClasseDeModulo } from '../../interpretador/estruturas';
17
18
  * A grande diferença entre este avaliador e os demais é a forma como são entendidos os blocos de escopo.
18
19
  * Este avaliador espera uma estrutura de pragmas, que explica quantos espaços há na frente de cada linha.
19
20
  */
20
- export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInterface<SimboloInterface, Declaracao> {
21
+ export declare class AvaliadorSintaticoPitugues extends AvaliadorSintaticoBase implements AvaliadorSintaticoInterface<SimboloInterface, Declaracao> {
21
22
  simbolos: SimboloInterface[];
22
23
  erros: ErroAvaliadorSintatico[];
23
24
  localizacoes: {
@@ -81,7 +82,7 @@ export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInt
81
82
  private transformarInterpolacaoEmFormatacao;
82
83
  private ignorarComentarios;
83
84
  primario(): Promise<ConstrutoInterface>;
84
- finalizarChamada(entidadeChamada: ConstrutoInterface): Promise<ConstrutoInterface>;
85
+ finalizarChamada(entidadeChamada: ConstrutoInterface): Promise<Chamada>;
85
86
  chamar(): Promise<ConstrutoInterface>;
86
87
  unario(): Promise<ConstrutoInterface>;
87
88
  exponenciacao(): Promise<ConstrutoInterface>;
@@ -90,6 +91,8 @@ export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInt
90
91
  bitShift(): Promise<ConstrutoInterface>;
91
92
  bitE(): Promise<ConstrutoInterface>;
92
93
  bitOu(): Promise<ConstrutoInterface>;
94
+ private eOperadorDeComparacao;
95
+ protected criarConstrutoComparacao(esquerda: ConstrutoInterface, operador: any, direita: ConstrutoInterface): ConstrutoInterface;
93
96
  comparar(): Promise<ConstrutoInterface>;
94
97
  comparacaoIgualdade(): Promise<ConstrutoInterface>;
95
98
  em(): Promise<ConstrutoInterface>;
@@ -99,7 +102,7 @@ export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInt
99
102
  tupla(): Promise<ConstrutoInterface>;
100
103
  bote(): Promise<ConstrutoInterface>;
101
104
  atribuir(): Promise<ConstrutoInterface>;
102
- declaracaoEscreva(simboloEscreva: SimboloInterface): Promise<Escreva>;
105
+ declaracaoEscreva(): Promise<Escreva>;
103
106
  declaracaoExpressao(): Promise<Expressao>;
104
107
  blocoEscopo(): Promise<any[]>;
105
108
  declaracaoEnquanto(): Promise<Enquanto>;
@@ -122,7 +125,7 @@ export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInt
122
125
  declaracaoTente(): Promise<Tente>;
123
126
  declaracaoFazer(): Promise<Fazer>;
124
127
  funcao(tipo: string, construtor?: boolean): Promise<FuncaoDeclaracao>;
125
- logicaComumParametros(): Promise<Array<Partial<ParametroInterface>>>;
128
+ logicaComumParametros(): Promise<ParametroInterface[]>;
126
129
  /**
127
130
  * Resolve uma lista de compreensão.
128
131
  * @param retornoExpressao A expressão já resolvida que representa o valor a ser retornado.
@@ -137,7 +140,7 @@ export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInt
137
140
  private resolverMetodoOuConstrutor;
138
141
  protected resolverMembroDeClasse(metodos: any[], propriedadesDeClasse: PropriedadeClasse[]): Promise<void>;
139
142
  declaracaoDeClasse(): Promise<Classe>;
140
- declaracaoFalhar(): Falhar;
143
+ declaracaoFalhar(): Promise<Falhar>;
141
144
  /**
142
145
  * Verifica se há pontos e vírgula no final de sentenças.
143
146
  * Em Pituguês, ; só é permitido para separar múltiplos comandos na mesma linha,
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-pitugues.d.ts","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avaliador-sintatico-pitugues.d.ts","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ const primitivas_numero_1 = __importDefault(require("../../bibliotecas/primitiva
23
23
  const primitivas_texto_1 = __importDefault(require("../../bibliotecas/primitivas-texto"));
24
24
  const primitivas_vetor_1 = __importDefault(require("../../bibliotecas/primitivas-vetor"));
25
25
  const primitivas_tupla_1 = __importDefault(require("../../bibliotecas/dialetos/pitugues/primitivas-tupla"));
26
+ const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
26
27
  /**
27
28
  * O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
28
29
  * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
@@ -31,8 +32,9 @@ const primitivas_tupla_1 = __importDefault(require("../../bibliotecas/dialetos/p
31
32
  * A grande diferença entre este avaliador e os demais é a forma como são entendidos os blocos de escopo.
32
33
  * Este avaliador espera uma estrutura de pragmas, que explica quantos espaços há na frente de cada linha.
33
34
  */
34
- class AvaliadorSintaticoPitugues {
35
+ class AvaliadorSintaticoPitugues extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
35
36
  constructor(performance = false) {
37
+ super();
36
38
  this.atual = 0;
37
39
  this.blocos = 0;
38
40
  this.performance = performance;
@@ -85,14 +87,27 @@ class AvaliadorSintaticoPitugues {
85
87
  return tipoPrevio;
86
88
  switch (inicializador.constructor) {
87
89
  case construtos_1.AcessoIndiceVariavel:
88
- const entidadeChamadaAcessoIndiceVariavel = inicializador
89
- .entidadeChamada;
90
- // Este condicional ocorre com chamadas aninhadas. Por exemplo, `vetor[1][2]`.
91
- if (entidadeChamadaAcessoIndiceVariavel.constructor === construtos_1.AcessoIndiceVariavel) {
92
- return this.logicaComumInferenciaTiposVariaveisEConstantes(entidadeChamadaAcessoIndiceVariavel, tipoPrevio);
90
+ const acessoAtual = inicializador;
91
+ let entidade = acessoAtual.entidadeChamada;
92
+ let numeroIndices = 1;
93
+ // Percorre acessos aninhados como `vetor[1][2]` contando quantos índices foram aplicados.
94
+ // Cada índice consome um nível de vetor, então removemos um '[]' por acesso.
95
+ while (entidade.constructor === construtos_1.AcessoIndiceVariavel) {
96
+ numeroIndices++;
97
+ entidade = entidade
98
+ .entidadeChamada;
93
99
  }
94
- if (entidadeChamadaAcessoIndiceVariavel.tipo.endsWith('[]')) {
95
- return entidadeChamadaAcessoIndiceVariavel.tipo.slice(0, -2);
100
+ const tipoBase = entidade.tipo;
101
+ if (tipoBase.endsWith('[]')) {
102
+ let tipoResultante = tipoBase;
103
+ for (let i = 0; i < numeroIndices; i++) {
104
+ if (tipoResultante.endsWith('[]')) {
105
+ tipoResultante = tipoResultante.slice(0, -2);
106
+ }
107
+ else
108
+ break;
109
+ }
110
+ return tipoResultante;
96
111
  }
97
112
  // Normalmente, `entidadeChamadaAcessoIndiceVariavel.tipo` aqui será 'vetor'.
98
113
  return 'qualquer';
@@ -518,6 +533,9 @@ class AvaliadorSintaticoPitugues {
518
533
  if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
519
534
  return new construtos_1.Vetor(this.hashArquivo, simboloAtual.linha, [], 'qualquer[]');
520
535
  }
536
+ if (this.verificarTipoSimboloAtual(pitugues_2.default.VIRGULA)) {
537
+ throw this.erro(this.simboloAtual(), 'Não podem haver duas vírgulas seguidas em uma definição de vetor, ou definição de vetor começando em vírgula.');
538
+ }
521
539
  // Ao resolver a expressão aqui, identificadores dentro da expressão de compreensão
522
540
  // de lista serão tratados como 'qualquer', para evitar erros de tipo.
523
541
  this.intuirTipoQualquerParaIdentificadores = true;
@@ -528,13 +546,35 @@ class AvaliadorSintaticoPitugues {
528
546
  }
529
547
  // Aqui já sabemos que não é uma compreensão de lista.
530
548
  const valoresVetor = [retornoExpressaoOuPrimeiroValor];
549
+ this.ignorarComentarios();
531
550
  while (!this.verificarSeSimboloAtualEIgualA(pitugues_2.default.COLCHETE_DIREITO)) {
532
- this.consumir(pitugues_2.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
533
- this.ignorarComentarios();
534
- valoresVetor.push(await this.atribuir());
535
- this.ignorarComentarios();
551
+ if (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA)) {
552
+ this.ignorarComentarios();
553
+ if (this.verificarTipoSimboloAtual(pitugues_2.default.VIRGULA)) {
554
+ throw this.erro(this.simboloAtual(), 'Não podem haver duas vírgulas seguidas em uma definição de vetor, ou definição de vetor começando em vírgula.');
555
+ }
556
+ }
557
+ else {
558
+ throw this.erro(this.simboloAtual() || simboloAtual, 'Os itens dos vetores devem ser separados através de uma vírgula.');
559
+ }
560
+ if (!this.verificarTipoSimboloAtual(pitugues_2.default.COLCHETE_DIREITO)) {
561
+ valoresVetor.push(await this.atribuir());
562
+ this.ignorarComentarios();
563
+ }
564
+ }
565
+ let tipoVetor;
566
+ if (valoresVetor.length === 0) {
567
+ tipoVetor = 'qualquer[]';
568
+ }
569
+ else {
570
+ const primeiroElemento = valoresVetor[0];
571
+ if (primeiroElemento instanceof construtos_1.Vetor) {
572
+ tipoVetor = primeiroElemento.tipo + '[]';
573
+ }
574
+ else {
575
+ tipoVetor = (0, inferenciador_1.inferirTipoVariavel)(valoresVetor);
576
+ }
536
577
  }
537
- const tipoVetor = (0, inferenciador_1.inferirTipoVariavel)(valoresVetor);
538
578
  return new construtos_1.Vetor(this.hashArquivo, simboloAtual.linha, valoresVetor, tipoVetor);
539
579
  case pitugues_2.default.COMENTARIO:
540
580
  const simboloComentario = this.avancarEDevolverAnterior();
@@ -759,14 +799,42 @@ class AvaliadorSintaticoPitugues {
759
799
  }
760
800
  return expressao;
761
801
  }
802
+ eOperadorDeComparacao(tipo) {
803
+ return [
804
+ pitugues_2.default.MAIOR,
805
+ pitugues_2.default.MAIOR_IGUAL,
806
+ pitugues_2.default.MENOR,
807
+ pitugues_2.default.MENOR_IGUAL
808
+ ].includes(tipo);
809
+ }
810
+ criarConstrutoComparacao(esquerda, operador, direita) {
811
+ let operandoCentral = null;
812
+ // Lógica de desugaring para comparações encadeadas (ex: 1 < x < 10)
813
+ if (esquerda instanceof construtos_1.Binario &&
814
+ this.eOperadorDeComparacao(esquerda.operador.tipo)) {
815
+ operandoCentral = esquerda.direita;
816
+ }
817
+ else if (esquerda instanceof construtos_1.Logico &&
818
+ esquerda.direita instanceof construtos_1.Binario &&
819
+ this.eOperadorDeComparacao(esquerda.direita.operador.tipo)) {
820
+ operandoCentral = esquerda.direita.direita;
821
+ }
822
+ if (operandoCentral !== null) {
823
+ const operadorE = {
824
+ tipo: pitugues_2.default.E,
825
+ lexema: 'e',
826
+ literal: null,
827
+ linha: operador.linha,
828
+ hashArquivo: this.hashArquivo
829
+ };
830
+ const novaComparacaoDireita = new construtos_1.Binario(this.hashArquivo, operandoCentral, operador, direita);
831
+ return new construtos_1.Logico(this.hashArquivo, esquerda, operadorE, novaComparacaoDireita);
832
+ }
833
+ // Se não for encadeada, cria o Binário normal
834
+ return new construtos_1.Binario(this.hashArquivo, esquerda, operador, direita);
835
+ }
762
836
  async comparar() {
763
- let expressao = await this.bitOu();
764
- while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.MAIOR, pitugues_2.default.MAIOR_IGUAL, pitugues_2.default.MENOR, pitugues_2.default.MENOR_IGUAL)) {
765
- const operador = this.simboloAnterior();
766
- const direito = await this.bitOu();
767
- expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
768
- }
769
- return expressao;
837
+ return await this.logicaComumComparacao(() => this.bitOu());
770
838
  }
771
839
  async comparacaoIgualdade() {
772
840
  let expressao = await this.comparar();
@@ -909,7 +977,10 @@ class AvaliadorSintaticoPitugues {
909
977
  }
910
978
  return expressao;
911
979
  }
912
- async declaracaoEscreva(simboloEscreva) {
980
+ async declaracaoEscreva() {
981
+ const simboloEscreva = this.simboloAnterior
982
+ ? this.simboloAnterior()
983
+ : this.simbolos[this.atual - 1];
913
984
  this.consumir(pitugues_2.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
914
985
  const argumentos = [];
915
986
  do {
@@ -1491,10 +1562,10 @@ class AvaliadorSintaticoPitugues {
1491
1562
  this.tiposDefinidosEmCodigo[definicaoClasse.simbolo.lexema] = definicaoClasse;
1492
1563
  return definicaoClasse;
1493
1564
  }
1494
- declaracaoFalhar() {
1565
+ async declaracaoFalhar() {
1495
1566
  const simboloFalha = this.simbolos[this.atual - 1];
1496
- const textoFalha = this.consumir(pitugues_2.default.TEXTO, 'Esperado texto para explicar falha.');
1497
- return new declaracoes_1.Falhar(simboloFalha, textoFalha.literal);
1567
+ const explicacao = await this.atribuir();
1568
+ return new declaracoes_1.Falhar(simboloFalha, explicacao);
1498
1569
  }
1499
1570
  /**
1500
1571
  * Verifica se há pontos e vírgula no final de sentenças.
@@ -1600,11 +1671,11 @@ class AvaliadorSintaticoPitugues {
1600
1671
  return this.declaracaoEscolha();
1601
1672
  case pitugues_2.default.IMPRIMA:
1602
1673
  case pitugues_2.default.ESCREVA:
1603
- const simboloEscrevaOuImprima = this.avancarEDevolverAnterior();
1604
- return this.declaracaoEscreva(simboloEscrevaOuImprima);
1674
+ this.avancarEDevolverAnterior();
1675
+ return this.declaracaoEscreva();
1605
1676
  case pitugues_2.default.FALHAR:
1606
1677
  this.avancarEDevolverAnterior();
1607
- return this.declaracaoFalhar();
1678
+ return await this.declaracaoFalhar();
1608
1679
  case pitugues_2.default.FAZER:
1609
1680
  this.avancarEDevolverAnterior();
1610
1681
  return this.declaracaoFazer();