@designliquido/delegua 0.33.9 → 0.33.10
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/avaliador-sintatico/dialetos/index.d.ts +0 -1
- package/avaliador-sintatico/dialetos/index.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/index.js +0 -1
- package/avaliador-sintatico/dialetos/index.js.map +1 -1
- package/bin/package.json +1 -1
- package/formatadores/index.d.ts +0 -1
- package/formatadores/index.d.ts.map +1 -1
- package/formatadores/index.js +0 -1
- package/formatadores/index.js.map +1 -1
- package/interpretador/dialetos/index.d.ts +0 -1
- package/interpretador/dialetos/index.d.ts.map +1 -1
- package/interpretador/dialetos/index.js +0 -1
- package/interpretador/dialetos/index.js.map +1 -1
- package/lexador/dialetos/index.d.ts +0 -1
- package/lexador/dialetos/index.d.ts.map +1 -1
- package/lexador/dialetos/index.js +0 -1
- package/lexador/dialetos/index.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/index.d.ts +0 -1
- package/lexador/dialetos/palavras-reservadas/index.d.ts.map +1 -1
- package/lexador/dialetos/palavras-reservadas/index.js +1 -3
- package/lexador/dialetos/palavras-reservadas/index.js.map +1 -1
- package/package.json +1 -1
- package/tradutores/tradutor-assembly-x64.js +13 -13
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.d.ts +0 -57
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.d.ts.map +0 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js +0 -581
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js.map +0 -1
- package/formatadores/formatador-portugol-studio.d.ts +0 -70
- package/formatadores/formatador-portugol-studio.d.ts.map +0 -1
- package/formatadores/formatador-portugol-studio.js +0 -326
- package/formatadores/formatador-portugol-studio.js.map +0 -1
- package/interpretador/dialetos/portugol-studio/comum.d.ts +0 -10
- package/interpretador/dialetos/portugol-studio/comum.d.ts.map +0 -1
- package/interpretador/dialetos/portugol-studio/comum.js +0 -25
- package/interpretador/dialetos/portugol-studio/comum.js.map +0 -1
- package/interpretador/dialetos/portugol-studio/index.d.ts +0 -3
- package/interpretador/dialetos/portugol-studio/index.d.ts.map +0 -1
- package/interpretador/dialetos/portugol-studio/index.js +0 -19
- package/interpretador/dialetos/portugol-studio/index.js.map +0 -1
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio-com-depuracao.d.ts +0 -22
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio-com-depuracao.d.ts.map +0 -1
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio-com-depuracao.js +0 -43
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio-com-depuracao.js.map +0 -1
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.d.ts +0 -13
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.d.ts.map +0 -1
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.js +0 -21
- package/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.js.map +0 -1
- package/lexador/dialetos/lexador-portugol-studio.d.ts +0 -23
- package/lexador/dialetos/lexador-portugol-studio.d.ts.map +0 -1
- package/lexador/dialetos/lexador-portugol-studio.js +0 -286
- package/lexador/dialetos/lexador-portugol-studio.js.map +0 -1
- package/lexador/dialetos/palavras-reservadas/portugol-studio.d.ts +0 -29
- package/lexador/dialetos/palavras-reservadas/portugol-studio.d.ts.map +0 -1
- package/lexador/dialetos/palavras-reservadas/portugol-studio.js +0 -36
- package/lexador/dialetos/palavras-reservadas/portugol-studio.js.map +0 -1
- package/tipos-de-simbolos/portugol-studio.d.ts +0 -60
- package/tipos-de-simbolos/portugol-studio.d.ts.map +0 -1
- package/tipos-de-simbolos/portugol-studio.js +0 -61
- package/tipos-de-simbolos/portugol-studio.js.map +0 -1
|
@@ -1,581 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AvaliadorSintaticoPortugolStudio = void 0;
|
|
7
|
-
const construtos_1 = require("../../construtos");
|
|
8
|
-
const declaracoes_1 = require("../../declaracoes");
|
|
9
|
-
const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
|
|
10
|
-
const portugol_studio_1 = __importDefault(require("../../tipos-de-simbolos/portugol-studio"));
|
|
11
|
-
const erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
|
|
12
|
-
/**
|
|
13
|
-
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
14
|
-
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
15
|
-
* Há dois grupos de estruturas de alto nível: Construtos e Declarações.
|
|
16
|
-
*/
|
|
17
|
-
class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(...arguments);
|
|
20
|
-
this.declaracoes = [];
|
|
21
|
-
}
|
|
22
|
-
declaracaoEscreva() {
|
|
23
|
-
throw new Error('Método não implementado.');
|
|
24
|
-
}
|
|
25
|
-
validarEscopoPrograma() {
|
|
26
|
-
this.consumir(portugol_studio_1.default.PROGRAMA, "Esperada expressão 'programa' para inicializar programa.");
|
|
27
|
-
this.consumir(portugol_studio_1.default.CHAVE_ESQUERDA, "Esperada chave esquerda após expressão 'programa' para inicializar programa.");
|
|
28
|
-
while (!this.estaNoFinal()) {
|
|
29
|
-
const declaracaoOuVetor = this.resolverDeclaracaoForaDeBloco();
|
|
30
|
-
if (Array.isArray(declaracaoOuVetor)) {
|
|
31
|
-
this.declaracoes = this.declaracoes.concat(declaracaoOuVetor);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this.declaracoes.push(declaracaoOuVetor);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (this.simbolos[this.atual - 1].tipo !== portugol_studio_1.default.CHAVE_DIREITA) {
|
|
38
|
-
throw this.erro(this.simbolos[this.atual - 1], 'Esperado chave direita final para término do programa.');
|
|
39
|
-
}
|
|
40
|
-
const encontrarDeclaracaoInicio = this.declaracoes.filter((d) => d instanceof declaracoes_1.FuncaoDeclaracao && d.simbolo.lexema === 'inicio');
|
|
41
|
-
if (encontrarDeclaracaoInicio.length <= 0) {
|
|
42
|
-
throw this.erro(this.simbolos[0], "Função 'inicio()' para iniciar o programa não foi definida.");
|
|
43
|
-
}
|
|
44
|
-
// A última declaração do programa deve ser uma chamada a inicio()
|
|
45
|
-
const declaracaoInicio = encontrarDeclaracaoInicio[0];
|
|
46
|
-
this.declaracoes.push(new declaracoes_1.Expressao(new construtos_1.Chamada(declaracaoInicio.hashArquivo, declaracaoInicio.funcao, null, [])));
|
|
47
|
-
}
|
|
48
|
-
comparacaoIgualdade() {
|
|
49
|
-
let expressao = this.comparar();
|
|
50
|
-
while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.DIFERENTE, portugol_studio_1.default.IGUAL_IGUAL)) {
|
|
51
|
-
const simboloAnterior = this.simbolos[this.atual - 1];
|
|
52
|
-
const direito = this.comparar();
|
|
53
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, simboloAnterior, direito);
|
|
54
|
-
}
|
|
55
|
-
return expressao;
|
|
56
|
-
}
|
|
57
|
-
primario() {
|
|
58
|
-
const simboloAtual = this.simbolos[this.atual];
|
|
59
|
-
switch (simboloAtual.tipo) {
|
|
60
|
-
case portugol_studio_1.default.IDENTIFICADOR:
|
|
61
|
-
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
62
|
-
// Se o próximo símbolo é um incremento ou um decremento,
|
|
63
|
-
// aqui deve retornar um unário correspondente.
|
|
64
|
-
// Caso contrário, apenas retornar um construto de variável.
|
|
65
|
-
if (this.simbolos[this.atual] &&
|
|
66
|
-
[portugol_studio_1.default.INCREMENTAR, portugol_studio_1.default.DECREMENTAR].includes(this.simbolos[this.atual].tipo)) {
|
|
67
|
-
const simboloIncrementoDecremento = this.avancarEDevolverAnterior();
|
|
68
|
-
return new construtos_1.Unario(this.hashArquivo, simboloIncrementoDecremento, new construtos_1.Variavel(this.hashArquivo, simboloIdentificador), 'DEPOIS');
|
|
69
|
-
}
|
|
70
|
-
return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador);
|
|
71
|
-
case portugol_studio_1.default.PARENTESE_ESQUERDO:
|
|
72
|
-
this.avancarEDevolverAnterior();
|
|
73
|
-
const expressao = this.expressao();
|
|
74
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
75
|
-
return new construtos_1.Agrupamento(this.hashArquivo, Number(simboloAtual.linha), expressao);
|
|
76
|
-
case portugol_studio_1.default.CADEIA:
|
|
77
|
-
case portugol_studio_1.default.CARACTER:
|
|
78
|
-
case portugol_studio_1.default.INTEIRO:
|
|
79
|
-
case portugol_studio_1.default.REAL:
|
|
80
|
-
const simboloVariavel = this.avancarEDevolverAnterior();
|
|
81
|
-
return new construtos_1.Literal(this.hashArquivo, Number(simboloVariavel.linha), simboloVariavel.literal);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
chamar() {
|
|
85
|
-
let expressao = this.primario();
|
|
86
|
-
while (true) {
|
|
87
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.PARENTESE_ESQUERDO)) {
|
|
88
|
-
expressao = this.finalizarChamada(expressao);
|
|
89
|
-
}
|
|
90
|
-
else if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.COLCHETE_ESQUERDO)) {
|
|
91
|
-
const indices = [];
|
|
92
|
-
do {
|
|
93
|
-
indices.push(this.expressao());
|
|
94
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
95
|
-
const indice = indices[0];
|
|
96
|
-
const simboloFechamento = this.consumir(portugol_studio_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
97
|
-
expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return expressao;
|
|
104
|
-
}
|
|
105
|
-
atribuir() {
|
|
106
|
-
const expressao = this.ou();
|
|
107
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
108
|
-
const setaAtribuicao = this.simbolos[this.atual - 1];
|
|
109
|
-
const valor = this.atribuir();
|
|
110
|
-
if (expressao instanceof construtos_1.Variavel) {
|
|
111
|
-
const simbolo = expressao.simbolo;
|
|
112
|
-
return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
|
|
113
|
-
}
|
|
114
|
-
else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
|
|
115
|
-
return new construtos_1.AtribuicaoPorIndice(this.hashArquivo, expressao.linha, expressao.entidadeChamada, expressao.indice, valor);
|
|
116
|
-
}
|
|
117
|
-
this.erro(setaAtribuicao, 'Tarefa de atribuição inválida');
|
|
118
|
-
}
|
|
119
|
-
return expressao;
|
|
120
|
-
}
|
|
121
|
-
declaracaoEscrevaMesmaLinha() {
|
|
122
|
-
const simboloAtual = this.avancarEDevolverAnterior();
|
|
123
|
-
this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
|
|
124
|
-
const argumentos = [];
|
|
125
|
-
do {
|
|
126
|
-
argumentos.push(this.expressao());
|
|
127
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
128
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
|
|
129
|
-
return new declaracoes_1.EscrevaMesmaLinha(Number(simboloAtual.linha), simboloAtual.hashArquivo, argumentos);
|
|
130
|
-
}
|
|
131
|
-
blocoEscopo() {
|
|
132
|
-
this.consumir(portugol_studio_1.default.CHAVE_ESQUERDA, "Esperado '}' antes do bloco.");
|
|
133
|
-
let declaracoes = [];
|
|
134
|
-
while (!this.verificarTipoSimboloAtual(portugol_studio_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
135
|
-
const declaracaoOuVetor = this.resolverDeclaracaoForaDeBloco();
|
|
136
|
-
if (Array.isArray(declaracaoOuVetor)) {
|
|
137
|
-
declaracoes = declaracoes.concat(declaracaoOuVetor);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
declaracoes.push(declaracaoOuVetor);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
this.consumir(portugol_studio_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
|
|
144
|
-
return declaracoes;
|
|
145
|
-
}
|
|
146
|
-
declaracaoSe() {
|
|
147
|
-
this.avancarEDevolverAnterior();
|
|
148
|
-
this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
|
|
149
|
-
const condicao = this.expressao();
|
|
150
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
|
|
151
|
-
const caminhoEntao = this.resolverDeclaracaoForaDeBloco();
|
|
152
|
-
let caminhoSenao = null;
|
|
153
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.SENAO)) {
|
|
154
|
-
caminhoSenao = this.resolverDeclaracaoForaDeBloco();
|
|
155
|
-
}
|
|
156
|
-
return new declaracoes_1.Se(condicao, caminhoEntao, [], caminhoSenao);
|
|
157
|
-
}
|
|
158
|
-
declaracaoEnquanto() {
|
|
159
|
-
try {
|
|
160
|
-
this.avancarEDevolverAnterior();
|
|
161
|
-
this.blocos += 1;
|
|
162
|
-
this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
|
|
163
|
-
const condicao = this.expressao();
|
|
164
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após condição.");
|
|
165
|
-
const corpo = this.resolverDeclaracaoForaDeBloco();
|
|
166
|
-
return new declaracoes_1.Enquanto(condicao, corpo);
|
|
167
|
-
}
|
|
168
|
-
finally {
|
|
169
|
-
this.blocos -= 1;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
declaracaoEscolha() {
|
|
173
|
-
try {
|
|
174
|
-
this.avancarEDevolverAnterior();
|
|
175
|
-
this.blocos += 1;
|
|
176
|
-
const condicao = this.expressao();
|
|
177
|
-
this.consumir(portugol_studio_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do 'escolha'.");
|
|
178
|
-
const caminhos = [];
|
|
179
|
-
let caminhoPadrao = null;
|
|
180
|
-
while (!this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
181
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.CASO)) {
|
|
182
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.CONTRARIO)) {
|
|
183
|
-
if (caminhoPadrao !== null) {
|
|
184
|
-
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simbolos[this.atual], "Você só pode ter um 'contrario' em cada declaração de 'escolha'.");
|
|
185
|
-
this.erros.push(excecao);
|
|
186
|
-
throw excecao;
|
|
187
|
-
}
|
|
188
|
-
this.consumir(portugol_studio_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'contrario'.");
|
|
189
|
-
const declaracoes = [];
|
|
190
|
-
do {
|
|
191
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
192
|
-
this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.PARE);
|
|
193
|
-
} while (!this.verificarTipoSimboloAtual(portugol_studio_1.default.CASO) &&
|
|
194
|
-
!this.verificarTipoSimboloAtual(portugol_studio_1.default.CONTRARIO) &&
|
|
195
|
-
!this.verificarTipoSimboloAtual(portugol_studio_1.default.CHAVE_DIREITA));
|
|
196
|
-
caminhoPadrao = {
|
|
197
|
-
declaracoes,
|
|
198
|
-
};
|
|
199
|
-
break;
|
|
200
|
-
}
|
|
201
|
-
const caminhoCondicoes = [this.expressao()];
|
|
202
|
-
this.consumir(portugol_studio_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
|
|
203
|
-
while (this.verificarTipoSimboloAtual(portugol_studio_1.default.CASO)) {
|
|
204
|
-
this.consumir(portugol_studio_1.default.CASO, null);
|
|
205
|
-
caminhoCondicoes.push(this.expressao());
|
|
206
|
-
this.consumir(portugol_studio_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
|
|
207
|
-
}
|
|
208
|
-
let declaracoes = [];
|
|
209
|
-
do {
|
|
210
|
-
const retornoDeclaracao = this.resolverDeclaracaoForaDeBloco();
|
|
211
|
-
if (Array.isArray(retornoDeclaracao)) {
|
|
212
|
-
declaracoes = declaracoes.concat(retornoDeclaracao);
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
declaracoes.push(retornoDeclaracao);
|
|
216
|
-
}
|
|
217
|
-
this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.PARE);
|
|
218
|
-
} while (!this.verificarTipoSimboloAtual(portugol_studio_1.default.CASO) &&
|
|
219
|
-
!this.verificarTipoSimboloAtual(portugol_studio_1.default.CONTRARIO) &&
|
|
220
|
-
!this.verificarTipoSimboloAtual(portugol_studio_1.default.CHAVE_DIREITA));
|
|
221
|
-
caminhos.push({
|
|
222
|
-
condicoes: caminhoCondicoes,
|
|
223
|
-
declaracoes,
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
|
|
228
|
-
}
|
|
229
|
-
finally {
|
|
230
|
-
this.blocos -= 1;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* No Portugol Studio, a palavra reservada é `faca`, sem acento.
|
|
235
|
-
*/
|
|
236
|
-
declaracaoFazer() {
|
|
237
|
-
const simboloFaca = this.avancarEDevolverAnterior();
|
|
238
|
-
try {
|
|
239
|
-
this.blocos += 1;
|
|
240
|
-
const caminhoFazer = this.resolverDeclaracaoForaDeBloco();
|
|
241
|
-
this.consumir(portugol_studio_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
|
|
242
|
-
this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
|
|
243
|
-
const condicaoEnquanto = this.expressao();
|
|
244
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
|
|
245
|
-
return new declaracoes_1.Fazer(simboloFaca.hashArquivo, Number(simboloFaca.linha), caminhoFazer, condicaoEnquanto);
|
|
246
|
-
}
|
|
247
|
-
finally {
|
|
248
|
-
this.blocos -= 1;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
logicaComumParametros() {
|
|
252
|
-
const parametros = [];
|
|
253
|
-
do {
|
|
254
|
-
if (parametros.length >= 255) {
|
|
255
|
-
this.erro(this.simbolos[this.atual], 'Não pode haver mais de 255 parâmetros');
|
|
256
|
-
}
|
|
257
|
-
const parametro = {
|
|
258
|
-
abrangencia: 'padrao',
|
|
259
|
-
};
|
|
260
|
-
if (!this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.CADEIA, portugol_studio_1.default.REAL, portugol_studio_1.default.INTEIRO)) {
|
|
261
|
-
throw this.erro(this.simbolos[this.atual], 'Esperado tipo de parâmetro válido para declaração de função.');
|
|
262
|
-
}
|
|
263
|
-
parametro.nome = this.consumir(portugol_studio_1.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
|
|
264
|
-
// Em Portugol Studio, um parâmetro múltiplo é terminado por abre e fecha colchetes.
|
|
265
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.COLCHETE_ESQUERDO)) {
|
|
266
|
-
this.consumir(portugol_studio_1.default.COLCHETE_DIREITO, 'Esperado colchete direito após colchete esquerdo ao definir parâmetro múltiplo em função.');
|
|
267
|
-
parametro.abrangencia = 'multiplo';
|
|
268
|
-
}
|
|
269
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
270
|
-
parametro.valorPadrao = this.primario();
|
|
271
|
-
}
|
|
272
|
-
parametros.push(parametro);
|
|
273
|
-
if (parametro.abrangencia === 'multiplo')
|
|
274
|
-
break;
|
|
275
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
276
|
-
return parametros;
|
|
277
|
-
}
|
|
278
|
-
corpoDaFuncao(tipo) {
|
|
279
|
-
// O parêntese esquerdo é considerado o símbolo inicial para
|
|
280
|
-
// fins de pragma.
|
|
281
|
-
const parenteseEsquerdo = this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${tipo}.`);
|
|
282
|
-
let parametros = [];
|
|
283
|
-
if (!this.verificarTipoSimboloAtual(portugol_studio_1.default.PARENTESE_DIREITO)) {
|
|
284
|
-
parametros = this.logicaComumParametros();
|
|
285
|
-
}
|
|
286
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
287
|
-
const corpo = this.blocoEscopo();
|
|
288
|
-
return new construtos_1.FuncaoConstruto(this.hashArquivo, Number(parenteseEsquerdo.linha), parametros, corpo);
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Declaração de apenas uma variável.
|
|
292
|
-
* Neste caso, o símbolo que determina o tipo da variável já foi consumido,
|
|
293
|
-
* e o retorno conta com apenas uma variável retornada.
|
|
294
|
-
*/
|
|
295
|
-
declaracaoDeVariavel() {
|
|
296
|
-
switch (this.simboloAnterior().tipo) {
|
|
297
|
-
case portugol_studio_1.default.INTEIRO:
|
|
298
|
-
const identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'inteiro'.");
|
|
299
|
-
this.consumir(portugol_studio_1.default.IGUAL, 'Esperado símbolo igual para inicialização de variável.');
|
|
300
|
-
const literalInicializacao = this.consumir(portugol_studio_1.default.INTEIRO, 'Esperado literal inteiro após símbolo de igual em declaração de variável.');
|
|
301
|
-
const valorInicializacao = Number(literalInicializacao.literal);
|
|
302
|
-
return new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(literalInicializacao.linha), valorInicializacao));
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
declaracaoCadeiasCaracteres() {
|
|
306
|
-
const simboloCadeia = this.consumir(portugol_studio_1.default.CADEIA, '');
|
|
307
|
-
const inicializacoes = [];
|
|
308
|
-
do {
|
|
309
|
-
const identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'cadeia'.");
|
|
310
|
-
// Inicializações de variáveis podem ter valores definidos.
|
|
311
|
-
let valorInicializacao = '';
|
|
312
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
313
|
-
const literalInicializacao = this.consumir(portugol_studio_1.default.CADEIA, 'Esperado literal de cadeia de caracteres após símbolo de igual em declaração de variável.');
|
|
314
|
-
valorInicializacao = literalInicializacao.literal;
|
|
315
|
-
}
|
|
316
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCadeia.linha), valorInicializacao)));
|
|
317
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
318
|
-
return inicializacoes;
|
|
319
|
-
}
|
|
320
|
-
declaracaoCaracteres() {
|
|
321
|
-
const simboloCaracter = this.consumir(portugol_studio_1.default.CARACTER, '');
|
|
322
|
-
const inicializacoes = [];
|
|
323
|
-
do {
|
|
324
|
-
const identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'caracter'.");
|
|
325
|
-
// Inicializações de variáveis podem ter valores definidos.
|
|
326
|
-
let valorInicializacao = '';
|
|
327
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
328
|
-
const literalInicializacao = this.consumir(portugol_studio_1.default.CARACTER, 'Esperado literal de caracter após símbolo de igual em declaração de variável.');
|
|
329
|
-
valorInicializacao = literalInicializacao.literal;
|
|
330
|
-
}
|
|
331
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCaracter.linha), valorInicializacao)));
|
|
332
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
333
|
-
return inicializacoes;
|
|
334
|
-
}
|
|
335
|
-
declaracaoExpressao(simboloAnterior) {
|
|
336
|
-
const expressao = this.expressao();
|
|
337
|
-
// Ponto-e-vírgula é opcional aqui.
|
|
338
|
-
this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.PONTO_E_VIRGULA);
|
|
339
|
-
if (!expressao) {
|
|
340
|
-
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simboloAnterior, 'Esperado expressão.');
|
|
341
|
-
}
|
|
342
|
-
return new declaracoes_1.Expressao(expressao);
|
|
343
|
-
}
|
|
344
|
-
declaracaoVetorInteiros(simboloInteiro, identificador, posicoes) {
|
|
345
|
-
let valorInicializacao = new construtos_1.Vetor(this.hashArquivo, Number(simboloInteiro.linha), []);
|
|
346
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
347
|
-
this.consumir(portugol_studio_1.default.CHAVE_ESQUERDA, 'Esperado chave esquerda após sinal de igual em lado direito da atribuição de vetor.');
|
|
348
|
-
const valores = [];
|
|
349
|
-
do {
|
|
350
|
-
valores.push(this.primario());
|
|
351
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
352
|
-
this.consumir(portugol_studio_1.default.CHAVE_DIREITA, 'Esperado chave direita após valores de vetor em lado direito da atribuição de vetor.');
|
|
353
|
-
if (posicoes !== valores.length) {
|
|
354
|
-
throw this.erro(simboloInteiro, `Esperado ${posicoes} números, mas foram fornecidos ${valores.length} valores do lado direito da atribuição.`);
|
|
355
|
-
}
|
|
356
|
-
valorInicializacao.valores = valores;
|
|
357
|
-
}
|
|
358
|
-
return new declaracoes_1.Var(identificador, valorInicializacao);
|
|
359
|
-
}
|
|
360
|
-
declaracaoTrivialInteiro(simboloInteiro, identificador) {
|
|
361
|
-
// Inicializações de variáveis podem ter valores definidos.
|
|
362
|
-
let valorInicializacao = new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), 0);
|
|
363
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
364
|
-
valorInicializacao = this.expressao();
|
|
365
|
-
}
|
|
366
|
-
return new declaracoes_1.Var(identificador, valorInicializacao);
|
|
367
|
-
}
|
|
368
|
-
declaracaoInteiros() {
|
|
369
|
-
const simboloInteiro = this.consumir(portugol_studio_1.default.INTEIRO, '');
|
|
370
|
-
const inicializacoes = [];
|
|
371
|
-
do {
|
|
372
|
-
const identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'inteiro'.");
|
|
373
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.COLCHETE_ESQUERDO)) {
|
|
374
|
-
// TODO
|
|
375
|
-
const numeroPosicoes = this.consumir(portugol_studio_1.default.INTEIRO, 'Esperado número inteiro para definir quantas posições terá o vetor.');
|
|
376
|
-
this.consumir(portugol_studio_1.default.COLCHETE_DIREITO, 'Esperado fechamento de identificação de número de posições de uma declaração de vetor.');
|
|
377
|
-
inicializacoes.push(this.declaracaoVetorInteiros(simboloInteiro, identificador, Number(numeroPosicoes.literal)));
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
inicializacoes.push(this.declaracaoTrivialInteiro(simboloInteiro, identificador));
|
|
381
|
-
}
|
|
382
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
383
|
-
return inicializacoes;
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Análise de uma declaração `leia()`. No VisuAlg, `leia()` aceita 1..N argumentos.
|
|
387
|
-
* @returns Uma declaração `Leia`.
|
|
388
|
-
*/
|
|
389
|
-
declaracaoLeia() {
|
|
390
|
-
const simboloLeia = this.avancarEDevolverAnterior();
|
|
391
|
-
this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes do argumento em instrução `leia`.");
|
|
392
|
-
const argumentos = [];
|
|
393
|
-
do {
|
|
394
|
-
argumentos.push(this.resolverDeclaracaoForaDeBloco());
|
|
395
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
396
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após o argumento em instrução `leia`.");
|
|
397
|
-
return new declaracoes_1.Leia(simboloLeia, argumentos);
|
|
398
|
-
}
|
|
399
|
-
declaracaoLogicos() {
|
|
400
|
-
const simboloLogico = this.consumir(portugol_studio_1.default.LOGICO, '');
|
|
401
|
-
const inicializacoes = [];
|
|
402
|
-
do {
|
|
403
|
-
const identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'logico'.");
|
|
404
|
-
// Inicializações de variáveis podem ter valores definidos.
|
|
405
|
-
let valorInicializacao = false;
|
|
406
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
407
|
-
if (![portugol_studio_1.default.VERDADEIRO, portugol_studio_1.default.FALSO].includes(this.simbolos[this.atual].tipo)) {
|
|
408
|
-
throw this.erro(this.simbolos[this.atual], 'Esperado literal verdadeiro ou falso após símbolo de igual em declaração de variável.');
|
|
409
|
-
}
|
|
410
|
-
const literalInicializacao = this.avancarEDevolverAnterior();
|
|
411
|
-
valorInicializacao = literalInicializacao.lexema.toLowerCase() === 'verdadeiro' ? true : false;
|
|
412
|
-
}
|
|
413
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloLogico.linha), valorInicializacao)));
|
|
414
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
415
|
-
return inicializacoes;
|
|
416
|
-
}
|
|
417
|
-
declaracaoRetorne() {
|
|
418
|
-
this.avancarEDevolverAnterior();
|
|
419
|
-
const simboloChave = this.simbolos[this.atual];
|
|
420
|
-
let valor = null;
|
|
421
|
-
if ([
|
|
422
|
-
portugol_studio_1.default.CADEIA,
|
|
423
|
-
portugol_studio_1.default.CARACTER,
|
|
424
|
-
portugol_studio_1.default.FALSO,
|
|
425
|
-
portugol_studio_1.default.IDENTIFICADOR,
|
|
426
|
-
portugol_studio_1.default.INTEIRO,
|
|
427
|
-
portugol_studio_1.default.NEGACAO,
|
|
428
|
-
portugol_studio_1.default.REAL,
|
|
429
|
-
portugol_studio_1.default.VERDADEIRO,
|
|
430
|
-
].includes(this.simbolos[this.atual].tipo)) {
|
|
431
|
-
valor = this.expressao();
|
|
432
|
-
}
|
|
433
|
-
return new declaracoes_1.Retorna(simboloChave, valor);
|
|
434
|
-
}
|
|
435
|
-
declaracaoPara() {
|
|
436
|
-
try {
|
|
437
|
-
const simboloPara = this.avancarEDevolverAnterior();
|
|
438
|
-
this.blocos += 1;
|
|
439
|
-
this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
|
|
440
|
-
let inicializador;
|
|
441
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.PONTO_E_VIRGULA)) {
|
|
442
|
-
inicializador = null;
|
|
443
|
-
}
|
|
444
|
-
else if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.INTEIRO)) {
|
|
445
|
-
inicializador = this.declaracaoDeVariavel();
|
|
446
|
-
}
|
|
447
|
-
else {
|
|
448
|
-
inicializador = this.declaracaoExpressao();
|
|
449
|
-
}
|
|
450
|
-
let condicao = null;
|
|
451
|
-
if (!this.verificarTipoSimboloAtual(portugol_studio_1.default.PONTO_E_VIRGULA)) {
|
|
452
|
-
condicao = this.expressao();
|
|
453
|
-
}
|
|
454
|
-
let incrementar = null;
|
|
455
|
-
if (!this.verificarTipoSimboloAtual(portugol_studio_1.default.PARENTESE_DIREITO)) {
|
|
456
|
-
incrementar = this.expressao();
|
|
457
|
-
this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.INCREMENTAR, portugol_studio_1.default.DECREMENTAR);
|
|
458
|
-
}
|
|
459
|
-
this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
|
|
460
|
-
const corpo = this.resolverDeclaracaoForaDeBloco();
|
|
461
|
-
return new declaracoes_1.Para(this.hashArquivo, Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
|
|
462
|
-
}
|
|
463
|
-
finally {
|
|
464
|
-
this.blocos -= 1;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
declaracaoReais() {
|
|
468
|
-
const simboloReal = this.consumir(portugol_studio_1.default.REAL, '');
|
|
469
|
-
const inicializacoes = [];
|
|
470
|
-
do {
|
|
471
|
-
const identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'real'.");
|
|
472
|
-
// Inicializações de variáveis podem ter valores definidos.
|
|
473
|
-
let valorInicializacao = 0;
|
|
474
|
-
if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
|
|
475
|
-
const literalInicializacao = this.consumir(portugol_studio_1.default.REAL, 'Esperado literal real após símbolo de igual em declaração de variável.');
|
|
476
|
-
valorInicializacao = Number(literalInicializacao.literal);
|
|
477
|
-
}
|
|
478
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloReal.linha), valorInicializacao)));
|
|
479
|
-
} while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
|
|
480
|
-
return inicializacoes;
|
|
481
|
-
}
|
|
482
|
-
expressao() {
|
|
483
|
-
// if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.LEIA)) return this.declaracaoLeia();
|
|
484
|
-
return this.atribuir();
|
|
485
|
-
}
|
|
486
|
-
funcao(tipo) {
|
|
487
|
-
const simboloFuncao = this.avancarEDevolverAnterior();
|
|
488
|
-
// No Portugol Studio, se temos um símbolo de tipo após `função`,
|
|
489
|
-
// teremos um retorno no corpo da função.
|
|
490
|
-
if ([
|
|
491
|
-
portugol_studio_1.default.REAL,
|
|
492
|
-
portugol_studio_1.default.INTEIRO,
|
|
493
|
-
portugol_studio_1.default.CADEIA,
|
|
494
|
-
portugol_studio_1.default.CARACTER,
|
|
495
|
-
portugol_studio_1.default.LOGICO,
|
|
496
|
-
].includes(this.simbolos[this.atual].tipo)) {
|
|
497
|
-
// Por enquanto apenas consumimos o símbolo sem ações adicionais.
|
|
498
|
-
this.avancarEDevolverAnterior();
|
|
499
|
-
}
|
|
500
|
-
this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VAZIO);
|
|
501
|
-
const nomeFuncao = this.consumir(portugol_studio_1.default.IDENTIFICADOR, `Esperado nome ${tipo}.`);
|
|
502
|
-
return new declaracoes_1.FuncaoDeclaracao(nomeFuncao, this.corpoDaFuncao(tipo));
|
|
503
|
-
}
|
|
504
|
-
declaracaoDeConstantes() {
|
|
505
|
-
let identificador;
|
|
506
|
-
let tipo;
|
|
507
|
-
if ([
|
|
508
|
-
portugol_studio_1.default.REAL,
|
|
509
|
-
portugol_studio_1.default.INTEIRO,
|
|
510
|
-
portugol_studio_1.default.CADEIA,
|
|
511
|
-
portugol_studio_1.default.CARACTER,
|
|
512
|
-
portugol_studio_1.default.LOGICO,
|
|
513
|
-
].includes(this.simbolos[this.atual].tipo)) {
|
|
514
|
-
tipo = this.avancarEDevolverAnterior();
|
|
515
|
-
}
|
|
516
|
-
identificador = this.consumir(portugol_studio_1.default.IDENTIFICADOR, 'Esperado nome da constante.');
|
|
517
|
-
this.consumir(portugol_studio_1.default.IGUAL, "Esperado '=' após identificador em instrução 'constante'.");
|
|
518
|
-
const inicializador = this.expressao();
|
|
519
|
-
return new declaracoes_1.Const(identificador, inicializador, tipo.lexema);
|
|
520
|
-
}
|
|
521
|
-
resolverDeclaracaoForaDeBloco() {
|
|
522
|
-
const simboloAtual = this.simbolos[this.atual];
|
|
523
|
-
switch (simboloAtual.tipo) {
|
|
524
|
-
case portugol_studio_1.default.CADEIA:
|
|
525
|
-
return this.declaracaoCadeiasCaracteres();
|
|
526
|
-
case portugol_studio_1.default.CARACTER:
|
|
527
|
-
return this.declaracaoCaracteres();
|
|
528
|
-
case portugol_studio_1.default.CHAVE_ESQUERDA:
|
|
529
|
-
const simboloInicioBloco = this.simbolos[this.atual];
|
|
530
|
-
return new declaracoes_1.Bloco(simboloInicioBloco.hashArquivo, Number(simboloInicioBloco.linha), this.blocoEscopo());
|
|
531
|
-
case portugol_studio_1.default.CONSTANTE:
|
|
532
|
-
this.avancarEDevolverAnterior();
|
|
533
|
-
return this.declaracaoDeConstantes();
|
|
534
|
-
case portugol_studio_1.default.ENQUANTO:
|
|
535
|
-
return this.declaracaoEnquanto();
|
|
536
|
-
case portugol_studio_1.default.ESCOLHA:
|
|
537
|
-
return this.declaracaoEscolha();
|
|
538
|
-
case portugol_studio_1.default.ESCREVA:
|
|
539
|
-
return this.declaracaoEscrevaMesmaLinha();
|
|
540
|
-
case portugol_studio_1.default.FACA:
|
|
541
|
-
return this.declaracaoFazer();
|
|
542
|
-
case portugol_studio_1.default.FUNCAO:
|
|
543
|
-
return this.funcao('funcao');
|
|
544
|
-
case portugol_studio_1.default.INTEIRO:
|
|
545
|
-
return this.declaracaoInteiros();
|
|
546
|
-
case portugol_studio_1.default.LEIA:
|
|
547
|
-
return this.declaracaoLeia();
|
|
548
|
-
case portugol_studio_1.default.LOGICO:
|
|
549
|
-
return this.declaracaoLogicos();
|
|
550
|
-
case portugol_studio_1.default.PARA:
|
|
551
|
-
return this.declaracaoPara();
|
|
552
|
-
case portugol_studio_1.default.PROGRAMA:
|
|
553
|
-
case portugol_studio_1.default.CHAVE_DIREITA:
|
|
554
|
-
this.avancarEDevolverAnterior();
|
|
555
|
-
return null;
|
|
556
|
-
case portugol_studio_1.default.REAL:
|
|
557
|
-
return this.declaracaoReais();
|
|
558
|
-
case portugol_studio_1.default.RETORNE:
|
|
559
|
-
return this.declaracaoRetorne();
|
|
560
|
-
case portugol_studio_1.default.SE:
|
|
561
|
-
return this.declaracaoSe();
|
|
562
|
-
default:
|
|
563
|
-
return this.declaracaoExpressao(simboloAtual);
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
analisar(retornoLexador, hashArquivo) {
|
|
567
|
-
this.erros = [];
|
|
568
|
-
this.atual = 0;
|
|
569
|
-
this.blocos = 0;
|
|
570
|
-
this.hashArquivo = hashArquivo || 0;
|
|
571
|
-
this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
|
|
572
|
-
this.declaracoes = [];
|
|
573
|
-
this.validarEscopoPrograma();
|
|
574
|
-
return {
|
|
575
|
-
declaracoes: this.declaracoes.filter((d) => d),
|
|
576
|
-
erros: this.erros,
|
|
577
|
-
};
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
exports.AvaliadorSintaticoPortugolStudio = AvaliadorSintaticoPortugolStudio;
|
|
581
|
-
//# sourceMappingURL=avaliador-sintatico-portugol-studio.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-portugol-studio.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.ts"],"names":[],"mappings":"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"}
|