@designliquido/portugol-studio 0.9.18 → 0.10.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.
- package/README.md +22 -1
- package/analisador-semantico/analisador-semantico-portugol-studio.d.ts +12 -4
- package/analisador-semantico/analisador-semantico-portugol-studio.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico-portugol-studio.js +147 -12
- package/analisador-semantico/analisador-semantico-portugol-studio.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-portugol-studio.d.ts +2 -1
- package/avaliador-sintatico/avaliador-sintatico-portugol-studio.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-portugol-studio.js +23 -13
- package/avaliador-sintatico/avaliador-sintatico-portugol-studio.js.map +1 -1
- package/bibliotecas/calendario.d.ts +19 -0
- package/bibliotecas/calendario.d.ts.map +1 -1
- package/bibliotecas/calendario.js +23 -4
- package/bibliotecas/calendario.js.map +1 -1
- package/bibliotecas/objetos.d.ts +2 -0
- package/bibliotecas/objetos.d.ts.map +1 -1
- package/bibliotecas/objetos.js +9 -1
- package/bibliotecas/objetos.js.map +1 -1
- package/bibliotecas/tipos.d.ts +1 -0
- package/bibliotecas/tipos.d.ts.map +1 -1
- package/bibliotecas/tipos.js +6 -2
- package/bibliotecas/tipos.js.map +1 -1
- package/formatador/formatador-portugol-studio.d.ts.map +1 -1
- package/formatador/formatador-portugol-studio.js +357 -75
- package/formatador/formatador-portugol-studio.js.map +1 -1
- package/interpretador/comum.d.ts.map +1 -1
- package/interpretador/comum.js +46 -10
- package/interpretador/comum.js.map +1 -1
- package/package.json +3 -3
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":"AAAA,OAAO,
|
|
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 '
|
|
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
|
-
|
|
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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"}
|
|
@@ -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[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-portugol-studio.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-portugol-studio.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,SAAS,EACT,eAAe,EAEf,IAAI,EAIP,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,OAAO,EACP,UAAU,EACV,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,SAAS,EACT,GAAG,EAEH,iBAAiB,EACjB,OAAO,EACP,KAAK,EACL,UAAU,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qEAAqE,CAAC;AAI7G,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAKzF,OAAO,EAAU,KAAK,EAAE,MAAM,eAAe,CAAC;AAK9C;;;;GAIG;AACH,qBAAa,gCAAiC,SAAQ,sBAAsB;IACxE,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAe;;IAOnC,yBAAyB,CAAC,IAAI,EAAE,MAAM;IAItC,wBAAwB;IAKxB,WAAW,IAAI,OAAO;IAOhB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAgB7B,wCAAwC;IA6DvC,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC;IAYzC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IA2D9B,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IA6B3C;;;;OAIG;IACY,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAmBvC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IA2BvC,2BAA2B,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAgB/D;;;;;;;OAOG;IACH,gBAAgB,IAAI,KAAK;IAqBnB,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAsBpC,YAAY,IAAI,OAAO,CAAC,EAAE,CAAC;IAqB3B,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAgBvC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IA8E3C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;IAoBvC,YAAY,IAAI,gBAAgB;IAIhC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;cAqBtC,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAoDhE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoB3D;;;;OAIG;IACH,oBAAoB,IAAI,GAAG;IAsDrB,2BAA2B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IA6B7C,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IA0B5C,8BAA8B,IAAI,UAAU;IAc5C,4BAA4B,IAAI,UAAU;IAKpC,mBAAmB,CAAC,eAAe,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAWjF;;;;;OAKG;cACa,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
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
|
-
|
|
519
|
-
|
|
520
|
-
throw this.erro(
|
|
521
|
-
|
|
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') {
|
|
@@ -684,6 +694,7 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
|
|
|
684
694
|
const simboloFuncao = this.avancarEDevolverAnterior();
|
|
685
695
|
// No Portugol Studio, se temos um símbolo de tipo após `função`,
|
|
686
696
|
// teremos um retorno no corpo da função.
|
|
697
|
+
let tipoRetorno;
|
|
687
698
|
if ([
|
|
688
699
|
lexico_regular_1.default.REAL,
|
|
689
700
|
lexico_regular_1.default.INTEIRO,
|
|
@@ -691,12 +702,11 @@ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.Avalia
|
|
|
691
702
|
lexico_regular_1.default.CARACTER,
|
|
692
703
|
lexico_regular_1.default.LOGICO,
|
|
693
704
|
].includes(this.simbolos[this.atual].tipo)) {
|
|
694
|
-
|
|
695
|
-
this.avancarEDevolverAnterior();
|
|
705
|
+
tipoRetorno = this.avancarEDevolverAnterior().lexema;
|
|
696
706
|
}
|
|
697
707
|
this.verificarSeSimboloAtualEIgualA(lexico_regular_1.default.VAZIO);
|
|
698
708
|
const nomeFuncao = this.consumir(lexico_regular_1.default.IDENTIFICADOR, `Esperado nome ${tipo}.`);
|
|
699
|
-
return new declaracoes_1.FuncaoDeclaracao(nomeFuncao, await this.corpoDaFuncao(tipo));
|
|
709
|
+
return new declaracoes_1.FuncaoDeclaracao(nomeFuncao, await this.corpoDaFuncao(tipo), tipoRetorno);
|
|
700
710
|
}
|
|
701
711
|
async declaracaoDeConstantes() {
|
|
702
712
|
let identificador;
|