@designliquido/delegua 0.21.5 → 0.21.7
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/bin/package.json +5 -3
- package/fontes/analisador-semantico/analisador-semantico.d.ts +3 -3
- package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.d.ts +64 -0
- package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js +190 -0
- package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js.map +1 -0
- package/fontes/analisador-semantico/dialetos/index.d.ts +1 -0
- package/fontes/analisador-semantico/dialetos/index.js +18 -0
- package/fontes/analisador-semantico/dialetos/index.js.map +1 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +5 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.d.ts +3 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +87 -17
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
- package/fontes/bibliotecas/primitivas-texto.d.ts +13 -13
- package/fontes/bibliotecas/primitivas-texto.js +6 -1
- package/fontes/bibliotecas/primitivas-texto.js.map +1 -1
- package/fontes/bibliotecas/primitivas-vetor.d.ts +2 -0
- package/fontes/bibliotecas/primitivas-vetor.js +23 -0
- package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
- package/fontes/estruturas/delegua-funcao.d.ts +1 -1
- package/fontes/estruturas/delegua-funcao.js.map +1 -1
- package/fontes/interpretador/dialetos/birl/comum.d.ts +3 -0
- package/fontes/interpretador/dialetos/birl/comum.js +66 -0
- package/fontes/interpretador/dialetos/birl/comum.js.map +1 -0
- package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +11 -6
- package/fontes/interpretador/dialetos/birl/interpretador-birl.js +159 -31
- package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
- package/fontes/interpretador/interpretador-base.js +14 -9
- package/fontes/interpretador/interpretador-base.js.map +1 -1
- package/package.json +5 -3
package/bin/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@designliquido/delegua",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.6",
|
|
4
4
|
"description": "Linguagem de programação simples e moderna usando português estruturado, com suporte a múltiplos dialetos",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -21,12 +21,14 @@
|
|
|
21
21
|
"url": "git+https://github.com/DesignLiquido/delegua.git"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
|
+
"birl",
|
|
24
25
|
"egua",
|
|
25
26
|
"eguap",
|
|
26
27
|
"delegua",
|
|
27
28
|
"mapler",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
29
|
+
"português",
|
|
30
|
+
"portugol",
|
|
31
|
+
"visualg"
|
|
30
32
|
],
|
|
31
33
|
"author": "Leonel Sanches da Silva",
|
|
32
34
|
"contributors": [
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Atribuir, FimPara, FormatacaoEscrita, Literal, Super, TipoDe } from '../construtos';
|
|
2
|
+
import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, Para, ParaCada, Retorna, Se, Sustar, Tente, Var } from '../declaracoes';
|
|
3
3
|
import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface';
|
|
4
4
|
import { ErroAnalisadorSemantico } from '../interfaces/erros';
|
|
5
5
|
import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
|
|
6
|
-
import { ContinuarQuebra,
|
|
6
|
+
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
|
|
7
7
|
import { PilhaVariaveis } from './pilha-variaveis';
|
|
8
8
|
interface VariavelHipoteticaInterface {
|
|
9
9
|
tipo: 'texto' | 'número' | 'longo' | 'vetor' | 'dicionário' | 'nulo' | 'lógico' | 'função' | 'símbolo' | 'objeto' | 'módulo';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Atribuir, FimPara, FormatacaoEscrita, Literal, Super, TipoDe } from '../../construtos';
|
|
2
|
+
import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, Para, ParaCada, Retorna, Se, Sustar, Tente, Var } from '../../declaracoes';
|
|
3
|
+
import { AnalisadorSemanticoInterface } from '../../interfaces/analisador-semantico-interface';
|
|
4
|
+
import { ErroAnalisadorSemantico } from '../../interfaces/erros';
|
|
5
|
+
import { RetornoAnalisadorSemantico } from '../../interfaces/retornos/retorno-analisador-semantico';
|
|
6
|
+
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../quebras';
|
|
7
|
+
import { PilhaVariaveis } from '../pilha-variaveis';
|
|
8
|
+
interface VariavelHipoteticaInterface {
|
|
9
|
+
tipo: 'texto' | 'número' | 'longo' | 'vetor' | 'dicionário' | 'nulo' | 'lógico' | 'função' | 'símbolo' | 'objeto' | 'módulo';
|
|
10
|
+
subtipo?: 'texto' | 'número' | 'longo' | 'lógico';
|
|
11
|
+
imutavel: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare class AnalisadorSemanticoBirl implements AnalisadorSemanticoInterface {
|
|
14
|
+
pilhaVariaveis: PilhaVariaveis;
|
|
15
|
+
variaveis: {
|
|
16
|
+
[nomeVariavel: string]: VariavelHipoteticaInterface;
|
|
17
|
+
};
|
|
18
|
+
atual: number;
|
|
19
|
+
erros: ErroAnalisadorSemantico[];
|
|
20
|
+
constructor();
|
|
21
|
+
visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
|
|
22
|
+
visitarDeclaracaoClasse(declaracao: Classe): Promise<void>;
|
|
23
|
+
visitarDeclaracaoConst(declaracao: Const): Promise<any>;
|
|
24
|
+
visitarDeclaracaoDeAtribuicao(expressao: Atribuir): Promise<void>;
|
|
25
|
+
visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>;
|
|
26
|
+
visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<void>;
|
|
27
|
+
visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<void>;
|
|
28
|
+
visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>;
|
|
29
|
+
visitarDeclaracaoEscreva(declaracao: Escreva): Promise<void>;
|
|
30
|
+
visitarDeclaracaoFazer(declaracao: Fazer): Promise<void>;
|
|
31
|
+
visitarDeclaracaoImportar(declaracao: Importar): Promise<void>;
|
|
32
|
+
visitarDeclaracaoPara(declaracao: Para): Promise<any>;
|
|
33
|
+
visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
|
|
34
|
+
visitarDeclaracaoSe(declaracao: Se): Promise<void>;
|
|
35
|
+
visitarDeclaracaoTente(declaracao: Tente): Promise<void>;
|
|
36
|
+
visitarDeclaracaoVar(declaracao: Var): Promise<any>;
|
|
37
|
+
visitarExpressaoAcessoIndiceVariavel(expressao: any): Promise<void>;
|
|
38
|
+
visitarExpressaoAcessoMetodo(expressao: any): Promise<void>;
|
|
39
|
+
visitarExpressaoAgrupamento(expressao: any): Promise<any>;
|
|
40
|
+
visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
|
|
41
|
+
visitarExpressaoBinaria(expressao: any): Promise<void>;
|
|
42
|
+
visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
|
|
43
|
+
visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra;
|
|
44
|
+
visitarExpressaoDeChamada(expressao: any): Promise<void>;
|
|
45
|
+
visitarExpressaoDefinirValor(expressao: any): Promise<void>;
|
|
46
|
+
visitarExpressaoDeleguaFuncao(expressao: any): Promise<void>;
|
|
47
|
+
visitarExpressaoDeVariavel(expressao: any): Promise<void>;
|
|
48
|
+
visitarExpressaoDicionario(expressao: any): Promise<void>;
|
|
49
|
+
visitarExpressaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<void>;
|
|
50
|
+
visitarExpressaoFalhar(expressao: any): Promise<any>;
|
|
51
|
+
visitarExpressaoFimPara(declaracao: FimPara): Promise<void>;
|
|
52
|
+
visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<void>;
|
|
53
|
+
visitarExpressaoIsto(expressao: any): Promise<void>;
|
|
54
|
+
visitarExpressaoLeia(expressao: Leia): Promise<void>;
|
|
55
|
+
visitarExpressaoLiteral(expressao: Literal): Promise<any>;
|
|
56
|
+
visitarExpressaoLogica(expressao: any): Promise<void>;
|
|
57
|
+
visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
|
|
58
|
+
visitarExpressaoSuper(expressao: Super): Promise<void>;
|
|
59
|
+
visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
|
|
60
|
+
visitarExpressaoUnaria(expressao: any): Promise<void>;
|
|
61
|
+
visitarExpressaoVetor(expressao: any): Promise<void>;
|
|
62
|
+
analisar(declaracoes: Declaracao[]): RetornoAnalisadorSemantico;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnalisadorSemanticoBirl = void 0;
|
|
4
|
+
const pilha_variaveis_1 = require("../pilha-variaveis");
|
|
5
|
+
class AnalisadorSemanticoBirl {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.pilhaVariaveis = new pilha_variaveis_1.PilhaVariaveis();
|
|
8
|
+
this.variaveis = {};
|
|
9
|
+
this.atual = 0;
|
|
10
|
+
this.erros = [];
|
|
11
|
+
}
|
|
12
|
+
visitarExpressaoTipoDe(expressao) {
|
|
13
|
+
throw new Error('Method not implemented.');
|
|
14
|
+
}
|
|
15
|
+
visitarDeclaracaoClasse(declaracao) {
|
|
16
|
+
return Promise.resolve();
|
|
17
|
+
}
|
|
18
|
+
visitarDeclaracaoConst(declaracao) {
|
|
19
|
+
return Promise.resolve();
|
|
20
|
+
}
|
|
21
|
+
visitarDeclaracaoDeAtribuicao(expressao) {
|
|
22
|
+
if (!this.variaveis.hasOwnProperty(expressao.simbolo.lexema)) {
|
|
23
|
+
this.erros.push({
|
|
24
|
+
simbolo: expressao.simbolo,
|
|
25
|
+
mensagem: `A variável ${expressao.simbolo.lexema} não foi declarada.`,
|
|
26
|
+
hashArquivo: expressao.hashArquivo,
|
|
27
|
+
linha: expressao.linha,
|
|
28
|
+
});
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
}
|
|
31
|
+
if (this.variaveis[expressao.simbolo.lexema].imutavel) {
|
|
32
|
+
this.erros.push({
|
|
33
|
+
simbolo: expressao.simbolo,
|
|
34
|
+
mensagem: `Constante ${expressao.simbolo.lexema} não pode ser modificada.`,
|
|
35
|
+
hashArquivo: expressao.hashArquivo,
|
|
36
|
+
linha: expressao.linha,
|
|
37
|
+
});
|
|
38
|
+
return Promise.resolve();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
visitarDeclaracaoDeExpressao(declaracao) {
|
|
42
|
+
return declaracao.expressao.aceitar(this);
|
|
43
|
+
}
|
|
44
|
+
visitarDeclaracaoDefinicaoFuncao(declaracao) {
|
|
45
|
+
return Promise.resolve();
|
|
46
|
+
}
|
|
47
|
+
visitarDeclaracaoEnquanto(declaracao) {
|
|
48
|
+
return Promise.resolve();
|
|
49
|
+
}
|
|
50
|
+
visitarDeclaracaoEscolha(declaracao) {
|
|
51
|
+
return Promise.resolve();
|
|
52
|
+
}
|
|
53
|
+
visitarDeclaracaoEscreva(declaracao) {
|
|
54
|
+
return Promise.resolve();
|
|
55
|
+
}
|
|
56
|
+
visitarDeclaracaoFazer(declaracao) {
|
|
57
|
+
return Promise.resolve();
|
|
58
|
+
}
|
|
59
|
+
visitarDeclaracaoImportar(declaracao) {
|
|
60
|
+
return Promise.resolve();
|
|
61
|
+
}
|
|
62
|
+
visitarDeclaracaoPara(declaracao) {
|
|
63
|
+
return Promise.resolve();
|
|
64
|
+
}
|
|
65
|
+
visitarDeclaracaoParaCada(declaracao) {
|
|
66
|
+
return Promise.resolve();
|
|
67
|
+
}
|
|
68
|
+
visitarDeclaracaoSe(declaracao) {
|
|
69
|
+
return Promise.resolve();
|
|
70
|
+
}
|
|
71
|
+
visitarDeclaracaoTente(declaracao) {
|
|
72
|
+
return Promise.resolve();
|
|
73
|
+
}
|
|
74
|
+
visitarDeclaracaoVar(declaracao) {
|
|
75
|
+
this.variaveis[declaracao.simbolo.lexema] = {
|
|
76
|
+
imutavel: false,
|
|
77
|
+
tipo: 'número',
|
|
78
|
+
};
|
|
79
|
+
return Promise.resolve();
|
|
80
|
+
}
|
|
81
|
+
visitarExpressaoAcessoIndiceVariavel(expressao) {
|
|
82
|
+
return Promise.resolve();
|
|
83
|
+
}
|
|
84
|
+
visitarExpressaoAcessoMetodo(expressao) {
|
|
85
|
+
return Promise.resolve();
|
|
86
|
+
}
|
|
87
|
+
visitarExpressaoAgrupamento(expressao) {
|
|
88
|
+
return Promise.resolve();
|
|
89
|
+
}
|
|
90
|
+
visitarExpressaoAtribuicaoPorIndice(expressao) {
|
|
91
|
+
return Promise.resolve();
|
|
92
|
+
}
|
|
93
|
+
visitarExpressaoBinaria(expressao) {
|
|
94
|
+
return Promise.resolve();
|
|
95
|
+
}
|
|
96
|
+
visitarExpressaoBloco(declaracao) {
|
|
97
|
+
return Promise.resolve();
|
|
98
|
+
}
|
|
99
|
+
visitarExpressaoContinua(declaracao) {
|
|
100
|
+
return Promise.resolve();
|
|
101
|
+
}
|
|
102
|
+
visitarExpressaoDeChamada(expressao) {
|
|
103
|
+
return Promise.resolve();
|
|
104
|
+
}
|
|
105
|
+
visitarExpressaoDefinirValor(expressao) {
|
|
106
|
+
return Promise.resolve();
|
|
107
|
+
}
|
|
108
|
+
visitarExpressaoDeleguaFuncao(expressao) {
|
|
109
|
+
return Promise.resolve();
|
|
110
|
+
}
|
|
111
|
+
visitarExpressaoDeVariavel(expressao) {
|
|
112
|
+
return Promise.resolve();
|
|
113
|
+
}
|
|
114
|
+
visitarExpressaoDicionario(expressao) {
|
|
115
|
+
return Promise.resolve();
|
|
116
|
+
}
|
|
117
|
+
visitarExpressaoEscrevaMesmaLinha(declaracao) {
|
|
118
|
+
return Promise.resolve();
|
|
119
|
+
}
|
|
120
|
+
visitarExpressaoFalhar(expressao) {
|
|
121
|
+
return Promise.resolve();
|
|
122
|
+
}
|
|
123
|
+
visitarExpressaoFimPara(declaracao) {
|
|
124
|
+
return Promise.resolve();
|
|
125
|
+
}
|
|
126
|
+
visitarExpressaoFormatacaoEscrita(declaracao) {
|
|
127
|
+
return Promise.resolve();
|
|
128
|
+
}
|
|
129
|
+
visitarExpressaoIsto(expressao) {
|
|
130
|
+
return Promise.resolve();
|
|
131
|
+
}
|
|
132
|
+
visitarExpressaoLeia(expressao) {
|
|
133
|
+
if (!this.variaveis.hasOwnProperty(expressao.argumentos[0].simbolo.lexema)) {
|
|
134
|
+
this.erros.push({
|
|
135
|
+
simbolo: expressao.argumentos[0].simbolo,
|
|
136
|
+
mensagem: `A variável ${expressao.argumentos[0].simbolo.lexema} não foi declarada.`,
|
|
137
|
+
hashArquivo: expressao.hashArquivo,
|
|
138
|
+
linha: expressao.linha,
|
|
139
|
+
});
|
|
140
|
+
return Promise.resolve();
|
|
141
|
+
}
|
|
142
|
+
const tipoVariavelExpressão = this.variaveis[expressao.argumentos[0].simbolo.lexema].tipo;
|
|
143
|
+
const tipoVariavelArgumento = expressao.argumentos[1].valor;
|
|
144
|
+
if (tipoVariavelExpressão !== tipoVariavelArgumento) {
|
|
145
|
+
this.erros.push({
|
|
146
|
+
simbolo: expressao.argumentos[0].simbolo,
|
|
147
|
+
mensagem: `A variável ${expressao.argumentos[0].simbolo.lexema} não é do tipo ${tipoVariavelArgumento}.`,
|
|
148
|
+
hashArquivo: expressao.hashArquivo,
|
|
149
|
+
linha: expressao.linha,
|
|
150
|
+
});
|
|
151
|
+
return Promise.resolve();
|
|
152
|
+
}
|
|
153
|
+
return Promise.resolve();
|
|
154
|
+
}
|
|
155
|
+
visitarExpressaoLiteral(expressao) {
|
|
156
|
+
return Promise.resolve();
|
|
157
|
+
}
|
|
158
|
+
visitarExpressaoLogica(expressao) {
|
|
159
|
+
return Promise.resolve();
|
|
160
|
+
}
|
|
161
|
+
visitarExpressaoRetornar(declaracao) {
|
|
162
|
+
return Promise.resolve(null);
|
|
163
|
+
}
|
|
164
|
+
visitarExpressaoSuper(expressao) {
|
|
165
|
+
return Promise.resolve();
|
|
166
|
+
}
|
|
167
|
+
visitarExpressaoSustar(declaracao) {
|
|
168
|
+
return Promise.resolve();
|
|
169
|
+
}
|
|
170
|
+
visitarExpressaoUnaria(expressao) {
|
|
171
|
+
return Promise.resolve();
|
|
172
|
+
}
|
|
173
|
+
visitarExpressaoVetor(expressao) {
|
|
174
|
+
return Promise.resolve();
|
|
175
|
+
}
|
|
176
|
+
analisar(declaracoes) {
|
|
177
|
+
this.variaveis = {};
|
|
178
|
+
this.atual = 0;
|
|
179
|
+
this.erros = [];
|
|
180
|
+
while (this.atual < declaracoes.length) {
|
|
181
|
+
declaracoes[this.atual].aceitar(this);
|
|
182
|
+
this.atual++;
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
erros: this.erros,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.AnalisadorSemanticoBirl = AnalisadorSemanticoBirl;
|
|
190
|
+
//# sourceMappingURL=analisador-semantico-birl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analisador-semantico-birl.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/analisador-semantico-birl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./analisador-semantico-birl";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./analisador-semantico-birl"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C"}
|
|
@@ -23,6 +23,7 @@ export declare abstract class AvaliadorSintaticoBase implements AvaliadorSintati
|
|
|
23
23
|
verificarTipoProximoSimbolo(tipo: string): boolean;
|
|
24
24
|
estaNoFinal(): boolean;
|
|
25
25
|
avancarEDevolverAnterior(): SimboloInterface;
|
|
26
|
+
regredirEDevolverAtual(): SimboloInterface;
|
|
26
27
|
verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean;
|
|
27
28
|
declaracaoLeia(): Leia;
|
|
28
29
|
abstract primario(): Construto;
|
|
@@ -49,6 +49,11 @@ class AvaliadorSintaticoBase {
|
|
|
49
49
|
this.atual += 1;
|
|
50
50
|
return this.simbolos[this.atual - 1];
|
|
51
51
|
}
|
|
52
|
+
regredirEDevolverAtual() {
|
|
53
|
+
if (this.atual > 0)
|
|
54
|
+
this.atual -= 1;
|
|
55
|
+
return this.simbolos[this.atual];
|
|
56
|
+
}
|
|
52
57
|
verificarSeSimboloAtualEIgualA(...argumentos) {
|
|
53
58
|
for (let i = 0; i < argumentos.length; i++) {
|
|
54
59
|
const tipoAtual = argumentos[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,11 @@ import { Chamada, FuncaoConstruto } from '../../construtos';
|
|
|
2
2
|
import { Continua, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, FuncaoDeclaracao, Leia, Para, Retorna, Se, Sustar, Var } from '../../declaracoes';
|
|
3
3
|
import { RetornoAvaliadorSintatico, RetornoLexador } from '../../interfaces/retornos';
|
|
4
4
|
import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base';
|
|
5
|
-
import { ParametroInterface, SimboloInterface } from '../../interfaces';
|
|
6
5
|
import { Construto } from '../../construtos/construto';
|
|
6
|
+
import { ParametroInterface, SimboloInterface } from '../../interfaces';
|
|
7
7
|
import { TiposDadosInterface } from '../../interfaces/tipos-dados-interface';
|
|
8
8
|
export declare class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
|
|
9
|
+
private validarEscopoPrograma;
|
|
9
10
|
tratarSimbolos(simbolos: Array<SimboloInterface>): string | void;
|
|
10
11
|
validarSegmentoHoraDoShow(): void;
|
|
11
12
|
validarSegmentoBirlFinal(): void;
|
|
@@ -24,6 +25,7 @@ export declare class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
|
|
|
24
25
|
declaracaoInteiros(): Var[];
|
|
25
26
|
declaracaoPontoFlutuante(): Var[];
|
|
26
27
|
declaracaoRetorna(): Retorna;
|
|
28
|
+
protected validaTipoDeclaracaoLeia(caracteres: string): string;
|
|
27
29
|
declaracaoLeia(): Leia;
|
|
28
30
|
declaracaoSe(): Se;
|
|
29
31
|
resolveSimboloInterfaceParaTiposDadosInterface(simbolo: SimboloInterface): TiposDadosInterface;
|
|
@@ -9,6 +9,21 @@ const declaracoes_1 = require("../../declaracoes");
|
|
|
9
9
|
const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
|
|
10
10
|
const birl_1 = __importDefault(require("../../tipos-de-simbolos/birl"));
|
|
11
11
|
class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
|
|
12
|
+
validarEscopoPrograma() {
|
|
13
|
+
let declaracoes = [];
|
|
14
|
+
this.validarSegmentoHoraDoShow();
|
|
15
|
+
while (!this.estaNoFinal()) {
|
|
16
|
+
const declaracaoVetor = this.declaracao();
|
|
17
|
+
if (Array.isArray(declaracaoVetor)) {
|
|
18
|
+
declaracoes = declaracoes.concat(declaracaoVetor);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
declaracoes.push(declaracaoVetor);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
this.validarSegmentoBirlFinal();
|
|
25
|
+
return declaracoes;
|
|
26
|
+
}
|
|
12
27
|
tratarSimbolos(simbolos) {
|
|
13
28
|
let identificador = 0, adicao = 0, subtracao = 0;
|
|
14
29
|
for (const simbolo of simbolos) {
|
|
@@ -50,6 +65,12 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
50
65
|
this.blocos += 1;
|
|
51
66
|
}
|
|
52
67
|
validarSegmentoBirlFinal() {
|
|
68
|
+
this.regredirEDevolverAtual();
|
|
69
|
+
while (!this.verificarTipoSimboloAtual(birl_1.default.BIRL)) {
|
|
70
|
+
this.consumir(birl_1.default.QUEBRA_LINHA, 'Esperado expressão `QUEBRA_LINHA` após a declaração de variáveis');
|
|
71
|
+
this.regredirEDevolverAtual();
|
|
72
|
+
this.regredirEDevolverAtual();
|
|
73
|
+
}
|
|
53
74
|
this.consumir(birl_1.default.BIRL, 'Esperado expressão `BIRL` para fechamento do programa');
|
|
54
75
|
this.blocos -= 1;
|
|
55
76
|
}
|
|
@@ -129,7 +150,13 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
129
150
|
declaracaoInicial = new declaracoes_1.Var(this.simbolos[this.atual], new construtos_1.Literal(this.simbolos[this.atual].linha, this.hashArquivo, valor.literal), 'numero');
|
|
130
151
|
}
|
|
131
152
|
else {
|
|
132
|
-
|
|
153
|
+
const declaracaoVetor = this.declaracao(); // inicialização da variável de controle
|
|
154
|
+
if (Array.isArray(declaracaoVetor)) {
|
|
155
|
+
declaracaoInicial = declaracaoVetor[0];
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
declaracaoInicial = declaracaoVetor;
|
|
159
|
+
}
|
|
133
160
|
}
|
|
134
161
|
this.consumir(birl_1.default.PONTO_E_VIRGULA, 'Esperado expressão `;` após a inicialização do `PARA`.');
|
|
135
162
|
const condicao = this.declaracao(); // condição de parada
|
|
@@ -168,14 +195,17 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
168
195
|
}
|
|
169
196
|
const simboloCaractere = this.consumir(birl_1.default.FRANGO, '');
|
|
170
197
|
const inicializacoes = [];
|
|
198
|
+
let eLiteral = true;
|
|
171
199
|
do {
|
|
172
200
|
const identificador = this.consumir(birl_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'FRANGO'.");
|
|
173
201
|
let valorInicializacao;
|
|
174
202
|
if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
|
|
175
203
|
if (this.verificarTipoSimboloAtual(birl_1.default.AJUDA)) {
|
|
204
|
+
eLiteral = false;
|
|
176
205
|
valorInicializacao = this.declaracao();
|
|
177
206
|
}
|
|
178
207
|
else if (this.verificarTipoSimboloAtual(birl_1.default.IDENTIFICADOR)) {
|
|
208
|
+
eLiteral = false;
|
|
179
209
|
valorInicializacao = this.declaracao();
|
|
180
210
|
}
|
|
181
211
|
else if (this.verificarTipoSimboloAtual(birl_1.default.TEXTO)) {
|
|
@@ -185,10 +215,12 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
185
215
|
else {
|
|
186
216
|
throw new Error('Erro ao declarar variável do tipo texto. Verifique se esta atribuindo um valor do tipo texto.');
|
|
187
217
|
}
|
|
188
|
-
inicializacoes.push(new declaracoes_1.Var(identificador,
|
|
218
|
+
inicializacoes.push(new declaracoes_1.Var(identificador, eLiteral
|
|
219
|
+
? new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.linha), valorInicializacao)
|
|
220
|
+
: valorInicializacao, 'texto'));
|
|
189
221
|
}
|
|
190
222
|
else {
|
|
191
|
-
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.hashArquivo),
|
|
223
|
+
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.hashArquivo), ''), 'texto'));
|
|
192
224
|
}
|
|
193
225
|
} while (this.verificarSeSimboloAtualEIgualA(birl_1.default.VIRGULA));
|
|
194
226
|
return inicializacoes;
|
|
@@ -209,15 +241,18 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
209
241
|
}
|
|
210
242
|
declaracaoInteiros() {
|
|
211
243
|
let simboloInteiro = this.validarTipoDeclaracaoInteiro();
|
|
244
|
+
let eLiteral = true;
|
|
212
245
|
const inicializacoes = [];
|
|
213
246
|
do {
|
|
214
247
|
const identificador = this.consumir(birl_1.default.IDENTIFICADOR, `Esperado identificador após palavra reservada '${simboloInteiro.lexema}'.`);
|
|
215
248
|
let valorInicializacao = 0x00;
|
|
216
249
|
if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
|
|
217
250
|
if (this.verificarTipoSimboloAtual(birl_1.default.AJUDA)) {
|
|
251
|
+
eLiteral = false;
|
|
218
252
|
valorInicializacao = this.declaracao();
|
|
219
253
|
}
|
|
220
254
|
else if (this.verificarTipoSimboloAtual(birl_1.default.IDENTIFICADOR)) {
|
|
255
|
+
eLiteral = false;
|
|
221
256
|
valorInicializacao = this.declaracao();
|
|
222
257
|
}
|
|
223
258
|
else if (this.verificarTipoSimboloAtual(birl_1.default.NUMERO)) {
|
|
@@ -227,7 +262,9 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
227
262
|
else {
|
|
228
263
|
throw new Error(`Simbolo passado para inicialização de variável do tipo ${simboloInteiro.lexema} não é válido.`);
|
|
229
264
|
}
|
|
230
|
-
inicializacoes.push(new declaracoes_1.Var(identificador,
|
|
265
|
+
inicializacoes.push(new declaracoes_1.Var(identificador, eLiteral
|
|
266
|
+
? new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), valorInicializacao)
|
|
267
|
+
: valorInicializacao, 'numero'));
|
|
231
268
|
}
|
|
232
269
|
else {
|
|
233
270
|
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), 0), 'numero'));
|
|
@@ -240,15 +277,18 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
240
277
|
if (this.verificarTipoSimboloAtual(birl_1.default.DESCENDENTE)) {
|
|
241
278
|
this.consumir(birl_1.default.DESCENDENTE, '');
|
|
242
279
|
}
|
|
280
|
+
let eLiteral = true;
|
|
243
281
|
const inicializacoes = [];
|
|
244
282
|
do {
|
|
245
283
|
const identificador = this.consumir(birl_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'TRAPEZIO'.");
|
|
246
284
|
let valorInicializacao = 0x00;
|
|
247
285
|
if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
|
|
248
286
|
if (this.verificarTipoSimboloAtual(birl_1.default.AJUDA)) {
|
|
287
|
+
eLiteral = false;
|
|
249
288
|
valorInicializacao = this.declaracao();
|
|
250
289
|
}
|
|
251
290
|
else if (this.verificarTipoSimboloAtual(birl_1.default.IDENTIFICADOR)) {
|
|
291
|
+
eLiteral = false;
|
|
252
292
|
valorInicializacao = this.declaracao();
|
|
253
293
|
}
|
|
254
294
|
else if (this.verificarTipoSimboloAtual(birl_1.default.NUMERO)) {
|
|
@@ -258,7 +298,9 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
258
298
|
else {
|
|
259
299
|
throw new Error(`Simbolo passado para inicialização de variável do tipo 'TRAPEZIO' não é válido.`);
|
|
260
300
|
}
|
|
261
|
-
inicializacoes.push(new declaracoes_1.Var(identificador,
|
|
301
|
+
inicializacoes.push(new declaracoes_1.Var(identificador, eLiteral
|
|
302
|
+
? new construtos_1.Literal(this.hashArquivo, Number(simboloFloat.linha), valorInicializacao)
|
|
303
|
+
: valorInicializacao, 'numero'));
|
|
262
304
|
}
|
|
263
305
|
else {
|
|
264
306
|
inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloFloat.linha), 0), 'numero'));
|
|
@@ -275,6 +317,27 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
275
317
|
const valor = this.declaracao();
|
|
276
318
|
return new declaracoes_1.Retorna(primeiroSimbolo, valor);
|
|
277
319
|
}
|
|
320
|
+
validaTipoDeclaracaoLeia(caracteres) {
|
|
321
|
+
const tipoCaractere = caracteres.charAt(1);
|
|
322
|
+
const tipos = {
|
|
323
|
+
d: 'número',
|
|
324
|
+
i: 'número',
|
|
325
|
+
u: 'número',
|
|
326
|
+
f: 'número',
|
|
327
|
+
F: 'número',
|
|
328
|
+
e: 'número',
|
|
329
|
+
E: 'número',
|
|
330
|
+
g: 'número',
|
|
331
|
+
G: 'número',
|
|
332
|
+
x: 'número',
|
|
333
|
+
X: 'número',
|
|
334
|
+
o: 'número',
|
|
335
|
+
c: 'texto',
|
|
336
|
+
s: 'texto',
|
|
337
|
+
p: 'texto',
|
|
338
|
+
};
|
|
339
|
+
return tipos[tipoCaractere] || 'desconhecido';
|
|
340
|
+
}
|
|
278
341
|
declaracaoLeia() {
|
|
279
342
|
const primeiroSimbolo = this.consumir(birl_1.default.QUE, 'Esperado expressão `QUE` para ler valor.');
|
|
280
343
|
this.consumir(birl_1.default.QUE, 'Esperado expressão `QUE` após `QUE` para ler valor.');
|
|
@@ -283,11 +346,16 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
283
346
|
this.consumir(birl_1.default.MONSTRAO, 'Esperado expressão `MONSTRAO` após `QUER` para ler valor.');
|
|
284
347
|
this.consumir(birl_1.default.INTERROGACAO, 'Esperado interrogação após `MONSTRAO` para ler valor.');
|
|
285
348
|
this.consumir(birl_1.default.PARENTESE_ESQUERDO, 'Esperado parêntese esquerdo após interrogação para ler valor.');
|
|
286
|
-
const
|
|
287
|
-
|
|
349
|
+
const textoOuSimbolo = this.consumir(birl_1.default.TEXTO, 'Esperado texto após parêntese esquerdo para ler valor.');
|
|
350
|
+
this.consumir(birl_1.default.VIRGULA, 'Esperado vírgula após texto para ler valor.');
|
|
351
|
+
this.consumir(birl_1.default.PONTEIRO, 'Esperado expressão `&` após texto para ler valor.');
|
|
352
|
+
const variavel = this.consumir(birl_1.default.IDENTIFICADOR, 'Esperado identificador após `&` para ler valor.');
|
|
353
|
+
const tipo = this.validaTipoDeclaracaoLeia(textoOuSimbolo.literal);
|
|
288
354
|
this.consumir(birl_1.default.PARENTESE_DIREITO, 'Esperado parêntese direito após identificador para ler valor.');
|
|
289
|
-
|
|
290
|
-
|
|
355
|
+
return new declaracoes_1.Leia(Number(primeiroSimbolo.linha), this.hashArquivo, [
|
|
356
|
+
new construtos_1.Variavel(this.hashArquivo, variavel),
|
|
357
|
+
new construtos_1.Literal(this.hashArquivo, Number(textoOuSimbolo.linha), tipo),
|
|
358
|
+
]);
|
|
291
359
|
}
|
|
292
360
|
declaracaoSe() {
|
|
293
361
|
const simboloSe = this.consumir(birl_1.default.ELE, 'Esperado expressão `ELE` para condição.');
|
|
@@ -362,13 +430,19 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
362
430
|
const parenteseEsquerdo = this.consumir(birl_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${tipo}`);
|
|
363
431
|
let paramentros = [];
|
|
364
432
|
if (!this.verificarTipoSimboloAtual(birl_1.default.PARENTESE_DIREITO)) {
|
|
365
|
-
paramentros
|
|
433
|
+
paramentros = this.logicaComumParamentros();
|
|
366
434
|
}
|
|
367
435
|
this.consumir(birl_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
368
436
|
this.consumir(birl_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
369
437
|
let corpo = [];
|
|
370
438
|
do {
|
|
371
|
-
|
|
439
|
+
const declaracaoVetor = this.declaracao();
|
|
440
|
+
if (Array.isArray(declaracaoVetor)) {
|
|
441
|
+
corpo = corpo.concat(declaracaoVetor);
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
corpo.push(declaracaoVetor);
|
|
445
|
+
}
|
|
372
446
|
} while (![birl_1.default.BIRL].includes(this.simbolos[this.atual].tipo));
|
|
373
447
|
return new construtos_1.FuncaoConstruto(this.hashArquivo, Number(parenteseEsquerdo.linha), paramentros, corpo.filter((c) => c));
|
|
374
448
|
}
|
|
@@ -488,6 +562,7 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
488
562
|
return this.declaracaoEscreva();
|
|
489
563
|
case birl_1.default.PONTO_E_VIRGULA:
|
|
490
564
|
case birl_1.default.QUEBRA_LINHA:
|
|
565
|
+
case birl_1.default.BIRL:
|
|
491
566
|
this.avancarEDevolverAnterior();
|
|
492
567
|
return null;
|
|
493
568
|
case birl_1.default.IDENTIFICADOR:
|
|
@@ -510,12 +585,7 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
|
|
|
510
585
|
this.blocos = 0;
|
|
511
586
|
this.atual = 0;
|
|
512
587
|
this.simbolos = retornoLexador.simbolos;
|
|
513
|
-
const declaracoes =
|
|
514
|
-
this.validarSegmentoHoraDoShow();
|
|
515
|
-
while (!this.estaNoFinal() && this.simbolos[this.atual].tipo !== birl_1.default.BIRL) {
|
|
516
|
-
declaracoes.push(this.declaracao());
|
|
517
|
-
}
|
|
518
|
-
this.validarSegmentoBirlFinal();
|
|
588
|
+
const declaracoes = this.validarEscopoPrograma();
|
|
519
589
|
return {
|
|
520
590
|
declaracoes: declaracoes.filter((d) => d),
|
|
521
591
|
erros: this.erros,
|