@designliquido/delegua 0.34.2 → 0.34.3
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 +4 -3
- 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 -2
- package/lexador/dialetos/index.d.ts.map +1 -1
- package/lexador/dialetos/index.js +0 -2
- package/lexador/dialetos/index.js.map +1 -1
- package/package.json +4 -3
- package/umd/delegua.js +392 -1602
- package/analisador-semantico/dialetos/analisador-semantico-mapler.d.ts +0 -30
- package/analisador-semantico/dialetos/analisador-semantico-mapler.d.ts.map +0 -1
- package/analisador-semantico/dialetos/analisador-semantico-mapler.js +0 -104
- package/analisador-semantico/dialetos/analisador-semantico-mapler.js.map +0 -1
- package/analisador-semantico/dialetos/index.d.ts +0 -2
- package/analisador-semantico/dialetos/index.d.ts.map +0 -1
- package/analisador-semantico/dialetos/index.js +0 -18
- package/analisador-semantico/dialetos/index.js.map +0 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.d.ts +0 -62
- package/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.d.ts.map +0 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js +0 -486
- package/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js.map +0 -1
- package/interpretador/dialetos/mapler/comum.d.ts +0 -11
- package/interpretador/dialetos/mapler/comum.d.ts.map +0 -1
- package/interpretador/dialetos/mapler/comum.js +0 -138
- package/interpretador/dialetos/mapler/comum.js.map +0 -1
- package/interpretador/dialetos/mapler/index.d.ts +0 -3
- package/interpretador/dialetos/mapler/index.d.ts.map +0 -1
- package/interpretador/dialetos/mapler/index.js +0 -19
- package/interpretador/dialetos/mapler/index.js.map +0 -1
- package/interpretador/dialetos/mapler/interpretador-mapler-com-depuracao.d.ts +0 -48
- package/interpretador/dialetos/mapler/interpretador-mapler-com-depuracao.d.ts.map +0 -1
- package/interpretador/dialetos/mapler/interpretador-mapler-com-depuracao.js +0 -152
- package/interpretador/dialetos/mapler/interpretador-mapler-com-depuracao.js.map +0 -1
- package/interpretador/dialetos/mapler/interpretador-mapler.d.ts +0 -47
- package/interpretador/dialetos/mapler/interpretador-mapler.d.ts.map +0 -1
- package/interpretador/dialetos/mapler/interpretador-mapler.js +0 -136
- package/interpretador/dialetos/mapler/interpretador-mapler.js.map +0 -1
- package/lexador/dialetos/lexador-mapler.d.ts +0 -11
- package/lexador/dialetos/lexador-mapler.d.ts.map +0 -1
- package/lexador/dialetos/lexador-mapler.js +0 -205
- package/lexador/dialetos/lexador-mapler.js.map +0 -1
- package/lexador/dialetos/lexador-potigol.d.ts +0 -18
- package/lexador/dialetos/lexador-potigol.d.ts.map +0 -1
- package/lexador/dialetos/lexador-potigol.js +0 -295
- package/lexador/dialetos/lexador-potigol.js.map +0 -1
- package/lexador/dialetos/palavras-reservadas/mapler.d.ts +0 -31
- package/lexador/dialetos/palavras-reservadas/mapler.d.ts.map +0 -1
- package/lexador/dialetos/palavras-reservadas/mapler.js +0 -38
- package/lexador/dialetos/palavras-reservadas/mapler.js.map +0 -1
- package/lexador/dialetos/palavras-reservadas/potigol.d.ts +0 -45
- package/lexador/dialetos/palavras-reservadas/potigol.d.ts.map +0 -1
- package/lexador/dialetos/palavras-reservadas/potigol.js +0 -52
- package/lexador/dialetos/palavras-reservadas/potigol.js.map +0 -1
- package/tipos-de-simbolos/mapler.d.ts +0 -56
- package/tipos-de-simbolos/mapler.d.ts.map +0 -1
- package/tipos-de-simbolos/mapler.js +0 -57
- package/tipos-de-simbolos/mapler.js.map +0 -1
- package/tipos-de-simbolos/potigol.d.ts +0 -66
- package/tipos-de-simbolos/potigol.d.ts.map +0 -1
- package/tipos-de-simbolos/potigol.js +0 -67
- package/tipos-de-simbolos/potigol.js.map +0 -1
- package/tipos-de-simbolos/visualg.d.ts +0 -81
- package/tipos-de-simbolos/visualg.d.ts.map +0 -1
- package/tipos-de-simbolos/visualg.js +0 -82
- package/tipos-de-simbolos/visualg.js.map +0 -1
|
@@ -1,486 +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.AvaliadorSintaticoMapler = void 0;
|
|
7
|
-
const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
|
|
8
|
-
const declaracoes_1 = require("../../declaracoes");
|
|
9
|
-
const construtos_1 = require("../../construtos");
|
|
10
|
-
const mapler_1 = __importDefault(require("../../tipos-de-simbolos/mapler"));
|
|
11
|
-
class AvaliadorSintaticoMapler extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
|
|
12
|
-
criarVetorNDimensional(dimensoes) {
|
|
13
|
-
if (dimensoes.length > 0) {
|
|
14
|
-
const dimensao = dimensoes[0] + 1;
|
|
15
|
-
const resto = dimensoes.slice(1);
|
|
16
|
-
const novoArray = Array(dimensao);
|
|
17
|
-
for (let i = 0; i <= dimensao; i++) {
|
|
18
|
-
novoArray[i] = this.criarVetorNDimensional(resto);
|
|
19
|
-
}
|
|
20
|
-
return novoArray;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
validarDimensoesVetor() {
|
|
27
|
-
let dimensoes = [];
|
|
28
|
-
do {
|
|
29
|
-
const numeroInicial = this.consumir(mapler_1.default.NUMERO, 'Esperado índice inicial para inicialização de dimensão de vetor.');
|
|
30
|
-
this.consumir(mapler_1.default.PONTO, 'Esperado primeiro ponto após índice inicial para inicialização de dimensão de vetor.');
|
|
31
|
-
this.consumir(mapler_1.default.PONTO, 'Esperado segundo ponto após índice inicial para inicialização de dimensão de vetor.');
|
|
32
|
-
const numeroFinal = this.consumir(mapler_1.default.NUMERO, 'Esperado índice final para inicialização de dimensão de vetor.');
|
|
33
|
-
dimensoes.push(Number(numeroFinal.literal) - Number(numeroInicial.literal));
|
|
34
|
-
} while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.VIRGULA));
|
|
35
|
-
return dimensoes;
|
|
36
|
-
}
|
|
37
|
-
logicaComumParametroMapler() {
|
|
38
|
-
const identificadores = [];
|
|
39
|
-
do {
|
|
40
|
-
identificadores.push(this.consumir(mapler_1.default.IDENTIFICADOR, 'Esperado nome de variável.'));
|
|
41
|
-
} while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.VIRGULA));
|
|
42
|
-
this.consumir(mapler_1.default.DOIS_PONTOS, 'Esperado dois-pontos após nome de variável.');
|
|
43
|
-
if (!this.verificarSeSimboloAtualEIgualA(mapler_1.default.CADEIA, mapler_1.default.CARACTERE, mapler_1.default.INTEIRO, mapler_1.default.LOGICO, mapler_1.default.REAL, mapler_1.default.VETOR)) {
|
|
44
|
-
throw this.erro(this.simbolos[this.atual], 'Tipo de variável não conhecido.');
|
|
45
|
-
}
|
|
46
|
-
const simboloAnterior = this.simbolos[this.atual - 1];
|
|
47
|
-
const tipoVariavel = simboloAnterior.tipo;
|
|
48
|
-
return {
|
|
49
|
-
identificadores,
|
|
50
|
-
tipo: tipoVariavel,
|
|
51
|
-
simbolo: simboloAnterior,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Validação do segmento de declaração de variáveis (opcional).
|
|
56
|
-
* @returns Vetor de Construtos para inicialização de variáveis.
|
|
57
|
-
*/
|
|
58
|
-
validarSegmentoVariaveis() {
|
|
59
|
-
const inicializacoes = [];
|
|
60
|
-
while (!this.verificarTipoSimboloAtual(mapler_1.default.INICIO)) {
|
|
61
|
-
const simboloAtual = this.simbolos[this.atual];
|
|
62
|
-
switch (simboloAtual.tipo) {
|
|
63
|
-
// case tiposDeSimbolos.PROCEDIMENTO:
|
|
64
|
-
// const dadosProcedimento = this.declaracaoProcedimento();
|
|
65
|
-
// inicializacoes.push(dadosProcedimento);
|
|
66
|
-
// break;
|
|
67
|
-
default:
|
|
68
|
-
const dadosVariaveis = this.logicaComumParametroMapler();
|
|
69
|
-
// Se chegou até aqui, variáveis são válidas.
|
|
70
|
-
// Devem ser declaradas com um valor inicial padrão.
|
|
71
|
-
for (let identificador of dadosVariaveis.identificadores) {
|
|
72
|
-
switch (dadosVariaveis.tipo) {
|
|
73
|
-
case mapler_1.default.CADEIA:
|
|
74
|
-
case mapler_1.default.CARACTERE:
|
|
75
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(dadosVariaveis.simbolo.linha), ''), 'texto'));
|
|
76
|
-
break;
|
|
77
|
-
case mapler_1.default.INTEIRO:
|
|
78
|
-
case mapler_1.default.REAL:
|
|
79
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(dadosVariaveis.simbolo.linha), 0), 'numero'));
|
|
80
|
-
break;
|
|
81
|
-
case mapler_1.default.LOGICO:
|
|
82
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(dadosVariaveis.simbolo.linha), false), 'lógico'));
|
|
83
|
-
break;
|
|
84
|
-
case mapler_1.default.VETOR:
|
|
85
|
-
// TODO: Validar vetor
|
|
86
|
-
this.consumir(mapler_1.default.COLCHETE_ESQUERDO, 'Esperado colchete esquerdo após palavra reservada "vetor".');
|
|
87
|
-
const dimensoes = this.validarDimensoesVetor();
|
|
88
|
-
this.consumir(mapler_1.default.COLCHETE_DIREITO, 'Esperado colchete direito após declaração de dimensões de vetor.');
|
|
89
|
-
this.consumir(mapler_1.default.DE, 'Esperado palavra reservada "de" após declaração de dimensões de vetor.');
|
|
90
|
-
if (!this.verificarSeSimboloAtualEIgualA(mapler_1.default.CARACTERE, mapler_1.default.INTEIRO, mapler_1.default.LOGICO, mapler_1.default.REAL, mapler_1.default.VETOR)) {
|
|
91
|
-
throw this.erro(this.simbolos[this.atual], 'Tipo de variável não conhecido para inicialização de vetor.');
|
|
92
|
-
}
|
|
93
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(dadosVariaveis.simbolo.linha), this.criarVetorNDimensional(dimensoes)), 'vetor'));
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
this.consumir(mapler_1.default.PONTO_VIRGULA, "Esperado ';' após declaração de variável.");
|
|
100
|
-
}
|
|
101
|
-
return inicializacoes;
|
|
102
|
-
}
|
|
103
|
-
estaNoFinal() {
|
|
104
|
-
return this.atual === this.simbolos.length;
|
|
105
|
-
}
|
|
106
|
-
primario() {
|
|
107
|
-
const simboloAtual = this.simbolos[this.atual];
|
|
108
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.FALSO))
|
|
109
|
-
return new construtos_1.Literal(this.hashArquivo, Number(simboloAtual.linha), false);
|
|
110
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.VERDADEIRO))
|
|
111
|
-
return new construtos_1.Literal(this.hashArquivo, Number(simboloAtual.linha), true);
|
|
112
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.IDENTIFICADOR)) {
|
|
113
|
-
return new construtos_1.Variavel(this.hashArquivo, this.simbolos[this.atual - 1]);
|
|
114
|
-
}
|
|
115
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.NUMERO, mapler_1.default.CADEIA, mapler_1.default.CARACTERE)) {
|
|
116
|
-
const simboloAnterior = this.simbolos[this.atual - 1];
|
|
117
|
-
return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
|
|
118
|
-
}
|
|
119
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.PARENTESE_ESQUERDO)) {
|
|
120
|
-
const expressao = this.expressao();
|
|
121
|
-
this.consumir(mapler_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
122
|
-
return new construtos_1.Agrupamento(this.hashArquivo, Number(simboloAtual.linha), expressao);
|
|
123
|
-
}
|
|
124
|
-
//TODO: @Samuel
|
|
125
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.PONTO_VIRGULA)) {
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
throw this.erro(this.simbolos[this.atual], 'Esperado expressão.');
|
|
129
|
-
}
|
|
130
|
-
comparacaoIgualdade() {
|
|
131
|
-
let expressao = this.comparar();
|
|
132
|
-
while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.DIFERENTE, mapler_1.default.IGUAL)) {
|
|
133
|
-
const simboloAnterior = this.simbolos[this.atual - 1];
|
|
134
|
-
const direito = this.comparar();
|
|
135
|
-
expressao = new construtos_1.Binario(this.hashArquivo, expressao, simboloAnterior, direito);
|
|
136
|
-
}
|
|
137
|
-
return expressao;
|
|
138
|
-
}
|
|
139
|
-
ou() {
|
|
140
|
-
let expressao = this.e();
|
|
141
|
-
while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.OU /*, tiposDeSimbolos.XOU*/)) {
|
|
142
|
-
const operador = this.simbolos[this.atual - 1];
|
|
143
|
-
const direito = this.e();
|
|
144
|
-
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
145
|
-
}
|
|
146
|
-
return expressao;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Método que resolve atribuições.
|
|
150
|
-
* @returns Um construto do tipo `Atribuir`, `Conjunto` ou `AtribuicaoPorIndice`.
|
|
151
|
-
*/
|
|
152
|
-
atribuir() {
|
|
153
|
-
const expressao = this.ou();
|
|
154
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.SETA_ATRIBUICAO)) {
|
|
155
|
-
const setaAtribuicao = this.simbolos[this.atual - 1];
|
|
156
|
-
const valor = this.atribuir();
|
|
157
|
-
if (expressao instanceof construtos_1.Variavel) {
|
|
158
|
-
const simbolo = expressao.simbolo;
|
|
159
|
-
return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
|
|
160
|
-
}
|
|
161
|
-
else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
|
|
162
|
-
return new construtos_1.AtribuicaoPorIndice(this.hashArquivo, expressao.linha, expressao.entidadeChamada, expressao.indice, valor);
|
|
163
|
-
}
|
|
164
|
-
this.erro(setaAtribuicao, 'Tarefa de atribuição inválida');
|
|
165
|
-
}
|
|
166
|
-
return expressao;
|
|
167
|
-
}
|
|
168
|
-
expressao() {
|
|
169
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.LER))
|
|
170
|
-
return this.declaracaoLeia();
|
|
171
|
-
return this.atribuir();
|
|
172
|
-
}
|
|
173
|
-
blocoEscopo() {
|
|
174
|
-
const declaracoes = [];
|
|
175
|
-
// while (![
|
|
176
|
-
// tiposDeSimbolos.FIM_FUNCAO,
|
|
177
|
-
// tiposDeSimbolos.FIM_PROCEDIMENTO
|
|
178
|
-
// ].includes(this.simbolos[this.atual].tipo) && !this.estaNoFinal())
|
|
179
|
-
// {
|
|
180
|
-
// declaracoes.push(this.declaracao());
|
|
181
|
-
// }
|
|
182
|
-
// Se chegou até aqui, simplesmente consome o símbolo.
|
|
183
|
-
this.avancarEDevolverAnterior();
|
|
184
|
-
// this.consumir(tiposDeSimbolos.FIM_FUNCAO, "Esperado palavra-chave 'fimfuncao' após o bloco.");
|
|
185
|
-
return declaracoes;
|
|
186
|
-
}
|
|
187
|
-
chamar() {
|
|
188
|
-
let expressao = this.primario();
|
|
189
|
-
while (true) {
|
|
190
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.PARENTESE_ESQUERDO)) {
|
|
191
|
-
expressao = this.finalizarChamada(expressao);
|
|
192
|
-
}
|
|
193
|
-
else if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.COLCHETE_ESQUERDO)) {
|
|
194
|
-
const indices = [];
|
|
195
|
-
do {
|
|
196
|
-
indices.push(this.expressao());
|
|
197
|
-
} while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.VIRGULA));
|
|
198
|
-
const indice = indices[0];
|
|
199
|
-
const simboloFechamento = this.consumir(mapler_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
200
|
-
expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
break;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
return expressao;
|
|
207
|
-
}
|
|
208
|
-
corpoDaFuncao(tipo) {
|
|
209
|
-
const simboloAnterior = this.simbolos[this.atual - 1];
|
|
210
|
-
this.consumir(mapler_1.default.DOIS_PONTOS, 'Esperado dois-pontos após nome de função.');
|
|
211
|
-
// this.consumir(tiposDeSimbolos.QUEBRA_LINHA, "Esperado quebra de linha após tipo retornado por 'funcao'.");
|
|
212
|
-
this.validarSegmentoVariaveis();
|
|
213
|
-
const corpo = this.blocoEscopo();
|
|
214
|
-
return new construtos_1.FuncaoConstruto(this.hashArquivo, Number(simboloAnterior.linha), null, corpo);
|
|
215
|
-
}
|
|
216
|
-
declaracaoEnquanto() {
|
|
217
|
-
const simboloAtual = this.avancarEDevolverAnterior();
|
|
218
|
-
const condicao = this.expressao();
|
|
219
|
-
this.consumir(mapler_1.default.FACA, "Esperado paravra reservada 'faca' após condição de continuidade em declaracão 'enquanto'.");
|
|
220
|
-
const declaracoes = [];
|
|
221
|
-
do {
|
|
222
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
223
|
-
} while (![mapler_1.default.FIM].includes(this.simbolos[this.atual].tipo) &&
|
|
224
|
-
![mapler_1.default.ENQUANTO].includes(this.simbolos[this.atual + 1].tipo));
|
|
225
|
-
this.consumir(mapler_1.default.FIM, "Esperado palavra-chave 'fim' para iniciar o fechamento de declaração 'enquanto'.");
|
|
226
|
-
this.consumir(mapler_1.default.ENQUANTO, "Esperado palavra-chave 'enquanto' para o fechamento de declaração 'enquanto'.");
|
|
227
|
-
this.consumir(mapler_1.default.PONTO_VIRGULA, "Esperado palavra-chave ';' para o fechamento de declaração 'enquanto'.");
|
|
228
|
-
return new declaracoes_1.Enquanto(condicao, new declaracoes_1.Bloco(simboloAtual.hashArquivo, Number(simboloAtual.linha), declaracoes.filter((d) => d)));
|
|
229
|
-
}
|
|
230
|
-
declaracaoEscolha() {
|
|
231
|
-
throw new Error('Método não implementado.');
|
|
232
|
-
}
|
|
233
|
-
logicaComumEscreva() {
|
|
234
|
-
const simboloAtual = this.simbolos[this.atual];
|
|
235
|
-
const argumentos = [];
|
|
236
|
-
do {
|
|
237
|
-
const valor = this.resolverDeclaracaoForaDeBloco();
|
|
238
|
-
argumentos.push(new construtos_1.FormatacaoEscrita(this.hashArquivo, Number(simboloAtual.linha), valor));
|
|
239
|
-
} while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.VIRGULA));
|
|
240
|
-
this.consumir(mapler_1.default.PONTO_VIRGULA, "Esperado quebra de linha após fechamento de parênteses pós instrução 'escreva'.");
|
|
241
|
-
return argumentos;
|
|
242
|
-
}
|
|
243
|
-
declaracaoEscreva() {
|
|
244
|
-
throw new Error('Método não implementado.');
|
|
245
|
-
}
|
|
246
|
-
declaracaoEscrevaMesmaLinha() {
|
|
247
|
-
const simboloAtual = this.avancarEDevolverAnterior();
|
|
248
|
-
const argumentos = this.logicaComumEscreva();
|
|
249
|
-
return new declaracoes_1.EscrevaMesmaLinha(Number(simboloAtual.linha), this.hashArquivo, argumentos);
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Criação de declaração "repita".
|
|
253
|
-
* @returns Um construto do tipo Fazer
|
|
254
|
-
*/
|
|
255
|
-
declaracaoFazer() {
|
|
256
|
-
const simboloAtual = this.avancarEDevolverAnterior();
|
|
257
|
-
// this.consumir(tiposDeSimbolos.QUEBRA_LINHA, "Esperado quebra de linha após instrução 'repita'.");
|
|
258
|
-
const declaracoes = [];
|
|
259
|
-
do {
|
|
260
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
261
|
-
} while (![mapler_1.default.ATE].includes(this.simbolos[this.atual].tipo));
|
|
262
|
-
this.consumir(mapler_1.default.ATE, "Esperado palavra-chave 'ate' após declaração de bloco em instrução 'repita'.");
|
|
263
|
-
const condicao = this.expressao();
|
|
264
|
-
// this.consumir(
|
|
265
|
-
// tiposDeSimbolos.QUEBRA_LINHA,
|
|
266
|
-
// "Esperado quebra de linha após condição de continuidade em instrução 'repita'."
|
|
267
|
-
// );
|
|
268
|
-
return new declaracoes_1.Fazer(this.hashArquivo, Number(simboloAtual.linha), new declaracoes_1.Bloco(this.hashArquivo, Number(simboloAtual.linha), declaracoes.filter((d) => d)), condicao);
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Criação de declaração "interrompa".
|
|
272
|
-
* Em Mapler, "sustar" é chamada de "interrompa".
|
|
273
|
-
* @returns Uma declaração do tipo Sustar.
|
|
274
|
-
*/
|
|
275
|
-
declaracaoInterrompa() {
|
|
276
|
-
const simboloAtual = this.avancarEDevolverAnterior();
|
|
277
|
-
// TODO: Contar blocos para colocar esta condição de erro.
|
|
278
|
-
/* if (this.blocos < 1) {
|
|
279
|
-
this.erro(this.simbolos[this.atual - 1], "'interrompa' deve estar dentro de um laço de repetição.");
|
|
280
|
-
} */
|
|
281
|
-
return new declaracoes_1.Sustar(simboloAtual);
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Análise de uma declaração `leia()`. No Mapler, `leia()` aceita 1..N argumentos.
|
|
285
|
-
* @returns Uma declaração `Leia`.
|
|
286
|
-
*/
|
|
287
|
-
declaracaoLeia() {
|
|
288
|
-
const simboloAtual = this.avancarEDevolverAnterior();
|
|
289
|
-
// this.consumir(tiposDeSimbolos.PARENTESE_ESQUERDO, "Esperado '(' antes do argumento em instrução `leia`.");
|
|
290
|
-
const argumentos = [];
|
|
291
|
-
do {
|
|
292
|
-
argumentos.push(this.resolverDeclaracaoForaDeBloco());
|
|
293
|
-
} while (this.verificarSeSimboloAtualEIgualA(mapler_1.default.PONTO_VIRGULA));
|
|
294
|
-
// this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado ')' após o argumento em instrução `leia`.");
|
|
295
|
-
// this.consumir(
|
|
296
|
-
// tiposDeSimbolos.QUEBRA_LINHA,
|
|
297
|
-
// 'Esperado quebra de linha após fechamento de parênteses pós instrução `leia`.'
|
|
298
|
-
// );
|
|
299
|
-
return new declaracoes_1.Leia(simboloAtual, argumentos);
|
|
300
|
-
}
|
|
301
|
-
declaracaoPara() {
|
|
302
|
-
throw new Error('Método não implementado.');
|
|
303
|
-
// const simboloPara: SimboloInterface = this.avancarEDevolverAnterior();
|
|
304
|
-
// const variavelIteracao = this.consumir(
|
|
305
|
-
// tiposDeSimbolos.IDENTIFICADOR,
|
|
306
|
-
// "Esperado identificador de variável após 'para'."
|
|
307
|
-
// );
|
|
308
|
-
// this.consumir(tiposDeSimbolos.DE, "Esperado palavra reservada 'de' após variável de controle de 'para'.");
|
|
309
|
-
// const numeroInicio = this.consumir(
|
|
310
|
-
// tiposDeSimbolos.NUMERO,
|
|
311
|
-
// "Esperado literal ou variável após 'de' em declaração 'para'."
|
|
312
|
-
// );
|
|
313
|
-
// this.consumir(
|
|
314
|
-
// tiposDeSimbolos.ATE,
|
|
315
|
-
// "Esperado palavra reservada 'ate' após valor inicial do laço de repetição 'para'."
|
|
316
|
-
// );
|
|
317
|
-
// const numeroFim = this.consumir(
|
|
318
|
-
// tiposDeSimbolos.NUMERO,
|
|
319
|
-
// "Esperado literal ou variável após 'de' em declaração 'para'."
|
|
320
|
-
// );
|
|
321
|
-
// this.consumir(
|
|
322
|
-
// tiposDeSimbolos.FACA,
|
|
323
|
-
// "Esperado palavra reservada 'faca' após valor final do laço de repetição 'para'."
|
|
324
|
-
// );
|
|
325
|
-
// this.consumir(
|
|
326
|
-
// tiposDeSimbolos.QUEBRA_LINHA,
|
|
327
|
-
// "Esperado quebra de linha após palavra reservada 'faca' do laço de repetição 'para'."
|
|
328
|
-
// );
|
|
329
|
-
// const declaracoesBlocoPara = [];
|
|
330
|
-
// let simboloAtualBlocoPara: SimboloInterface = this.simbolos[this.atual];
|
|
331
|
-
// while (simboloAtualBlocoPara.tipo !== tiposDeSimbolos.FIM_PARA) {
|
|
332
|
-
// declaracoesBlocoPara.push(this.declaracao());
|
|
333
|
-
// simboloAtualBlocoPara = this.simbolos[this.atual];
|
|
334
|
-
// }
|
|
335
|
-
// this.consumir(tiposDeSimbolos.FIM_PARA, '');
|
|
336
|
-
// this.consumir(tiposDeSimbolos.QUEBRA_LINHA, "Esperado quebra de linha após palavra reservada 'fimpara'.");
|
|
337
|
-
// const corpo = new Bloco(
|
|
338
|
-
// this.hashArquivo,
|
|
339
|
-
// Number(simboloPara.linha) + 1,
|
|
340
|
-
// declaracoesBlocoPara.filter((d) => d)
|
|
341
|
-
// );
|
|
342
|
-
// return new Para(
|
|
343
|
-
// this.hashArquivo,
|
|
344
|
-
// Number(simboloPara.linha),
|
|
345
|
-
// new Atribuir(
|
|
346
|
-
// this.hashArquivo,
|
|
347
|
-
// variavelIteracao,
|
|
348
|
-
// new Literal(this.hashArquivo, Number(simboloPara.linha), numeroInicio.literal)
|
|
349
|
-
// ),
|
|
350
|
-
// new Binario(
|
|
351
|
-
// this.hashArquivo,
|
|
352
|
-
// new Variavel(this.hashArquivo, variavelIteracao),
|
|
353
|
-
// new Simbolo(tiposDeSimbolos.MENOR_IGUAL, '', '', Number(simboloPara.linha), this.hashArquivo),
|
|
354
|
-
// new Literal(this.hashArquivo, Number(simboloPara.linha), numeroFim.literal)
|
|
355
|
-
// ),
|
|
356
|
-
// new Atribuir(
|
|
357
|
-
// this.hashArquivo,
|
|
358
|
-
// variavelIteracao,
|
|
359
|
-
// new Binario(
|
|
360
|
-
// this.hashArquivo,
|
|
361
|
-
// new Variavel(this.hashArquivo, variavelIteracao),
|
|
362
|
-
// new Simbolo(tiposDeSimbolos.ADICAO, '', null, Number(simboloPara.linha), this.hashArquivo),
|
|
363
|
-
// new Literal(this.hashArquivo, Number(simboloPara.linha), 1)
|
|
364
|
-
// )
|
|
365
|
-
// ),
|
|
366
|
-
// corpo
|
|
367
|
-
// );
|
|
368
|
-
}
|
|
369
|
-
// logicaComumParametros(): ParametroInterface[] {
|
|
370
|
-
// const parametros: ParametroInterface[] = [];
|
|
371
|
-
// if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.PARENTESE_ESQUERDO)) {
|
|
372
|
-
// while (!this.verificarTipoSimboloAtual(tiposDeSimbolos.PARENTESE_DIREITO)) {
|
|
373
|
-
// const dadosParametros = this.logicaComumParametroMapler();
|
|
374
|
-
// for (let parametro of dadosParametros.identificadores) {
|
|
375
|
-
// parametros.push({
|
|
376
|
-
// abrangencia: 'padrao',
|
|
377
|
-
// nome: parametro
|
|
378
|
-
// });
|
|
379
|
-
// }
|
|
380
|
-
// }
|
|
381
|
-
// // Consumir parêntese direito
|
|
382
|
-
// this.consumir(
|
|
383
|
-
// tiposDeSimbolos.PARENTESE_DIREITO,
|
|
384
|
-
// "Esperado parêntese direito para finalização da leitura de parâmetros."
|
|
385
|
-
// )
|
|
386
|
-
// }
|
|
387
|
-
// return parametros;
|
|
388
|
-
// }
|
|
389
|
-
/**
|
|
390
|
-
* Procedimentos nada mais são do que funções que não retornam valor.
|
|
391
|
-
*/
|
|
392
|
-
// declaracaoProcedimento() {
|
|
393
|
-
// const simboloProcedimento: SimboloInterface = this.avancarEDevolverAnterior();
|
|
394
|
-
// const nomeProcedimento = this.consumir(tiposDeSimbolos.IDENTIFICADOR,
|
|
395
|
-
// "Esperado nome do procedimento após palavra-chave `procedimento`.");
|
|
396
|
-
// // Parâmetros
|
|
397
|
-
// const parametros = this.logicaComumParametros();
|
|
398
|
-
// this.validarSegmentoVariaveis();
|
|
399
|
-
// this.validarSegmentoInicio('procedimento');
|
|
400
|
-
// const corpo = this.blocoEscopo();
|
|
401
|
-
// return new FuncaoDeclaracao(
|
|
402
|
-
// nomeProcedimento, new FuncaoConstruto(
|
|
403
|
-
// this.hashArquivo,
|
|
404
|
-
// Number(simboloProcedimento.linha),
|
|
405
|
-
// parametros,
|
|
406
|
-
// corpo.filter(d => d)
|
|
407
|
-
// )
|
|
408
|
-
// );
|
|
409
|
-
// }
|
|
410
|
-
declaracaoSe() {
|
|
411
|
-
const simboloSe = this.avancarEDevolverAnterior();
|
|
412
|
-
const condicao = this.expressao();
|
|
413
|
-
this.consumir(mapler_1.default.ENTAO, "Esperado palavra reservada 'entao' após condição em declaração 'se'.");
|
|
414
|
-
const declaracoes = [];
|
|
415
|
-
let caminhoSenao = null;
|
|
416
|
-
do {
|
|
417
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
418
|
-
if (this.verificarSeSimboloAtualEIgualA(mapler_1.default.SENAO)) {
|
|
419
|
-
const simboloSenao = this.simbolos[this.atual - 1];
|
|
420
|
-
const declaracoesSenao = [];
|
|
421
|
-
do {
|
|
422
|
-
declaracoesSenao.push(this.resolverDeclaracaoForaDeBloco());
|
|
423
|
-
} while (![mapler_1.default.FIM].includes(this.simbolos[this.atual].tipo) &&
|
|
424
|
-
![mapler_1.default.SE].includes(this.simbolos[this.atual + 1].tipo));
|
|
425
|
-
caminhoSenao = new declaracoes_1.Bloco(this.hashArquivo, Number(simboloSenao.linha), declaracoesSenao.filter((d) => d));
|
|
426
|
-
}
|
|
427
|
-
} while (![mapler_1.default.FIM].includes(this.simbolos[this.atual].tipo) &&
|
|
428
|
-
![mapler_1.default.SE].includes(this.simbolos[this.atual + 1].tipo));
|
|
429
|
-
this.consumir(mapler_1.default.FIM, "Esperado palavra-chave 'fim' para iniciar o fechamento de declaração 'se'.");
|
|
430
|
-
this.consumir(mapler_1.default.SE, "Esperado palavra-chave 'se' para o fechamento de declaração 'se'.");
|
|
431
|
-
this.consumir(mapler_1.default.PONTO_VIRGULA, "Esperado palavra-chave ';' para o fechamento de declaração 'se'.");
|
|
432
|
-
return new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(this.hashArquivo, Number(simboloSe.linha), declaracoes.filter((d) => d)), [], caminhoSenao);
|
|
433
|
-
}
|
|
434
|
-
resolverDeclaracaoForaDeBloco() {
|
|
435
|
-
const simboloAtual = this.simbolos[this.atual];
|
|
436
|
-
switch (simboloAtual.tipo) {
|
|
437
|
-
case mapler_1.default.ENQUANTO:
|
|
438
|
-
return this.declaracaoEnquanto();
|
|
439
|
-
case mapler_1.default.ESCREVER:
|
|
440
|
-
return this.declaracaoEscrevaMesmaLinha();
|
|
441
|
-
// case tiposDeSimbolos.FUNCAO:
|
|
442
|
-
// return this.funcao('funcao');
|
|
443
|
-
// case tiposDeSimbolos.INTERROMPA:
|
|
444
|
-
// return this.declaracaoInterrompa();
|
|
445
|
-
case mapler_1.default.LER:
|
|
446
|
-
return this.declaracaoLeia();
|
|
447
|
-
case mapler_1.default.PARA:
|
|
448
|
-
return this.declaracaoPara();
|
|
449
|
-
// case tiposDeSimbolos.PARENTESE_DIREITO:
|
|
450
|
-
// throw new Error('Não deveria estar caindo aqui.');
|
|
451
|
-
// case tiposDeSimbolos.PROCEDIMENTO:
|
|
452
|
-
// return this.declaracaoProcedimento();
|
|
453
|
-
case mapler_1.default.REPITA:
|
|
454
|
-
return this.declaracaoFazer();
|
|
455
|
-
case mapler_1.default.SE:
|
|
456
|
-
return this.declaracaoSe();
|
|
457
|
-
default:
|
|
458
|
-
return this.expressao();
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
/**
|
|
462
|
-
* No Mapler, há uma determinada cadência de validação de símbolos.
|
|
463
|
-
* @param retornoLexador Os símbolos entendidos pelo Lexador.
|
|
464
|
-
* @param hashArquivo Obrigatório por interface mas não usado aqui.
|
|
465
|
-
*/
|
|
466
|
-
analisar(retornoLexador, hashArquivo) {
|
|
467
|
-
this.erros = [];
|
|
468
|
-
this.atual = 0;
|
|
469
|
-
this.blocos = 0;
|
|
470
|
-
this.hashArquivo = hashArquivo || 0;
|
|
471
|
-
this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
|
|
472
|
-
let declaracoes = [];
|
|
473
|
-
this.consumir(mapler_1.default.VARIAVEIS, "Esperado expressão 'variaveis' para inicializar programa.");
|
|
474
|
-
declaracoes = declaracoes.concat(this.validarSegmentoVariaveis());
|
|
475
|
-
this.consumir(mapler_1.default.INICIO, `Esperado expressão 'inicio' para marcar o inicio do programa.`);
|
|
476
|
-
while (!this.estaNoFinal() && this.simbolos[this.atual].tipo !== mapler_1.default.FIM) {
|
|
477
|
-
declaracoes.push(this.resolverDeclaracaoForaDeBloco());
|
|
478
|
-
}
|
|
479
|
-
return {
|
|
480
|
-
declaracoes: declaracoes.filter((d) => d),
|
|
481
|
-
erros: this.erros,
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
exports.AvaliadorSintaticoMapler = AvaliadorSintaticoMapler;
|
|
486
|
-
//# sourceMappingURL=avaliador-sintatico-mapler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-mapler.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Binario, Logico } from '../../../construtos';
|
|
2
|
-
import { VisitanteComumInterface } from '../../../interfaces';
|
|
3
|
-
/**
|
|
4
|
-
* Método de visita de expressão binária.
|
|
5
|
-
* Reintroduzido pelas particularidades do VisuAlg.
|
|
6
|
-
* @param expressao A expressão binária.
|
|
7
|
-
* @returns O resultado da resolução da expressão.
|
|
8
|
-
*/
|
|
9
|
-
export declare function visitarExpressaoBinaria(visitante: VisitanteComumInterface, expressao: Binario | any): Promise<any>;
|
|
10
|
-
export declare function visitarExpressaoLogica(interpretador: VisitanteComumInterface, expressao: Logico): Promise<any>;
|
|
11
|
-
//# sourceMappingURL=comum.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comum.d.ts","sourceRoot":"","sources":["../../../../fontes/interpretador/dialetos/mapler/comum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAuC,MAAM,qBAAqB,CAAC;AAsCnG;;;;;GAKG;AACH,wBAAsB,uBAAuB,CACzC,SAAS,EAAE,uBAAuB,EAClC,SAAS,EAAE,OAAO,GAAG,GAAG,GACzB,OAAO,CAAC,GAAG,CAAC,CA4Fd;AAED,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAoBpH"}
|