@designliquido/potigol 0.4.5 → 0.4.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/avaliador-sintatico/avaliador-sintatico-potigol.d.ts +51 -22
- package/avaliador-sintatico/avaliador-sintatico-potigol.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-potigol.js +303 -163
- package/avaliador-sintatico/avaliador-sintatico-potigol.js.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico-potigol.d.ts.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico-potigol.js +2 -1
- package/avaliador-sintatico/micro-avaliador-sintatico-potigol.js.map +1 -1
- package/construtos/leia-inteiros.d.ts.map +1 -1
- package/construtos/leia-inteiros.js +2 -1
- package/construtos/leia-inteiros.js.map +1 -1
- package/construtos/leia-reais.d.ts.map +1 -1
- package/construtos/leia-reais.js +2 -1
- package/construtos/leia-reais.js.map +1 -1
- package/formatador/formatador-potigol.d.ts +1 -2
- package/formatador/formatador-potigol.d.ts.map +1 -1
- package/formatador/formatador-potigol.js +0 -3
- package/formatador/formatador-potigol.js.map +1 -1
- package/interpretador/comum.js +4 -4
- package/interpretador/comum.js.map +1 -1
- package/interpretador/inferenciador.d.ts +1 -1
- package/lexador/palavras-reservadas.d.ts +2 -0
- package/lexador/palavras-reservadas.d.ts.map +1 -1
- package/lexador/palavras-reservadas.js +2 -0
- package/lexador/palavras-reservadas.js.map +1 -1
- package/package.json +2 -2
- package/tipos-de-dados.d.ts +9 -0
- package/tipos-de-dados.d.ts.map +1 -0
- package/tipos-de-dados.js +10 -0
- package/tipos-de-dados.js.map +1 -0
- package/tipos-de-simbolos/lexico-regular.d.ts +3 -1
- package/tipos-de-simbolos/lexico-regular.d.ts.map +1 -1
- package/tipos-de-simbolos/lexico-regular.js +3 -1
- package/tipos-de-simbolos/lexico-regular.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Chamada, Constante, Construto, FuncaoConstruto, Leia, Variavel } from '@designliquido/delegua/construtos';
|
|
1
|
+
import { Chamada, Constante, Construto, FuncaoConstruto, Leia, Tupla, Variavel } from '@designliquido/delegua/construtos';
|
|
2
2
|
import { Escreva, Declaracao, Se, Enquanto, Para, Escolha, Fazer, EscrevaMesmaLinha, Const, Var, FuncaoDeclaracao, Classe, ConstMultiplo } from '@designliquido/delegua/declaracoes';
|
|
3
3
|
import { RetornoLexador, RetornoAvaliadorSintatico } from '@designliquido/delegua/interfaces/retornos';
|
|
4
4
|
import { AvaliadorSintaticoBase } from '@designliquido/delegua/avaliador-sintatico/avaliador-sintatico-base';
|
|
@@ -7,11 +7,11 @@ import { ConstanteOuVariavel, LeiaInteiros, LeiaReais, LeiaTextos } from '../con
|
|
|
7
7
|
import { MicroAvaliadorSintaticoPotigol } from './micro-avaliador-sintatico-potigol';
|
|
8
8
|
import { PilhaEscoposVariaveisConhecidas } from './pilha-escopos-variaveis-conhecidas';
|
|
9
9
|
/**
|
|
10
|
+
*
|
|
10
11
|
* TODO: Pensar numa forma de avaliar múltiplas constantes sem
|
|
11
12
|
* transformar o retorno de `primario()` em um vetor.
|
|
12
13
|
*/
|
|
13
14
|
export declare class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
|
|
14
|
-
protected expressaoLeia(): Leia;
|
|
15
15
|
microAvaliadorSintatico: MicroAvaliadorSintaticoPotigol;
|
|
16
16
|
tiposPotigolParaDelegua: {
|
|
17
17
|
Caractere: string;
|
|
@@ -40,26 +40,35 @@ export declare class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
|
|
|
40
40
|
*/
|
|
41
41
|
protected testePrimeiroParametro(simbolos: SimboloInterface[]): boolean;
|
|
42
42
|
/**
|
|
43
|
-
* Retorna uma declaração de função iniciada por igual,
|
|
43
|
+
* Retorna uma declaração de função iniciada por igual ou seta,
|
|
44
44
|
* ou seja, com apenas uma instrução.
|
|
45
45
|
* @param simboloPrimario O símbolo que identifica a função (nome),
|
|
46
|
-
* também usado para fins de
|
|
46
|
+
* também usado para fins de localização.
|
|
47
47
|
* @param parametros A lista de parâmetros da função.
|
|
48
48
|
* @param tipoRetorno O tipo de retorno da função.
|
|
49
49
|
* @returns Um construto do tipo `FuncaoDeclaracao`.
|
|
50
50
|
*/
|
|
51
|
-
protected
|
|
51
|
+
protected declaracaoFuncaoPotigolIniciadaPorIgualOuSeta(simboloPrimario: SimboloInterface, parametros: ParametroInterface[], tipoRetorno?: SimboloInterface): FuncaoDeclaracao;
|
|
52
52
|
/**
|
|
53
|
-
* Retorna uma declaração de função terminada por fim
|
|
53
|
+
* Retorna uma declaração de função terminada por `fim`,
|
|
54
54
|
* ou seja, com mais de uma instrução.
|
|
55
55
|
* @param simboloPrimario O símbolo que identifica a função (nome).
|
|
56
|
-
* @param parenteseEsquerdo O parêntese esquerdo, usado para fins de
|
|
56
|
+
* @param parenteseEsquerdo O parêntese esquerdo, usado para fins de localização.
|
|
57
57
|
* @param parametros A lista de parâmetros da função.
|
|
58
58
|
* @param tipoRetorno O tipo de retorno da função.
|
|
59
59
|
* @returns Um construto do tipo `FuncaoDeclaracao`.
|
|
60
60
|
*/
|
|
61
61
|
protected declaracaoFuncaoPotigolTerminadaPorFim(simboloPrimario: SimboloInterface, parenteseEsquerdo: SimboloInterface, parametros: ParametroInterface[], tipoRetorno?: SimboloInterface): FuncaoDeclaracao;
|
|
62
|
-
corpoDaFuncao(nomeFuncao: string,
|
|
62
|
+
corpoDaFuncao(nomeFuncao: string, simboloLocalizacao?: SimboloInterface, parametros?: any[]): FuncaoConstruto;
|
|
63
|
+
/**
|
|
64
|
+
* Ponto comum entre declarações de funções com nome. Em Potigol, usar `def` para definir
|
|
65
|
+
* uma função é opcional. Essa lógica serve tanto para quando a palavra `def` é usada,
|
|
66
|
+
* como para casos em que a função começa pelo seu nome, seguida de parênteses.
|
|
67
|
+
* @param {SimboloInterface} simboloNomeFuncao Normalmente um `Simbolo` do tipo `IDENTIFICADOR`.
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
protected logicaComumDefinicaoFuncaoComNome(simboloNomeFuncao: SimboloInterface<string>): FuncaoDeclaracao;
|
|
71
|
+
protected declaracaoDeFuncaoComDef(): FuncaoDeclaracao;
|
|
63
72
|
protected declaracaoDeFuncaoOuMetodo(construtoPrimario: ConstanteOuVariavel): FuncaoDeclaracao;
|
|
64
73
|
finalizarChamada(entidadeChamada: Construto): Chamada;
|
|
65
74
|
/**
|
|
@@ -74,6 +83,13 @@ export declare class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
|
|
|
74
83
|
tipagemDefinida: boolean;
|
|
75
84
|
};
|
|
76
85
|
protected logicaLeiaMultiplo(): LeiaInteiros | LeiaReais | LeiaTextos;
|
|
86
|
+
/**
|
|
87
|
+
* Lógica para leitura de argumentos tipados de função. Ocorre em casos de leitura
|
|
88
|
+
* de funções anônimas.
|
|
89
|
+
* @param primeiroArgumento O primeiro argumento, já resolvido como construto.
|
|
90
|
+
*/
|
|
91
|
+
protected logicaArgumentosTipados(primeiroArgumento: Construto): void;
|
|
92
|
+
protected logicaFuncaoAnonimaOuTupla(primeiroConstruto: Construto): FuncaoDeclaracao | Tupla;
|
|
77
93
|
primario(): Construto;
|
|
78
94
|
protected formato(): Construto;
|
|
79
95
|
/**
|
|
@@ -92,6 +108,26 @@ export declare class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
|
|
|
92
108
|
*/
|
|
93
109
|
chamar(): Construto;
|
|
94
110
|
comparacaoIgualdade(): Construto;
|
|
111
|
+
protected verificarDefinicaoTipoAtual(): string;
|
|
112
|
+
protected logicaComumInicializadorLeia(inicializador: Construto, identificadores: SimboloInterface<string>[]): LeiaInteiros | LeiaReais | LeiaTextos;
|
|
113
|
+
protected logicaComumInferenciaTiposLeia(inicializador: Construto): "inteiro" | "inteiro[]" | "qualquer" | "real" | "real[]" | "texto" | "texto[]";
|
|
114
|
+
/**
|
|
115
|
+
* Em Potigol, a palavra reservada `val` indica uma constante.
|
|
116
|
+
*/
|
|
117
|
+
protected declaracaoDeConstanteExplicita(): Const;
|
|
118
|
+
protected declaracaoDeConstantes(primeiroIdentificador: Constante): ConstMultiplo | Const[];
|
|
119
|
+
/**
|
|
120
|
+
* Este método contempla dois cenários:
|
|
121
|
+
*
|
|
122
|
+
* - A atribuição de variáveis em si (o primeiro símbolo é a palavra reservada `var`);
|
|
123
|
+
* - Uma reatribuição de uma ou mais variáveis (o primeiro símbolo a ser lido é uma
|
|
124
|
+
* vírgula, e o primeiro identificador é passado como argumento). Neste caso, não há
|
|
125
|
+
* a palavra reservada `var`.
|
|
126
|
+
* @param primeiroIdentificador Um construto de variável. É defiido em reatribuições.
|
|
127
|
+
* @returns Um vetor de declarações `Var`.
|
|
128
|
+
*/
|
|
129
|
+
declaracaoDeVariaveisPotigol(primeiroIdentificador?: Variavel): Var[];
|
|
130
|
+
protected logicaAtribuicaoComDicaDeTipo(expressao: Constante): SimboloInterface<string>;
|
|
95
131
|
/**
|
|
96
132
|
* Em Potigol, `escreva` aceita apenas um argumento.
|
|
97
133
|
* @returns Uma declaração `Escreva`.
|
|
@@ -119,19 +155,6 @@ export declare class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
|
|
|
119
155
|
declaracaoEnquanto(): Enquanto;
|
|
120
156
|
declaracaoPara(): Para;
|
|
121
157
|
declaracaoEscolha(): Escolha;
|
|
122
|
-
protected declaracaoDeConstantes(primeiroIdentificador: Constante): ConstMultiplo | Const[];
|
|
123
|
-
/**
|
|
124
|
-
* Este método contempla dois cenários:
|
|
125
|
-
*
|
|
126
|
-
* - A atribuição de variáveis em si (o primeiro símbolo é a palavra reservada `var`);
|
|
127
|
-
* - Uma reatribuição de uma ou mais variáveis (o primeiro símbolo a ser lido é uma
|
|
128
|
-
* vírgula, e o primeiro identificador é passado como argumento). Neste caso, não há
|
|
129
|
-
* a palavra reservada `var`.
|
|
130
|
-
* @param primeiroIdentificador Um construto de variável. É defiido em reatribuições.
|
|
131
|
-
* @returns Um vetor de declarações `Var`.
|
|
132
|
-
*/
|
|
133
|
-
declaracaoDeVariaveisPotigol(primeiroIdentificador?: Variavel): Var[];
|
|
134
|
-
protected logicaAtribuicaoComDicaDeTipo(expressao: Constante): SimboloInterface<string>;
|
|
135
158
|
declaracaoFazer(): Fazer;
|
|
136
159
|
/**
|
|
137
160
|
* Uma declaração de tipo nada mais é do que um declaração de classe.
|
|
@@ -142,7 +165,13 @@ export declare class AvaliadorSintaticoPotigol extends AvaliadorSintaticoBase {
|
|
|
142
165
|
protected declaracaoTipo(): Classe;
|
|
143
166
|
atribuir(): any | any[];
|
|
144
167
|
/**
|
|
145
|
-
*
|
|
168
|
+
* Potigol não possui simplesmente um `leia`. Seus comandos `leia` são todos tipados.
|
|
169
|
+
* São eles: `leia_inteiro`, `leia_inteiros`, `leia_real`, `leia_reais`, `leia_texto` e
|
|
170
|
+
* `leia_textos`.
|
|
171
|
+
*/
|
|
172
|
+
protected expressaoLeia(): Leia;
|
|
173
|
+
/**
|
|
174
|
+
* Em Potigol, uma definição de função pode simplesmente começar com um
|
|
146
175
|
* identificador - que não é uma palavra reservada - seguido de parênteses.
|
|
147
176
|
* Este ponto de entrada verifica o símbolo atual e o próximo.
|
|
148
177
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-potigol.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-potigol.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,OAAO,EACP,SAAS,EACT,SAAS,EAGT,eAAe,EAEf,IAAI,
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-potigol.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-potigol.ts"],"names":[],"mappings":"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"}
|