@designliquido/delegua 1.17.0 → 1.17.2
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/analisador-semantico/analisador-semantico.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico.js +9 -3
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +9 -3
- package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +26 -0
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +7 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +33 -13
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +68 -11
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +433 -62
- package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts +9 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js +30 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -1
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js +112 -16
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -1
- package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
- package/bibliotecas/primitivas-dicionario.js +31 -0
- package/bibliotecas/primitivas-dicionario.js.map +1 -1
- package/bin/package.json +2 -2
- package/estilizador/quebrador-linha.d.ts.map +1 -1
- package/estilizador/quebrador-linha.js +13 -0
- package/estilizador/quebrador-linha.js.map +1 -1
- package/estilizador/regras/index.d.ts +1 -0
- package/estilizador/regras/index.d.ts.map +1 -1
- package/estilizador/regras/index.js +1 -0
- package/estilizador/regras/index.js.map +1 -1
- package/estilizador/regras/regra-convencao-nomenclatura.d.ts +3 -0
- package/estilizador/regras/regra-convencao-nomenclatura.d.ts.map +1 -1
- package/estilizador/regras/regra-convencao-nomenclatura.js +34 -14
- package/estilizador/regras/regra-convencao-nomenclatura.js.map +1 -1
- package/estilizador/regras/regra-explicitar-tipos-parametros.d.ts +16 -0
- package/estilizador/regras/regra-explicitar-tipos-parametros.d.ts.map +1 -0
- package/estilizador/regras/regra-explicitar-tipos-parametros.js +50 -0
- package/estilizador/regras/regra-explicitar-tipos-parametros.js.map +1 -0
- package/formatadores/formatador-delegua.d.ts +1 -0
- package/formatadores/formatador-delegua.d.ts.map +1 -1
- package/formatadores/formatador-delegua.js +9 -3
- package/formatadores/formatador-delegua.js.map +1 -1
- package/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +60 -107
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +435 -336
- package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +16 -2
- package/interpretador/interpretador-base.js.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.js +71 -19
- package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +34 -6
- package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts.map +1 -1
- package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +44 -6
- package/lexador/dialetos/palavras-reservadas/portugol-ipt.js.map +1 -1
- package/package.json +2 -2
- package/tipos-de-simbolos/portugol-ipt.d.ts +43 -19
- package/tipos-de-simbolos/portugol-ipt.d.ts.map +1 -1
- package/tipos-de-simbolos/portugol-ipt.js +59 -19
- package/tipos-de-simbolos/portugol-ipt.js.map +1 -1
- package/tradutores/tradutor-portugol-ipt.d.ts +34 -12
- package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
- package/tradutores/tradutor-portugol-ipt.js +309 -19
- package/tradutores/tradutor-portugol-ipt.js.map +1 -1
- package/umd/delegua.js +1501 -522
|
@@ -5,32 +5,202 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.AvaliadorSintaticoPortugolIpt = void 0;
|
|
7
7
|
const construtos_1 = require("../../construtos");
|
|
8
|
+
const simbolo_1 = require("../../lexador/simbolo");
|
|
8
9
|
const declaracoes_1 = require("../../declaracoes");
|
|
9
10
|
const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
|
|
10
11
|
const portugol_ipt_1 = __importDefault(require("../../tipos-de-simbolos/portugol-ipt"));
|
|
11
12
|
class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
|
|
13
|
+
simboloAtualEh(tipo) {
|
|
14
|
+
return !this.estaNoFinal() && this.simbolos[this.atual].tipo === tipo;
|
|
15
|
+
}
|
|
16
|
+
fechamentoEnquantoAtual() {
|
|
17
|
+
return (this.simboloAtualEh(portugol_ipt_1.default.FIMENQUANTO) ||
|
|
18
|
+
(this.simboloAtualEh(portugol_ipt_1.default.FIM) &&
|
|
19
|
+
this.simbolos[this.atual + 1]?.tipo === portugol_ipt_1.default.ENQUANTO));
|
|
20
|
+
}
|
|
21
|
+
consumirFechamentoEnquanto() {
|
|
22
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.FIMENQUANTO)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.consumir(portugol_ipt_1.default.FIM, "Esperado 'fimenquanto' ou 'fim enquanto'.");
|
|
26
|
+
this.consumir(portugol_ipt_1.default.ENQUANTO, "Esperado 'enquanto' após 'fim'.");
|
|
27
|
+
}
|
|
28
|
+
fechamentoEscolheAtual() {
|
|
29
|
+
return (this.simboloAtualEh(portugol_ipt_1.default.FIMESCOLHE) ||
|
|
30
|
+
(this.simboloAtualEh(portugol_ipt_1.default.FIM) &&
|
|
31
|
+
this.simbolos[this.atual + 1]?.tipo === portugol_ipt_1.default.ESCOLHE));
|
|
32
|
+
}
|
|
33
|
+
consumirFechamentoEscolhe() {
|
|
34
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.FIMESCOLHE)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.consumir(portugol_ipt_1.default.FIM, "Esperado 'fimescolhe' ou 'fim escolhe'.");
|
|
38
|
+
this.consumir(portugol_ipt_1.default.ESCOLHE, "Esperado 'escolhe' após 'fim'.");
|
|
39
|
+
}
|
|
40
|
+
avaliarExpressaoNumericaConstante(expressao) {
|
|
41
|
+
if (expressao instanceof construtos_1.Literal && typeof expressao.valor === 'number') {
|
|
42
|
+
return Number(expressao.valor);
|
|
43
|
+
}
|
|
44
|
+
if (expressao instanceof construtos_1.Agrupamento) {
|
|
45
|
+
return this.avaliarExpressaoNumericaConstante(expressao.expressao);
|
|
46
|
+
}
|
|
47
|
+
if (expressao instanceof construtos_1.Unario) {
|
|
48
|
+
const operando = this.avaliarExpressaoNumericaConstante(expressao.operando);
|
|
49
|
+
if (operando === null)
|
|
50
|
+
return null;
|
|
51
|
+
switch (expressao.operador.tipo) {
|
|
52
|
+
case portugol_ipt_1.default.SUBTRACAO:
|
|
53
|
+
return -operando;
|
|
54
|
+
default:
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (expressao instanceof construtos_1.Binario) {
|
|
59
|
+
const esquerda = this.avaliarExpressaoNumericaConstante(expressao.esquerda);
|
|
60
|
+
const direita = this.avaliarExpressaoNumericaConstante(expressao.direita);
|
|
61
|
+
if (esquerda === null || direita === null)
|
|
62
|
+
return null;
|
|
63
|
+
switch (expressao.operador.tipo) {
|
|
64
|
+
case portugol_ipt_1.default.ADICAO:
|
|
65
|
+
return esquerda + direita;
|
|
66
|
+
case portugol_ipt_1.default.SUBTRACAO:
|
|
67
|
+
return esquerda - direita;
|
|
68
|
+
case portugol_ipt_1.default.MULTIPLICACAO:
|
|
69
|
+
return esquerda * direita;
|
|
70
|
+
case portugol_ipt_1.default.DIVISAO:
|
|
71
|
+
return esquerda / direita;
|
|
72
|
+
case portugol_ipt_1.default.MODULO:
|
|
73
|
+
return esquerda % direita;
|
|
74
|
+
case portugol_ipt_1.default.EXPONENCIACAO:
|
|
75
|
+
return Math.pow(esquerda, direita);
|
|
76
|
+
default:
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
83
|
+
/**
|
|
84
|
+
* Consome quebras de linha opcionais.
|
|
85
|
+
*/
|
|
86
|
+
consumirQuebrasLinha() {
|
|
87
|
+
while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.QUEBRA_LINHA))
|
|
88
|
+
;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Coleta declarações até encontrar um token cujo tipo esteja em `tiposParada`.
|
|
92
|
+
* O token de parada NÃO é consumido.
|
|
93
|
+
*/
|
|
94
|
+
async resolverBloco(tiposParada) {
|
|
95
|
+
const declaracoes = [];
|
|
96
|
+
const primeiroSimbolo = this.simbolos[this.atual];
|
|
97
|
+
while (!this.estaNoFinal() && !tiposParada.includes(this.simbolos[this.atual].tipo)) {
|
|
98
|
+
const resolucao = await this.resolverDeclaracaoForaDeBloco();
|
|
99
|
+
if (Array.isArray(resolucao)) {
|
|
100
|
+
declaracoes.push(...resolucao);
|
|
101
|
+
}
|
|
102
|
+
else if (resolucao !== null && resolucao !== undefined) {
|
|
103
|
+
declaracoes.push(resolucao);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return new declaracoes_1.Bloco(this.hashArquivo, Number(primeiroSimbolo?.linha ?? 0), declaracoes.filter((d) => d));
|
|
107
|
+
}
|
|
108
|
+
// ── Expressões ─────────────────────────────────────────────────────────────
|
|
12
109
|
async primario() {
|
|
13
110
|
switch (this.simbolos[this.atual].tipo) {
|
|
14
|
-
case portugol_ipt_1.default.IDENTIFICADOR:
|
|
111
|
+
case portugol_ipt_1.default.IDENTIFICADOR: {
|
|
15
112
|
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
16
113
|
return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador);
|
|
114
|
+
}
|
|
17
115
|
case portugol_ipt_1.default.INTEIRO:
|
|
18
|
-
case portugol_ipt_1.default.
|
|
116
|
+
case portugol_ipt_1.default.NUMERO:
|
|
117
|
+
case portugol_ipt_1.default.TEXTO: {
|
|
19
118
|
const simboloAnterior = this.avancarEDevolverAnterior();
|
|
119
|
+
if (simboloAnterior.literal === null) {
|
|
120
|
+
throw this.erro(simboloAnterior, 'Esperado expressão.');
|
|
121
|
+
}
|
|
20
122
|
return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
|
|
21
|
-
|
|
123
|
+
}
|
|
124
|
+
case portugol_ipt_1.default.PARENTESE_ESQUERDO: {
|
|
22
125
|
this.avancarEDevolverAnterior();
|
|
23
126
|
const expressao = await this.expressao();
|
|
24
127
|
this.consumir(portugol_ipt_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
25
128
|
return new construtos_1.Agrupamento(this.hashArquivo, Number(this.simbolos[this.atual].linha), expressao);
|
|
129
|
+
}
|
|
26
130
|
}
|
|
131
|
+
throw this.erro(this.simbolos[this.atual], 'Esperado expressão.');
|
|
27
132
|
}
|
|
28
133
|
/**
|
|
29
|
-
*
|
|
30
|
-
* @returns O retorno da chamada de `primario()`.
|
|
134
|
+
* Suporta chamadas de funções embutidas: SEN(x), COS(x), POTENCIA(b,e), etc.
|
|
31
135
|
*/
|
|
32
136
|
async chamar() {
|
|
33
|
-
|
|
137
|
+
let expressao = await this.primario();
|
|
138
|
+
while (true) {
|
|
139
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.PARENTESE_ESQUERDO)) {
|
|
140
|
+
const argumentos = [];
|
|
141
|
+
if (!this.verificarTipoSimboloAtual(portugol_ipt_1.default.PARENTESE_DIREITO)) {
|
|
142
|
+
do {
|
|
143
|
+
argumentos.push(await this.expressao());
|
|
144
|
+
} while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
|
|
145
|
+
}
|
|
146
|
+
this.consumir(portugol_ipt_1.default.PARENTESE_DIREITO, "Esperado ')' após argumentos.");
|
|
147
|
+
expressao = new construtos_1.Chamada(this.hashArquivo, expressao, argumentos);
|
|
148
|
+
}
|
|
149
|
+
else if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.COLCHETE_ESQUERDO)) {
|
|
150
|
+
const indice = await this.expressao();
|
|
151
|
+
const fechamento = this.consumir(portugol_ipt_1.default.COLCHETE_DIREITO, "Esperado ']' após índice.");
|
|
152
|
+
expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, fechamento);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return expressao;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Override de `unario()` para incluir operadores unários aritméticos.
|
|
162
|
+
* `NAO` é tratado em `e()` para ter precedência menor que comparações.
|
|
163
|
+
*/
|
|
164
|
+
async unario() {
|
|
165
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.NEGACAO, portugol_ipt_1.default.SUBTRACAO)) {
|
|
166
|
+
const operador = this.simbolos[this.atual - 1];
|
|
167
|
+
const direito = await this.unario();
|
|
168
|
+
return new construtos_1.Unario(this.hashArquivo, operador, direito, 'ANTES');
|
|
169
|
+
}
|
|
170
|
+
return await this.chamar();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Override de `e()` para suportar o operador lógico `NAO` com precedência
|
|
174
|
+
* menor que comparações: `nao x = 0` → `nao (x = 0)`.
|
|
175
|
+
*/
|
|
176
|
+
async e() {
|
|
177
|
+
let expressao;
|
|
178
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.NAO)) {
|
|
179
|
+
const operador = this.simbolos[this.atual - 1];
|
|
180
|
+
const operando = await this.comparacaoIgualdade();
|
|
181
|
+
expressao = new construtos_1.Unario(this.hashArquivo, operador, operando, 'ANTES');
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
expressao = await this.comparacaoIgualdade();
|
|
185
|
+
}
|
|
186
|
+
while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.E)) {
|
|
187
|
+
const operador = this.simbolos[this.atual - 1];
|
|
188
|
+
const direito = await this.comparacaoIgualdade();
|
|
189
|
+
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
190
|
+
}
|
|
191
|
+
return expressao;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Override de `ou()` para incluir o operador lógico `XOU`.
|
|
195
|
+
*/
|
|
196
|
+
async ou() {
|
|
197
|
+
let expressao = await this.e();
|
|
198
|
+
while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.OU, portugol_ipt_1.default.XOU)) {
|
|
199
|
+
const operador = this.simbolos[this.atual - 1];
|
|
200
|
+
const direito = await this.e();
|
|
201
|
+
expressao = new construtos_1.Logico(this.hashArquivo, expressao, operador, direito);
|
|
202
|
+
}
|
|
203
|
+
return expressao;
|
|
34
204
|
}
|
|
35
205
|
async atribuir() {
|
|
36
206
|
const expressao = await this.ou();
|
|
@@ -47,12 +217,12 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
|
|
|
47
217
|
}
|
|
48
218
|
return expressao;
|
|
49
219
|
}
|
|
220
|
+
// ── Declarações ────────────────────────────────────────────────────────────
|
|
50
221
|
/**
|
|
51
|
-
*
|
|
222
|
+
* `escrever expr [, expr ...]`
|
|
52
223
|
*/
|
|
53
224
|
async declaracaoEscreva() {
|
|
54
225
|
const simboloAtual = this.avancarEDevolverAnterior();
|
|
55
|
-
// const argumentos = this.logicaComumEscreva();
|
|
56
226
|
const argumentos = [];
|
|
57
227
|
do {
|
|
58
228
|
const valor = await this.expressao();
|
|
@@ -60,56 +230,157 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
|
|
|
60
230
|
} while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
|
|
61
231
|
return new declaracoes_1.EscrevaMesmaLinha(Number(simboloAtual.linha), this.hashArquivo, argumentos);
|
|
62
232
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
233
|
+
/**
|
|
234
|
+
* `se cond entao ... [senao ...] fimse`
|
|
235
|
+
*/
|
|
66
236
|
async declaracaoSe() {
|
|
67
|
-
this.avancarEDevolverAnterior();
|
|
237
|
+
this.avancarEDevolverAnterior(); // consome 'se'
|
|
68
238
|
const condicao = await this.expressao();
|
|
69
|
-
this.consumir(portugol_ipt_1.default.ENTAO, "Esperado 'então'
|
|
70
|
-
this.
|
|
71
|
-
const caminhoEntao =
|
|
72
|
-
|
|
73
|
-
|
|
239
|
+
this.consumir(portugol_ipt_1.default.ENTAO, "Esperado 'então' após condição do se.");
|
|
240
|
+
this.consumirQuebrasLinha();
|
|
241
|
+
const caminhoEntao = await this.resolverBloco([
|
|
242
|
+
portugol_ipt_1.default.SENAO,
|
|
243
|
+
portugol_ipt_1.default.FIMSE,
|
|
244
|
+
]);
|
|
245
|
+
this.consumirQuebrasLinha();
|
|
74
246
|
let caminhoSenao = null;
|
|
75
247
|
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.SENAO)) {
|
|
76
|
-
this.
|
|
77
|
-
caminhoSenao = await this.
|
|
248
|
+
this.consumirQuebrasLinha();
|
|
249
|
+
caminhoSenao = await this.resolverBloco([portugol_ipt_1.default.FIMSE]);
|
|
78
250
|
}
|
|
79
|
-
this.
|
|
80
|
-
this.consumir(portugol_ipt_1.default.FIMSE, "Esperado 'fimse' para
|
|
251
|
+
this.consumirQuebrasLinha();
|
|
252
|
+
this.consumir(portugol_ipt_1.default.FIMSE, "Esperado 'fimse' para fechar instrução se.");
|
|
81
253
|
return new declaracoes_1.Se(condicao, caminhoEntao, [], caminhoSenao);
|
|
82
254
|
}
|
|
83
|
-
|
|
84
|
-
|
|
255
|
+
/**
|
|
256
|
+
* `enquanto cond faz ... fimenquanto`
|
|
257
|
+
*/
|
|
258
|
+
async declaracaoEnquanto() {
|
|
259
|
+
this.avancarEDevolverAnterior(); // consome 'enquanto'
|
|
260
|
+
const condicao = await this.expressao();
|
|
261
|
+
this.consumir(portugol_ipt_1.default.FAZ, "Esperado 'faz' após condição do enquanto.");
|
|
262
|
+
this.consumirQuebrasLinha();
|
|
263
|
+
const declaracoes = [];
|
|
264
|
+
const primeiroSimbolo = this.simbolos[this.atual];
|
|
265
|
+
while (!this.estaNoFinal() && !this.fechamentoEnquantoAtual()) {
|
|
266
|
+
const resolucao = await this.resolverDeclaracaoForaDeBloco();
|
|
267
|
+
if (Array.isArray(resolucao)) {
|
|
268
|
+
declaracoes.push(...resolucao);
|
|
269
|
+
}
|
|
270
|
+
else if (resolucao !== null && resolucao !== undefined) {
|
|
271
|
+
declaracoes.push(resolucao);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const corpo = new declaracoes_1.Bloco(this.hashArquivo, Number(primeiroSimbolo?.linha ?? 0), declaracoes.filter((d) => d));
|
|
275
|
+
this.consumirFechamentoEnquanto();
|
|
276
|
+
return new declaracoes_1.Enquanto(condicao, corpo);
|
|
85
277
|
}
|
|
86
|
-
|
|
87
|
-
|
|
278
|
+
/**
|
|
279
|
+
* `para v de ini ate fim [passo p]` + corpo + `proximo`
|
|
280
|
+
*/
|
|
281
|
+
async declaracaoPara() {
|
|
282
|
+
const simboloPara = this.avancarEDevolverAnterior(); // consome 'para'
|
|
283
|
+
const linha = Number(simboloPara.linha);
|
|
284
|
+
const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, "Esperado identificador após 'para'.");
|
|
285
|
+
this.consumir(portugol_ipt_1.default.DE, "Esperado 'de' após variável do 'para'.");
|
|
286
|
+
const inicioExpr = await this.expressao();
|
|
287
|
+
this.consumir(portugol_ipt_1.default.ATE, "Esperado 'ate' após valor inicial do 'para'.");
|
|
288
|
+
const fimExpr = await this.expressao();
|
|
289
|
+
let passoExpr = new construtos_1.Literal(this.hashArquivo, linha, 1, 'inteiro');
|
|
290
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.PASSO)) {
|
|
291
|
+
passoExpr = await this.expressao();
|
|
292
|
+
}
|
|
293
|
+
this.consumirQuebrasLinha();
|
|
294
|
+
const corpo = await this.resolverBloco([portugol_ipt_1.default.PROXIMO]);
|
|
295
|
+
this.consumir(portugol_ipt_1.default.PROXIMO, "Esperado 'proximo' para fechar o laço 'para'.");
|
|
296
|
+
const varIteracao = new construtos_1.Variavel(this.hashArquivo, identificador, 'inteiro');
|
|
297
|
+
const simboloMenorIgual = new simbolo_1.Simbolo(portugol_ipt_1.default.MENOR_IGUAL, '<=', null, linha, this.hashArquivo);
|
|
298
|
+
const simboloAdicao = new simbolo_1.Simbolo(portugol_ipt_1.default.ADICAO, '+', null, linha, this.hashArquivo);
|
|
299
|
+
const inicializador = new declaracoes_1.Expressao(new construtos_1.Atribuir(this.hashArquivo, varIteracao, inicioExpr));
|
|
300
|
+
const condicao = new construtos_1.Binario(this.hashArquivo, varIteracao, simboloMenorIgual, fimExpr);
|
|
301
|
+
const incrementar = new construtos_1.Atribuir(this.hashArquivo, varIteracao, new construtos_1.Binario(this.hashArquivo, varIteracao, simboloAdicao, passoExpr));
|
|
302
|
+
return new declaracoes_1.Para(this.hashArquivo, linha, inicializador, condicao, incrementar, corpo);
|
|
88
303
|
}
|
|
89
|
-
|
|
90
|
-
|
|
304
|
+
/**
|
|
305
|
+
* `repete ... ate cond`
|
|
306
|
+
* Semântica: executa o corpo e repete enquanto a condição for FALSA (repeat-until).
|
|
307
|
+
* Mapeado para `Fazer` com a condição invertida via `nao`.
|
|
308
|
+
*/
|
|
309
|
+
async declaracaoRepete() {
|
|
310
|
+
const simboloRepete = this.avancarEDevolverAnterior(); // consome 'repete'
|
|
311
|
+
this.consumirQuebrasLinha();
|
|
312
|
+
const corpo = await this.resolverBloco([portugol_ipt_1.default.ATE]);
|
|
313
|
+
this.consumir(portugol_ipt_1.default.ATE, "Esperado 'ate' para fechar o laço 'repete'.");
|
|
314
|
+
const condicaoAte = await this.expressao();
|
|
315
|
+
// Inverte a condição: o loop continua enquanto `ate cond` for falso
|
|
316
|
+
const operadorNao = new simbolo_1.Simbolo(portugol_ipt_1.default.NAO, 'nao', null, condicaoAte.linha, this.hashArquivo);
|
|
317
|
+
const condicaoInvertida = new construtos_1.Unario(this.hashArquivo, operadorNao, condicaoAte, 'ANTES');
|
|
318
|
+
return new declaracoes_1.Fazer(this.hashArquivo, Number(simboloRepete.linha), corpo, condicaoInvertida);
|
|
91
319
|
}
|
|
92
|
-
|
|
93
|
-
|
|
320
|
+
/**
|
|
321
|
+
* `faz ... enquanto cond`
|
|
322
|
+
* O `enquanto` de fechamento é distinguido no lexer (FAZENQUANTO) do `enquanto` de abertura.
|
|
323
|
+
*/
|
|
324
|
+
async declaracaoFazer() {
|
|
325
|
+
const simboloFaz = this.avancarEDevolverAnterior(); // consome 'faz'
|
|
326
|
+
this.consumirQuebrasLinha();
|
|
327
|
+
const corpo = await this.resolverBloco([portugol_ipt_1.default.FAZENQUANTO]);
|
|
328
|
+
this.consumir(portugol_ipt_1.default.FAZENQUANTO, "Esperado 'enquanto' para fechar o laço 'faz'.");
|
|
329
|
+
const condicao = await this.expressao();
|
|
330
|
+
return new declaracoes_1.Fazer(this.hashArquivo, Number(simboloFaz.linha), corpo, condicao);
|
|
94
331
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
332
|
+
/**
|
|
333
|
+
* `escolhe expr caso v[, v...]: instr ... [defeito: instr] fimescolhe`
|
|
334
|
+
*/
|
|
335
|
+
declaracaoEscolha() {
|
|
336
|
+
this.avancarEDevolverAnterior(); // consome 'escolhe'
|
|
337
|
+
const identificador = this.primario();
|
|
338
|
+
// A versão síncrona é necessária porque a interface do base declara este como não-async.
|
|
339
|
+
// Fazemos o cast após — o analisar() é async e usa await nos callers.
|
|
340
|
+
throw new Error('Use declaracaoEscolhaAsync() internamente.');
|
|
341
|
+
}
|
|
342
|
+
async declaracaoEscolhaAsync() {
|
|
343
|
+
this.avancarEDevolverAnterior(); // consome 'escolhe'
|
|
344
|
+
const identificador = await this.expressao();
|
|
345
|
+
this.consumirQuebrasLinha();
|
|
346
|
+
const caminhos = [];
|
|
347
|
+
let caminhoPadrao = null;
|
|
348
|
+
while (!this.estaNoFinal() && !this.fechamentoEscolheAtual()) {
|
|
349
|
+
this.consumirQuebrasLinha();
|
|
350
|
+
if (this.estaNoFinal() || this.fechamentoEscolheAtual()) {
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.CASO)) {
|
|
354
|
+
// Múltiplos valores por caso: `caso 1, 2, 3:`
|
|
355
|
+
const condicoes = [];
|
|
356
|
+
do {
|
|
357
|
+
condicoes.push(await this.expressao());
|
|
358
|
+
} while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
|
|
359
|
+
this.consumir(portugol_ipt_1.default.DOIS_PONTOS, "Esperado ':' após valor do 'caso'.");
|
|
360
|
+
this.consumirQuebrasLinha();
|
|
361
|
+
const bloco = await this.resolverBloco([
|
|
362
|
+
portugol_ipt_1.default.CASO,
|
|
363
|
+
portugol_ipt_1.default.DEFEITO,
|
|
364
|
+
portugol_ipt_1.default.FIMESCOLHE,
|
|
365
|
+
portugol_ipt_1.default.FIM,
|
|
366
|
+
]);
|
|
367
|
+
caminhos.push({ condicoes, declaracoes: bloco.declaracoes });
|
|
368
|
+
}
|
|
369
|
+
else if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.DEFEITO)) {
|
|
370
|
+
this.consumir(portugol_ipt_1.default.DOIS_PONTOS, "Esperado ':' após 'defeito'.");
|
|
371
|
+
this.consumirQuebrasLinha();
|
|
372
|
+
const bloco = await this.resolverBloco([portugol_ipt_1.default.FIMESCOLHE, portugol_ipt_1.default.FIM]);
|
|
373
|
+
caminhoPadrao = { condicoes: [], declaracoes: bloco.declaracoes };
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
this.consumirFechamentoEscolhe();
|
|
380
|
+
return new declaracoes_1.Escolha(identificador, caminhos, caminhoPadrao);
|
|
109
381
|
}
|
|
110
382
|
/**
|
|
111
|
-
*
|
|
112
|
-
* @returns Uma declaração `Leia`.
|
|
383
|
+
* `ler var [, var ...]`
|
|
113
384
|
*/
|
|
114
385
|
async expressaoLeia() {
|
|
115
386
|
const simboloAtual = this.avancarEDevolverAnterior();
|
|
@@ -119,48 +390,148 @@ class AvaliadorSintaticoPortugolIpt extends avaliador_sintatico_base_1.Avaliador
|
|
|
119
390
|
} while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
|
|
120
391
|
return new construtos_1.Leia(simboloAtual, argumentos);
|
|
121
392
|
}
|
|
122
|
-
|
|
123
|
-
|
|
393
|
+
/**
|
|
394
|
+
* Declara variáveis de um dado tipo, com suporte a arrays e valor inicial.
|
|
395
|
+
* Ex: `inteiro x`, `real y = 3.14`, `logico v[5]`
|
|
396
|
+
*/
|
|
397
|
+
async declaracaoVariaveis(tipoToken, tipoDelegua, valorPadrao) {
|
|
398
|
+
const simboloTipo = this.avancarEDevolverAnterior();
|
|
399
|
+
const linha = Number(simboloTipo.linha);
|
|
400
|
+
const inicializacoes = [];
|
|
401
|
+
do {
|
|
402
|
+
const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, `Esperado identificador após '${simboloTipo.lexema}'.`);
|
|
403
|
+
// Array: `inteiro v[10]`
|
|
404
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.COLCHETE_ESQUERDO)) {
|
|
405
|
+
const expressaoTamanho = await this.expressao();
|
|
406
|
+
const tamanhoConstante = this.avaliarExpressaoNumericaConstante(expressaoTamanho);
|
|
407
|
+
if (tamanhoConstante === null ||
|
|
408
|
+
!Number.isInteger(tamanhoConstante) ||
|
|
409
|
+
tamanhoConstante < 0) {
|
|
410
|
+
throw this.erro(identificador, 'Tamanho do vetor deve ser expressão numérica inteira constante e não-negativa.');
|
|
411
|
+
}
|
|
412
|
+
const tamanho = Number(tamanhoConstante);
|
|
413
|
+
this.consumir(portugol_ipt_1.default.COLCHETE_DIREITO, "Esperado ']' após tamanho do vetor.");
|
|
414
|
+
const elementos = Array.from({ length: tamanho }, () => new construtos_1.Literal(this.hashArquivo, linha, valorPadrao, tipoDelegua));
|
|
415
|
+
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Vetor(this.hashArquivo, linha, elementos, `${tipoDelegua}[]`)));
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
// Inicialização opcional: `inteiro x = 5` (usa = como igualdade aqui, não seta)
|
|
419
|
+
let valorInicial = new construtos_1.Literal(this.hashArquivo, linha, valorPadrao, tipoDelegua);
|
|
420
|
+
if (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.IGUAL)) {
|
|
421
|
+
valorInicial = await this.expressao();
|
|
422
|
+
}
|
|
423
|
+
inicializacoes.push(new declaracoes_1.Var(identificador, valorInicial, tipoDelegua));
|
|
424
|
+
}
|
|
425
|
+
} while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
|
|
426
|
+
return inicializacoes;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* `constante tipo nome = valor`
|
|
430
|
+
*/
|
|
431
|
+
async declaracaoConstante() {
|
|
432
|
+
this.avancarEDevolverAnterior(); // consome 'constante'
|
|
433
|
+
// Tipo obrigatório após 'constante'
|
|
434
|
+
const tipoSimbolo = this.simbolos[this.atual];
|
|
435
|
+
const mapaValoresPadrao = {
|
|
436
|
+
[portugol_ipt_1.default.INTEIRO]: 0,
|
|
437
|
+
[portugol_ipt_1.default.TEXTO]: '',
|
|
438
|
+
[portugol_ipt_1.default.REAL]: 0.0,
|
|
439
|
+
[portugol_ipt_1.default.LOGICO]: false,
|
|
440
|
+
[portugol_ipt_1.default.CARACTER]: '',
|
|
441
|
+
};
|
|
442
|
+
const mapaTipos = {
|
|
443
|
+
[portugol_ipt_1.default.INTEIRO]: 'inteiro',
|
|
444
|
+
[portugol_ipt_1.default.TEXTO]: 'texto',
|
|
445
|
+
[portugol_ipt_1.default.REAL]: 'real',
|
|
446
|
+
[portugol_ipt_1.default.LOGICO]: 'lógico',
|
|
447
|
+
[portugol_ipt_1.default.CARACTER]: 'caracter',
|
|
448
|
+
};
|
|
449
|
+
if (!(tipoSimbolo.tipo in mapaValoresPadrao)) {
|
|
450
|
+
throw this.erro(tipoSimbolo, "Esperado tipo após 'constante'.");
|
|
451
|
+
}
|
|
452
|
+
this.avancarEDevolverAnterior(); // consome o tipo
|
|
453
|
+
const tipoDelegua = mapaTipos[tipoSimbolo.tipo];
|
|
454
|
+
const constantes = [];
|
|
455
|
+
do {
|
|
456
|
+
const identificador = this.consumir(portugol_ipt_1.default.IDENTIFICADOR, `Esperado identificador após '${tipoSimbolo.lexema}'.`);
|
|
457
|
+
this.consumir(portugol_ipt_1.default.IGUAL, "Esperado '=' após nome da constante.");
|
|
458
|
+
const valor = await this.expressao();
|
|
459
|
+
constantes.push(new declaracoes_1.Const(identificador, valor, tipoDelegua, true));
|
|
460
|
+
} while (this.verificarSeSimboloAtualEIgualA(portugol_ipt_1.default.VIRGULA));
|
|
461
|
+
return constantes;
|
|
124
462
|
}
|
|
463
|
+
// ── Ponto de entrada de declarações ────────────────────────────────────────
|
|
125
464
|
async resolverDeclaracaoForaDeBloco() {
|
|
126
465
|
const simboloAtual = this.simbolos[this.atual];
|
|
127
466
|
switch (simboloAtual.tipo) {
|
|
128
467
|
case portugol_ipt_1.default.ESCREVER:
|
|
129
468
|
return await this.declaracaoEscreva();
|
|
130
|
-
case portugol_ipt_1.default.INTEIRO:
|
|
131
|
-
return await this.declaracaoInteiros();
|
|
132
469
|
case portugol_ipt_1.default.LER:
|
|
133
470
|
return new declaracoes_1.Expressao(await this.expressaoLeia());
|
|
471
|
+
case portugol_ipt_1.default.SE:
|
|
472
|
+
return await this.declaracaoSe();
|
|
473
|
+
case portugol_ipt_1.default.ENQUANTO:
|
|
474
|
+
return await this.declaracaoEnquanto();
|
|
475
|
+
case portugol_ipt_1.default.PARA:
|
|
476
|
+
return await this.declaracaoPara();
|
|
477
|
+
case portugol_ipt_1.default.REPETE:
|
|
478
|
+
return await this.declaracaoRepete();
|
|
479
|
+
case portugol_ipt_1.default.FAZ:
|
|
480
|
+
return await this.declaracaoFazer();
|
|
481
|
+
case portugol_ipt_1.default.ESCOLHE:
|
|
482
|
+
return await this.declaracaoEscolhaAsync();
|
|
483
|
+
case portugol_ipt_1.default.INTEIRO:
|
|
484
|
+
return await this.declaracaoVariaveis(portugol_ipt_1.default.INTEIRO, 'inteiro', 0);
|
|
485
|
+
case portugol_ipt_1.default.TEXTO:
|
|
486
|
+
if (simboloAtual.literal === null &&
|
|
487
|
+
String(simboloAtual.lexema).toLowerCase() === 'texto') {
|
|
488
|
+
return await this.declaracaoVariaveis(portugol_ipt_1.default.TEXTO, 'texto', '');
|
|
489
|
+
}
|
|
490
|
+
return new declaracoes_1.Expressao(await this.expressao());
|
|
491
|
+
case portugol_ipt_1.default.REAL:
|
|
492
|
+
return await this.declaracaoVariaveis(portugol_ipt_1.default.REAL, 'real', 0.0);
|
|
493
|
+
case portugol_ipt_1.default.LOGICO:
|
|
494
|
+
return await this.declaracaoVariaveis(portugol_ipt_1.default.LOGICO, 'lógico', false);
|
|
495
|
+
case portugol_ipt_1.default.CARACTER:
|
|
496
|
+
return await this.declaracaoVariaveis(portugol_ipt_1.default.CARACTER, 'caracter', '');
|
|
497
|
+
case portugol_ipt_1.default.CONSTANTE:
|
|
498
|
+
return await this.declaracaoConstante();
|
|
499
|
+
case portugol_ipt_1.default.VARIAVEL: {
|
|
500
|
+
// 'variavel' é apenas um modificador opcional; avança e processa o tipo
|
|
501
|
+
this.avancarEDevolverAnterior();
|
|
502
|
+
return await this.resolverDeclaracaoForaDeBloco();
|
|
503
|
+
}
|
|
134
504
|
case portugol_ipt_1.default.QUEBRA_LINHA:
|
|
135
505
|
this.avancarEDevolverAnterior();
|
|
136
506
|
return null;
|
|
137
|
-
case portugol_ipt_1.default.SE:
|
|
138
|
-
return await this.declaracaoSe();
|
|
139
507
|
default:
|
|
140
508
|
return new declaracoes_1.Expressao(await this.expressao());
|
|
141
509
|
}
|
|
142
510
|
}
|
|
143
|
-
|
|
144
|
-
|
|
511
|
+
// ── Métodos obrigatórios não usados em Portugol IPT ────────────────────────
|
|
512
|
+
blocoEscopo() {
|
|
513
|
+
throw new Error('Método não implementado.');
|
|
145
514
|
}
|
|
515
|
+
corpoDaFuncao(_tipo) {
|
|
516
|
+
throw new Error('Portugol IPT não suporta funções definidas pelo utilizador.');
|
|
517
|
+
}
|
|
518
|
+
// ── Ponto de entrada principal ─────────────────────────────────────────────
|
|
146
519
|
async analisar(retornoLexador, hashArquivo) {
|
|
147
520
|
this.erros = [];
|
|
148
521
|
this.atual = 0;
|
|
149
522
|
this.blocos = 0;
|
|
150
523
|
this.hashArquivo = hashArquivo || 0;
|
|
151
524
|
this.simbolos = retornoLexador?.simbolos || [];
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
525
|
+
this.consumirQuebrasLinha();
|
|
526
|
+
this.consumir(portugol_ipt_1.default.INICIO, "Esperado 'inicio' para marcar o início do algoritmo.");
|
|
155
527
|
let declaracoes = [];
|
|
156
|
-
this.validarSegmentoInicio();
|
|
157
528
|
while (!this.estaNoFinal() && this.simbolos[this.atual].tipo !== portugol_ipt_1.default.FIM) {
|
|
158
|
-
const
|
|
159
|
-
if (Array.isArray(
|
|
160
|
-
declaracoes = declaracoes.concat(
|
|
529
|
+
const resolucao = await this.resolverDeclaracaoForaDeBloco();
|
|
530
|
+
if (Array.isArray(resolucao)) {
|
|
531
|
+
declaracoes = declaracoes.concat(resolucao);
|
|
161
532
|
}
|
|
162
|
-
else {
|
|
163
|
-
declaracoes.push(
|
|
533
|
+
else if (resolucao !== null && resolucao !== undefined) {
|
|
534
|
+
declaracoes.push(resolucao);
|
|
164
535
|
}
|
|
165
536
|
}
|
|
166
537
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-portugol-ipt.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.ts"],"names":[],"mappings":";;;;;;AAAA,iDAW0B;AAC1B,mDAY2B;AAE3B,0EAAqE;AAIrE,wFAAmE;AAEnE,MAAa,6BAA8B,SAAQ,iDAAsB;IACrE,KAAK,CAAC,QAAQ;QACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,KAAK,sBAAe,CAAC,aAAa;gBAC9B,MAAM,oBAAoB,GAAqB,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAE/E,OAAO,IAAI,qBAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAChE,KAAK,sBAAe,CAAC,OAAO,CAAC;YAC7B,KAAK,sBAAe,CAAC,KAAK;gBACtB,MAAM,eAAe,GAAqB,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC1E,OAAO,IAAI,oBAAO,CACd,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,EAC7B,eAAe,CAAC,OAAO,CAC1B,CAAC;YACN,KAAK,sBAAe,CAAC,kBAAkB;gBACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,sBAAe,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;gBAEnF,OAAO,IAAI,wBAAW,CAClB,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EACvC,SAAS,CACZ,CAAC;QACV,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACR,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,eAAe,CAAC,EAAE,CAAC;YACvE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEpC,IAAI,SAAS,YAAY,qBAAQ,EAAE,CAAC;gBAChC,OAAO,IAAI,qBAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,SAAS,YAAY,iCAAoB,EAAE,CAAC;gBAC5C,OAAO,IAAI,gCAAmB,CAC1B,IAAI,CAAC,WAAW,EAChB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,eAAe,EACzB,SAAS,CAAC,MAAM,EAChB,KAAK,CACR,CAAC;YACN,CAAC;YAED,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,gDAAgD;QAChD,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,GAAG,CAAC;YACA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAErC,UAAU,CAAC,IAAI,CACX,IAAI,8BAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAC7E,CAAC;QACN,CAAC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,OAAO,CAAC,EAAE;QAEvE,OAAO,IAAI,+BAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC3F,CAAC;IAED,WAAW;QACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY;QACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,sBAAe,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,YAAY,EAC5B,oFAAoF,CACvF,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAU,CAAC;QAE3E,OAAO,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,YAAY,CAAC;YAAC,CAAC;QAE1E,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,YAAY,EAC5B,qFAAqF,CACxF,CAAC;YACF,YAAY,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,YAAY,EAC5B,oFAAoF,CACvF,CAAC;QACF,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,KAAK,EACrB,wDAAwD,CAC3D,CAAC;QAEF,OAAO,IAAI,gBAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAElE,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,GAAG,CAAC;YACA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAC/B,sBAAe,CAAC,aAAa,EAC7B,0DAA0D,CAC7D,CAAC;YAEF,2DAA2D;YAC3D,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CACtC,sBAAe,CAAC,OAAO,EACvB,2EAA2E,CAC9E,CAAC;gBACF,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;YAED,cAAc,CAAC,IAAI,CACf,IAAI,iBAAG,CACH,aAAa,EACb,IAAI,oBAAO,CACP,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAC5B,kBAAkB,EAClB,SAAS,CACZ,CACJ,CACJ,CAAC;QACN,CAAC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,OAAO,CAAC,EAAE;QAEvE,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,GAAG,CAAC;YACA,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QAChE,CAAC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,sBAAe,CAAC,OAAO,CAAC,EAAE;QAEvE,OAAO,IAAI,iBAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,IAAY;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,6BAA6B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,sBAAe,CAAC,QAAQ;gBACzB,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1C,KAAK,sBAAe,CAAC,OAAO;gBACxB,OAAO,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,KAAK,sBAAe,CAAC,GAAG;gBACpB,OAAO,IAAI,uBAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrD,KAAK,sBAAe,CAAC,YAAY;gBAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YAChB,KAAK,sBAAe,CAAC,EAAE;gBACnB,OAAO,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC;gBACI,OAAO,IAAI,uBAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,QAAQ,CACT,sBAAe,CAAC,MAAM,EACtB,8DAA8D,CACjE,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CACV,cAAgD,EAChD,WAAmB;QAEnB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE/C,OAAO,IAAI,CAAC,yBAAyB,CAAC,sBAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,sBAAe,CAAC,GAAG,EAAE,CAAC;YACnF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACvE,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACrC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,OAAO;YACH,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;SACqB,CAAC;IAC/C,CAAC;CACJ;AAzPD,sEAyPC"}
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-portugol-ipt.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.ts"],"names":[],"mappings":"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"}
|