@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 +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 +4 -2
- package/avaliador-sintatico/avaliador-sintatico-portugol-studio.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-portugol-studio.js +29 -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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"}
|
|
@@ -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":"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,
|
|
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') {
|
|
@@ -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
|
-
|
|
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();
|