@designliquido/portugol-studio 0.9.18 → 0.10.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/README.md CHANGED
@@ -45,4 +45,25 @@ A finalidade educacional deste dialeto serve a dois grandes propósitos:
45
45
 
46
46
  Este dialeto é distribuído como um pacote do [NPM](https://npmjs.com), e é compatível com qualquer versão de JavaScript e Node.js. O código é escrito em TypeScript, mas transpilado para JavaScript ES5, virtualmente compatível com 100% dos navegadores de internet disponíveis atualmente.
47
47
 
48
- Este dialeto pode ser utilizado como base para construir outras aplicações, como _sites_ de internet, aplicativos para dispositivos móveis e até mesmo scripts executados por linha de comando. É também agregado ao [pacote de Delégua para Node.js](https://github.com/DesignLiquido/delegua-node), o que permite a execução de fontes por linha de comando.
48
+ Este dialeto pode ser utilizado como base para construir outras aplicações, como _sites_ de internet, aplicativos para dispositivos móveis e até mesmo scripts executados por linha de comando. É também agregado ao [pacote de Delégua para Node.js](https://github.com/DesignLiquido/delegua-node), o que permite a execução de fontes por linha de comando.
49
+
50
+ ## Bibliotecas e integração com delegua-node
51
+
52
+ Adotamos a estratégia de integração conhecida no projeto como **Opção B** para bibliotecas dependentes de ambiente:
53
+
54
+ - Este pacote mantém os contratos de dialeto e a compatibilidade de importação das bibliotecas.
55
+ - Bibliotecas com dependência de ambiente/SO (como `Arquivos`, `Internet` e `Util`) têm implementação real fornecida pelo [delegua-node](https://github.com/DesignLiquido/delegua-node).
56
+ - Quando essa integração não está disponível no runtime atual, o importador retorna erro orientativo explícito apontando para o `delegua-node`.
57
+ - Não há carregamento automático dessas bibliotecas neste pacote: ao importá-las aqui, a orientação é executar o código em um ambiente apropriado (ex.: `delegua-node`).
58
+
59
+ Bibliotecas compartilhadas suportadas diretamente neste pacote:
60
+
61
+ - `Calendario`
62
+ - `Matematica`
63
+ - `Objetos`
64
+ - `Texto`
65
+ - `Tipos`
66
+
67
+ Contrato de fronteira para bibliotecas delegadas:
68
+
69
+ - `fontes/bibliotecas/CONTRATO-DELEGUA-NODE.md`
@@ -1,4 +1,4 @@
1
- import { Const, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, FuncaoDeclaracao, Retorna, Var } from '@designliquido/delegua/declaracoes';
1
+ import { Const, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Para, Se, Retorna, Var } from '@designliquido/delegua/declaracoes';
2
2
  import { AnalisadorSemanticoBase } from '@designliquido/delegua/analisador-semantico/analisador-semantico-base';
3
3
  import { SimboloInterface } from '@designliquido/delegua/interfaces';
4
4
  import { DiagnosticoAnalisadorSemantico, DiagnosticoSeveridade } from '@designliquido/delegua/interfaces/erros';
@@ -6,7 +6,7 @@ import { FuncaoHipoteticaInterface } from '@designliquido/delegua/interfaces/fun
6
6
  import { RetornoAnalisadorSemantico } from '@designliquido/delegua/interfaces/retornos/retorno-analisador-semantico';
7
7
  import { VariavelHipoteticaInterface } from '@designliquido/delegua/interfaces/variavel-hipotetica-interface';
8
8
  import { PilhaVariaveis } from './pilha-variaveis';
9
- import { AtribuicaoPorIndice, Atribuir, Chamada, Variavel } from '@designliquido/delegua/construtos';
9
+ import { AtribuicaoPorIndice, Atribuir, Chamada, Leia, Variavel } from '@designliquido/delegua/construtos';
10
10
  export declare class AnalisadorSemanticoPortugolStudio extends AnalisadorSemanticoBase {
11
11
  pilhaVariaveis: PilhaVariaveis;
12
12
  variaveis: {
@@ -18,6 +18,8 @@ export declare class AnalisadorSemanticoPortugolStudio extends AnalisadorSemanti
18
18
  atual: number;
19
19
  diagnosticos: DiagnosticoAnalisadorSemantico[];
20
20
  corpoMetodoPrincipal: any[];
21
+ /** Tipo de retorno declarado da função sendo analisada no momento. Nulo fora de funções. */
22
+ tipoRetornoFuncaoAtual: string | null;
21
23
  constructor();
22
24
  /**
23
25
  * Verifica o tipo atribuído a uma declaração
@@ -92,6 +94,8 @@ export declare class AnalisadorSemanticoPortugolStudio extends AnalisadorSemanti
92
94
  visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>;
93
95
  visitarExpressaoDeChamada(expressao: Chamada): Promise<any>;
94
96
  visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<any>;
97
+ private desenveloparExpressaoLeia;
98
+ visitarExpressaoLeia(expressao: Leia): Promise<any>;
95
99
  visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<void>;
96
100
  visitarDeclaracaoConst(declaracao: Const): Promise<any>;
97
101
  /**
@@ -102,12 +106,16 @@ export declare class AnalisadorSemanticoPortugolStudio extends AnalisadorSemanti
102
106
  * Visita declaração de enquanto com validação de condição
103
107
  */
104
108
  visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<void>;
109
+ private visitarCorpoCondicionalOuLoop;
110
+ visitarDeclaracaoSe(declaracao: Se): Promise<void>;
111
+ visitarDeclaracaoFazer(declaracao: Fazer): Promise<void>;
112
+ visitarDeclaracaoPara(declaracao: Para): Promise<void>;
105
113
  /**
106
- * Visita declaração de escolha com validação de tipos
114
+ * Visita declaração de escolha com validação de tipos e recursão nos corpos dos casos
107
115
  */
108
116
  visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>;
109
117
  /**
110
- * Visita declaração de retorna
118
+ * Visita declaração de retorna com validação básica do valor retornado
111
119
  */
112
120
  visitarExpressaoRetornar(declaracao: Retorna): Promise<any>;
113
121
  analisar(declaracoes: Declaracao[]): Promise<RetornoAnalisadorSemantico>;
@@ -1 +1 @@
1
- {"version":3,"file":"analisador-semantico-portugol-studio.d.ts","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico-portugol-studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analisador-semantico-portugol-studio.d.ts","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico-portugol-studio.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
16
16
  constructor() {
17
17
  super();
18
18
  this.corpoMetodoPrincipal = [];
19
+ /** Tipo de retorno declarado da função sendo analisada no momento. Nulo fora de funções. */
20
+ this.tipoRetornoFuncaoAtual = null;
19
21
  this.pilhaVariaveis = new pilha_variaveis_1.PilhaVariaveis();
20
22
  this.variaveis = {};
21
23
  this.funcoes = {};
@@ -136,12 +138,12 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
136
138
  /**
137
139
  * Verifica condições em estruturas de controle
138
140
  */
139
- verificarCondicao(condicao) {
141
+ verificarCondicao(condicao, contexto = 'fluxo-controle') {
140
142
  if (condicao instanceof construtos_1.Agrupamento) {
141
- return this.verificarCondicao(condicao.expressao);
143
+ return this.verificarCondicao(condicao.expressao, contexto);
142
144
  }
143
145
  if (condicao instanceof construtos_1.Variavel) {
144
- return this.verificarVariavelBinaria(condicao);
146
+ return this.verificarVariavelBinaria(condicao, contexto);
145
147
  }
146
148
  if (condicao instanceof construtos_1.Binario) {
147
149
  return this.verificarBinario(condicao);
@@ -157,13 +159,13 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
157
159
  /**
158
160
  * Verifica variável em contexto binário/condicional
159
161
  */
160
- verificarVariavelBinaria(variavel) {
162
+ verificarVariavelBinaria(variavel, contexto = 'fluxo-controle') {
161
163
  this.verificarVariavel(variavel);
162
164
  const variavelHipotetica = this.gerenciadorEscopos.buscar(variavel.simbolo.lexema);
163
165
  if (variavelHipotetica &&
164
166
  !(variavelHipotetica.valor instanceof construtos_1.Binario) &&
165
167
  typeof variavelHipotetica.valor !== 'boolean') {
166
- this.erro(variavel.simbolo, `Esperado tipo 'lógico' na condição do 'enquanto'.`);
168
+ this.erro(variavel.simbolo, `Esperado tipo 'lógico' na condição do '${contexto}'.`);
167
169
  }
168
170
  return Promise.resolve();
169
171
  }
@@ -364,7 +366,7 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
364
366
  });
365
367
  return Promise.resolve();
366
368
  }
367
- visitarDeclaracaoDefinicaoFuncao(declaracao) {
369
+ async visitarDeclaracaoDefinicaoFuncao(declaracao) {
368
370
  for (let parametro of declaracao.funcao.parametros) {
369
371
  if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado) {
370
372
  this.adicionarDiagnostico(declaracao.simbolo, `O tipo '${parametro.tipoDado}' não é valido`);
@@ -376,6 +378,29 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
376
378
  this.funcoes[declaracao.simbolo.lexema] = {
377
379
  valor: declaracao.funcao,
378
380
  };
381
+ // Analisa o corpo de funções definidas pelo usuário (exceto 'inicio', tratado em analisar())
382
+ if (declaracao.simbolo.lexema !== 'inicio') {
383
+ const tipoRetornoAnterior = this.tipoRetornoFuncaoAtual;
384
+ this.tipoRetornoFuncaoAtual = declaracao.tipo || null;
385
+ this.gerenciadorEscopos.empilharEscopo();
386
+ for (const parametro of declaracao.funcao.parametros) {
387
+ this.gerenciadorEscopos.declarar(parametro.nome.lexema, {
388
+ nome: parametro.nome.lexema,
389
+ tipo: parametro.tipoDado || 'qualquer',
390
+ imutavel: false,
391
+ valor: undefined,
392
+ inicializada: true,
393
+ usada: false,
394
+ hashArquivo: parametro.nome.hashArquivo,
395
+ linha: parametro.nome.linha,
396
+ });
397
+ }
398
+ for (const declaracaoCorpo of declaracao.funcao.corpo) {
399
+ await declaracaoCorpo.aceitar(this);
400
+ }
401
+ this.gerenciadorEscopos.desempilharEscopo();
402
+ this.tipoRetornoFuncaoAtual = tipoRetornoAnterior;
403
+ }
379
404
  return Promise.resolve();
380
405
  }
381
406
  visitarDeclaracaoVar(declaracao) {
@@ -587,6 +612,39 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
587
612
  this.visitarExpressaoDeAtribuicao(atribuir);
588
613
  return Promise.resolve();
589
614
  }
615
+ desenveloparExpressaoLeia(argumento) {
616
+ if (argumento instanceof declaracoes_1.Expressao) {
617
+ return this.desenveloparExpressaoLeia(argumento.expressao);
618
+ }
619
+ return argumento;
620
+ }
621
+ visitarExpressaoLeia(expressao) {
622
+ for (const argumento of expressao.argumentos) {
623
+ const construto = this.desenveloparExpressaoLeia(argumento);
624
+ if (construto instanceof construtos_1.Variavel) {
625
+ this.verificarVariavel(construto);
626
+ continue;
627
+ }
628
+ if (construto instanceof construtos_1.AcessoIndiceVariavel) {
629
+ if (construto.entidadeChamada instanceof construtos_1.Variavel) {
630
+ this.verificarVariavel(construto.entidadeChamada);
631
+ }
632
+ if (construto.indice instanceof construtos_1.Variavel) {
633
+ this.verificarVariavel(construto.indice);
634
+ }
635
+ continue;
636
+ }
637
+ const simbolo = (construto === null || construto === void 0 ? void 0 : construto.simbolo) || {
638
+ lexema: 'leia',
639
+ tipo: 'LEIA',
640
+ linha: expressao.simbolo.linha,
641
+ hashArquivo: expressao.simbolo.hashArquivo,
642
+ literal: null,
643
+ };
644
+ this.erro(simbolo, 'Argumento inválido em leia(). Esperado variável ou posição indexada de vetor/matriz.');
645
+ }
646
+ return Promise.resolve();
647
+ }
590
648
  visitarDeclaracaoDeExpressao(declaracao) {
591
649
  switch (declaracao.expressao.constructor) {
592
650
  case construtos_1.Atribuir:
@@ -601,6 +659,9 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
601
659
  case construtos_1.AtribuicaoPorIndice:
602
660
  this.visitarExpressaoAtribuicaoPorIndice(declaracao.expressao);
603
661
  break;
662
+ case construtos_1.Leia:
663
+ this.visitarExpressaoLeia(declaracao.expressao);
664
+ break;
604
665
  default:
605
666
  console.log(declaracao.expressao);
606
667
  break;
@@ -689,13 +750,55 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
689
750
  /**
690
751
  * Visita declaração de enquanto com validação de condição
691
752
  */
692
- visitarDeclaracaoEnquanto(declaracao) {
693
- return this.verificarCondicao(declaracao.condicao);
753
+ async visitarDeclaracaoEnquanto(declaracao) {
754
+ await this.verificarCondicao(declaracao.condicao, 'enquanto');
755
+ await this.visitarCorpoCondicionalOuLoop(declaracao.corpo);
756
+ }
757
+ async visitarCorpoCondicionalOuLoop(corpo) {
758
+ if (!corpo) {
759
+ return;
760
+ }
761
+ if (corpo instanceof declaracoes_1.Bloco) {
762
+ for (const declaracao of corpo.declaracoes) {
763
+ await declaracao.aceitar(this);
764
+ }
765
+ return;
766
+ }
767
+ await corpo.aceitar(this);
768
+ }
769
+ async visitarDeclaracaoSe(declaracao) {
770
+ await this.verificarCondicao(declaracao.condicao, 'se');
771
+ await this.visitarCorpoCondicionalOuLoop(declaracao.caminhoEntao);
772
+ await this.visitarCorpoCondicionalOuLoop(declaracao.caminhoSenao);
773
+ }
774
+ async visitarDeclaracaoFazer(declaracao) {
775
+ await this.visitarCorpoCondicionalOuLoop(declaracao.caminhoFazer);
776
+ await this.verificarCondicao(declaracao.condicaoEnquanto, 'faca-enquanto');
777
+ }
778
+ async visitarDeclaracaoPara(declaracao) {
779
+ if (declaracao.inicializador) {
780
+ if (Array.isArray(declaracao.inicializador)) {
781
+ for (const init of declaracao.inicializador) {
782
+ await init.aceitar(this);
783
+ }
784
+ }
785
+ else {
786
+ await declaracao.inicializador.aceitar(this);
787
+ }
788
+ }
789
+ if (declaracao.condicao) {
790
+ await this.verificarCondicao(declaracao.condicao, 'fluxo-controle');
791
+ }
792
+ if (declaracao.incrementar) {
793
+ this.marcarVariaveisUsadasEmExpressao(declaracao.incrementar);
794
+ }
795
+ await this.visitarCorpoCondicionalOuLoop(declaracao.corpo);
694
796
  }
695
797
  /**
696
- * Visita declaração de escolha com validação de tipos
798
+ * Visita declaração de escolha com validação de tipos e recursão nos corpos dos casos
697
799
  */
698
- visitarDeclaracaoEscolha(declaracao) {
800
+ async visitarDeclaracaoEscolha(declaracao) {
801
+ var _a;
699
802
  const identificadorOuLiteral = declaracao.identificadorOuLiteral;
700
803
  const tipo = identificadorOuLiteral.tipo;
701
804
  for (let caminho of declaracao.caminhos) {
@@ -722,13 +825,45 @@ class AnalisadorSemanticoPortugolStudio extends analisador_semantico_base_1.Anal
722
825
  break;
723
826
  }
724
827
  }
828
+ for (const declaracaoCorpo of caminho.declaracoes) {
829
+ await declaracaoCorpo.aceitar(this);
830
+ }
831
+ }
832
+ if ((_a = declaracao.caminhoPadrao) === null || _a === void 0 ? void 0 : _a.declaracoes) {
833
+ for (const declaracaoCorpo of declaracao.caminhoPadrao.declaracoes) {
834
+ await declaracaoCorpo.aceitar(this);
835
+ }
725
836
  }
726
- return Promise.resolve();
727
837
  }
728
838
  /**
729
- * Visita declaração de retorna
839
+ * Visita declaração de retorna com validação básica do valor retornado
730
840
  */
731
841
  visitarExpressaoRetornar(declaracao) {
842
+ if (declaracao.valor) {
843
+ this.marcarVariaveisUsadasEmExpressao(declaracao.valor);
844
+ if (declaracao.valor instanceof construtos_1.Variavel) {
845
+ this.verificarVariavel(declaracao.valor);
846
+ }
847
+ // Validação básica de compatibilidade de tipo com o tipo de retorno declarado da função
848
+ if (this.tipoRetornoFuncaoAtual && this.tipoRetornoFuncaoAtual !== 'qualquer' && this.tipoRetornoFuncaoAtual !== 'vazio') {
849
+ let tipoRetornado = null;
850
+ if (declaracao.valor instanceof construtos_1.Literal) {
851
+ tipoRetornado = (0, inferenciador_1.inferirTipoVariavel)(declaracao.valor.valor);
852
+ }
853
+ else if (declaracao.valor instanceof construtos_1.Variavel) {
854
+ const variavelEncontrada = this.gerenciadorEscopos.buscar(declaracao.valor.simbolo.lexema);
855
+ if (variavelEncontrada) {
856
+ tipoRetornado = variavelEncontrada.tipo || (0, inferenciador_1.inferirTipoVariavel)(variavelEncontrada.valor);
857
+ }
858
+ }
859
+ if (tipoRetornado && tipoRetornado !== this.tipoRetornoFuncaoAtual) {
860
+ const erroTipo = this.validarCompatibilidadeTipos(tipoRetornado, this.tipoRetornoFuncaoAtual);
861
+ if (erroTipo) {
862
+ this.adicionarDiagnostico(declaracao.simboloChave, `Tipo de retorno incompatível: função declarada como '${this.tipoRetornoFuncaoAtual}' mas retorna '${tipoRetornado}'.`);
863
+ }
864
+ }
865
+ }
866
+ }
732
867
  return Promise.resolve(null);
733
868
  }
734
869
  async analisar(declaracoes) {
@@ -1 +1 @@
1
- {"version":3,"file":"analisador-semantico-portugol-studio.js","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico-portugol-studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analisador-semantico-portugol-studio.js","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico-portugol-studio.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Construto, FuncaoConstruto, Leia } from '@designliquido/delegua/construtos';
2
- import { Escreva, Declaracao, Se, Enquanto, Para, Escolha, Fazer, FuncaoDeclaracao, Expressao, Var, EscrevaMesmaLinha, Retorna, Const, Comentario } from '@designliquido/delegua/declaracoes';
2
+ import { Escreva, Declaracao, Se, Enquanto, Para, Escolha, Fazer, FuncaoDeclaracao, Expressao, Var, EscrevaMesmaLinha, Retorna, Const, Comentario, Sustar } from '@designliquido/delegua/declaracoes';
3
3
  import { RetornoLexador, RetornoAvaliadorSintatico } from '@designliquido/delegua/interfaces/retornos';
4
4
  import { AvaliadorSintaticoBase } from '@designliquido/delegua/avaliador-sintatico/avaliador-sintatico-base';
5
5
  import { TipoInferencia } from '@designliquido/delegua/inferenciador';
@@ -62,13 +62,14 @@ export declare class AvaliadorSintaticoPortugolStudio extends AvaliadorSintatico
62
62
  declaracaoComentarioMultilinha(): Comentario;
63
63
  declaracaoComentarioUmaLinha(): Comentario;
64
64
  declaracaoExpressao(simboloAnterior?: SimboloInterface): Promise<Expressao>;
65
+ private obterTamanhoEsperadoDimensao;
65
66
  /**
66
67
  * Método recursivo que lê os valores de inicialização de uma matriz de N dimensões.
67
68
  * @param {Construto[]} dimensoes O número de dimensões faltantes.
68
69
  * Cada passo recursivo usa o primeiro valor e chama a função passando esse vetor, mas sem
69
70
  * o primeiro valor.
70
71
  */
71
- protected lerValoresAtribuicaoMatriz(dimensoes: Construto[]): Promise<any[]>;
72
+ protected lerValoresAtribuicaoMatriz(dimensoes: Construto[], indiceDimensaoAtual?: number): Promise<any[]>;
72
73
  protected declaracaoVetorOuMatriz(simboloTipo: SimboloInterface, identificador: SimboloInterface, dimensoes: Construto[], tipoDados?: string): Promise<Var>;
73
74
  protected declaracaoVariavelSemDimensoes(simboloInteiro: SimboloInterface, identificador: SimboloInterface, tipoDados?: string): Promise<Var>;
74
75
  protected logicaComumDimensoesMatrizes(): Promise<Construto[]>;
@@ -80,6 +81,7 @@ export declare class AvaliadorSintaticoPortugolStudio extends AvaliadorSintatico
80
81
  expressaoLeia(): Promise<Leia>;
81
82
  declaracaoLogicos(): Var[];
82
83
  declaracaoRetorne(): Promise<Retorna>;
84
+ declaracaoPare(): Sustar;
83
85
  declaracaoPara(): Promise<Para>;
84
86
  declaracaoReais(): Promise<Var[]>;
85
87
  expressao(): Promise<Construto>;
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-portugol-studio.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-portugol-studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avaliador-sintatico-portugol-studio.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-portugol-studio.ts"],"names":[],"mappings":"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"}
@@ -495,13 +495,26 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
495
495
  }
496
496
  return new declaracoes_1.Expressao(expressao);
497
497
  }
498
+ obterTamanhoEsperadoDimensao(construtoDimensao) {
499
+ if (!(construtoDimensao instanceof construtos_1.Literal)) {
500
+ return null;
501
+ }
502
+ if (typeof construtoDimensao.valor !== 'number') {
503
+ return null;
504
+ }
505
+ // -1 representa dimensão não especificada no Portugol Studio.
506
+ if (construtoDimensao.valor < 0) {
507
+ return null;
508
+ }
509
+ return Math.trunc(construtoDimensao.valor);
510
+ }
498
511
  /**
499
512
  * Método recursivo que lê os valores de inicialização de uma matriz de N dimensões.
500
513
  * @param {Construto[]} dimensoes O número de dimensões faltantes.
501
514
  * Cada passo recursivo usa o primeiro valor e chama a função passando esse vetor, mas sem
502
515
  * o primeiro valor.
503
516
  */
504
- async lerValoresAtribuicaoMatriz(dimensoes) {
517
+ async lerValoresAtribuicaoMatriz(dimensoes, indiceDimensaoAtual = 1) {
505
518
  this.consumir(lexico_regular_1.default.CHAVE_ESQUERDA, 'Esperado chave esquerda após sinal de igual em lado direito da atribuição de vetor.');
506
519
  // Neste caso, chave esquerda não é bloco.
507
520
  const valores = [];
@@ -510,18 +523,15 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
510
523
  valores.push(await this.primario());
511
524
  }
512
525
  else {
513
- const valoresProximaDimensao = await this.lerValoresAtribuicaoMatriz(dimensoes.slice(1));
526
+ const valoresProximaDimensao = await this.lerValoresAtribuicaoMatriz(dimensoes.slice(1), indiceDimensaoAtual + 1);
514
527
  valores.push(valoresProximaDimensao);
515
528
  }
516
529
  } while (this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VIRGULA));
517
- this.consumir(lexico_regular_1.default.CHAVE_DIREITA, 'Esperado chave direita após valores de vetor em lado direito da atribuição de vetor.');
518
- // TODO: Recolocar.
519
- /* if (dimensoes !== valores.length) {
520
- throw this.erro(
521
- simboloInteiro,
522
- `Esperado ${dimensoes} números, mas foram fornecidos ${valores.length} valores do lado direito da atribuição.`
523
- );
524
- } */
530
+ const simboloFechamento = this.consumir(lexico_regular_1.default.CHAVE_DIREITA, 'Esperado chave direita após valores de vetor em lado direito da atribuição de vetor.');
531
+ const tamanhoEsperado = this.obterTamanhoEsperadoDimensao(dimensoes[0]);
532
+ if (tamanhoEsperado !== null && tamanhoEsperado !== valores.length) {
533
+ throw this.erro(simboloFechamento, `Esperado ${tamanhoEsperado} valores na dimensão ${indiceDimensaoAtual}, mas foram fornecidos ${valores.length}.`);
534
+ }
525
535
  return valores;
526
536
  }
527
537
  async declaracaoVetorOuMatriz(simboloTipo, identificador, dimensoes, tipoDados = 'inteiro') {
@@ -624,6 +634,10 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
624
634
  }
625
635
  return new declaracoes_1.Retorna(simboloChave, valor);
626
636
  }
637
+ declaracaoPare() {
638
+ const simbolo = this.avancarEDevolverAnterior();
639
+ return new declaracoes_1.Sustar(simbolo);
640
+ }
627
641
  async declaracaoPara() {
628
642
  try {
629
643
  const simboloPara = this.avancarEDevolverAnterior();
@@ -684,6 +698,7 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
684
698
  const simboloFuncao = this.avancarEDevolverAnterior();
685
699
  // No Portugol Studio, se temos um símbolo de tipo após `função`,
686
700
  // teremos um retorno no corpo da função.
701
+ let tipoRetorno;
687
702
  if ([
688
703
  lexico_regular_1.default.REAL,
689
704
  lexico_regular_1.default.INTEIRO,
@@ -691,12 +706,11 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
691
706
  lexico_regular_1.default.CARACTER,
692
707
  lexico_regular_1.default.LOGICO,
693
708
  ].includes(this.simbolos[this.atual].tipo)) {
694
- // Por enquanto apenas consumimos o símbolo sem ações adicionais.
695
- this.avancarEDevolverAnterior();
709
+ tipoRetorno = this.avancarEDevolverAnterior().lexema;
696
710
  }
697
711
  this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VAZIO);
698
712
  const nomeFuncao = this.consumir(lexico_regular_1.default.IDENTIFICADOR, `Esperado nome ${tipo}.`);
699
- return new declaracoes_1.FuncaoDeclaracao(nomeFuncao, await this.corpoDaFuncao(tipo));
713
+ return new declaracoes_1.FuncaoDeclaracao(nomeFuncao, await this.corpoDaFuncao(tipo), tipoRetorno);
700
714
  }
701
715
  async declaracaoDeConstantes() {
702
716
  let identificador;
@@ -755,6 +769,8 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
755
769
  return this.declaracaoLogicos();
756
770
  case lexico_regular_1.default.PARA:
757
771
  return await this.declaracaoPara();
772
+ case lexico_regular_1.default.PARE:
773
+ return this.declaracaoPare();
758
774
  case lexico_regular_1.default.PROGRAMA:
759
775
  case lexico_regular_1.default.CHAVE_DIREITA:
760
776
  this.avancarEDevolverAnterior();