@designliquido/delegua 1.23.1 → 1.23.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/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +54 -48
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +37 -20
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/bin/package.json +1 -1
- package/interpretador/interpretador.d.ts +4 -0
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +30 -20
- package/interpretador/interpretador.js.map +1 -1
- package/package.json +1 -1
- package/umd/delegua.js +120 -87
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAElF,OAAO,EAGH,yBAAyB,EAGzB,kBAAkB,EAKlB,OAAO,EAGP,SAAS,EAET,UAAU,EAEV,qBAAqB,EAGrB,eAAe,EACf,qBAAqB,EAErB,IAAI,EACJ,gBAAgB,EAGhB,qBAAqB,EACrB,iBAAiB,EAMjB,KAAK,EAGL,QAAQ,EAEX,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,2BAA2B,EAI3B,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACH,sBAAsB,EACzB,MAAM,4BAA4B,CAAC;AAcpC,OAAO,EACH,KAAK,EAEL,KAAK,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,mBAAmB,EACnB,IAAI,EACJ,QAAQ,EAER,OAAO,EACP,EAAE,EACF,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kCAAkC,EAAE,MAAM,8DAA8D,CAAC;AAClH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,28 @@ const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitiv
|
|
|
24
24
|
const primitivas_numero_1 = __importDefault(require("../bibliotecas/primitivas-numero"));
|
|
25
25
|
const primitivas_texto_1 = __importDefault(require("../bibliotecas/primitivas-texto"));
|
|
26
26
|
const primitivas_vetor_1 = __importDefault(require("../bibliotecas/primitivas-vetor"));
|
|
27
|
+
// Constante usada em "declaracaoRetorna()"
|
|
28
|
+
const simbolosInicioExpressao = new Set([
|
|
29
|
+
delegua_2.default.CHAVE_ESQUERDA,
|
|
30
|
+
delegua_2.default.COLCHETE_ESQUERDO,
|
|
31
|
+
delegua_2.default.FALSO,
|
|
32
|
+
delegua_2.default.FUNCAO,
|
|
33
|
+
delegua_2.default.FUNÇÃO,
|
|
34
|
+
delegua_2.default.IDENTIFICADOR,
|
|
35
|
+
delegua_2.default.ISTO,
|
|
36
|
+
delegua_2.default.NAO,
|
|
37
|
+
delegua_2.default.NEGACAO,
|
|
38
|
+
delegua_2.default.NUMERO,
|
|
39
|
+
delegua_2.default.NULO,
|
|
40
|
+
delegua_2.default.PARENTESE_ESQUERDO,
|
|
41
|
+
delegua_2.default.SUPER,
|
|
42
|
+
delegua_2.default.TEXTO,
|
|
43
|
+
delegua_2.default.VERDADEIRO,
|
|
44
|
+
delegua_2.default.ADICAO,
|
|
45
|
+
delegua_2.default.SUBTRACAO,
|
|
46
|
+
delegua_2.default.INCREMENTAR,
|
|
47
|
+
delegua_2.default.DECREMENTAR
|
|
48
|
+
]);
|
|
27
49
|
/**
|
|
28
50
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
29
51
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -689,7 +711,11 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
689
711
|
return await this.resolverCadeiaChamadas(chamada);
|
|
690
712
|
case delegua_2.default.PONTO:
|
|
691
713
|
this.avancarEDevolverAnterior();
|
|
692
|
-
this.
|
|
714
|
+
const simboloAtual = this.simbolos[this.atual];
|
|
715
|
+
if (!simboloAtual ||
|
|
716
|
+
!/^[A-Za-z_$À-ÿ][A-Za-z0-9_$À-ÿ]*$/.test(simboloAtual.lexema)) {
|
|
717
|
+
throw this.erro(simboloAtual, "Esperado nome do método ou propriedade após o '.'");
|
|
718
|
+
}
|
|
693
719
|
const nome = this.avancarEDevolverAnterior();
|
|
694
720
|
let tipoInferido = expressaoAnterior.tipo;
|
|
695
721
|
// Se não for um dicionário anônimo (ou seja, ser variável ou constante com nome)
|
|
@@ -1629,24 +1655,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1629
1655
|
}
|
|
1630
1656
|
async declaracaoRetorna() {
|
|
1631
1657
|
const simboloChave = this.simbolos[this.atual - 1];
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
delegua_2.default.COLCHETE_ESQUERDO,
|
|
1636
|
-
delegua_2.default.FALSO,
|
|
1637
|
-
delegua_2.default.FUNCAO,
|
|
1638
|
-
delegua_2.default.FUNÇÃO,
|
|
1639
|
-
delegua_2.default.IDENTIFICADOR,
|
|
1640
|
-
delegua_2.default.ISTO,
|
|
1641
|
-
delegua_2.default.NAO,
|
|
1642
|
-
delegua_2.default.NEGACAO,
|
|
1643
|
-
delegua_2.default.NUMERO,
|
|
1644
|
-
delegua_2.default.NULO,
|
|
1645
|
-
delegua_2.default.PARENTESE_ESQUERDO,
|
|
1646
|
-
delegua_2.default.SUPER,
|
|
1647
|
-
delegua_2.default.TEXTO,
|
|
1648
|
-
delegua_2.default.VERDADEIRO,
|
|
1649
|
-
].includes(this.simbolos[this.atual].tipo)) {
|
|
1658
|
+
const simboloAtual = this.simbolos[this.atual];
|
|
1659
|
+
let valor;
|
|
1660
|
+
if (simboloAtual && simbolosInicioExpressao.has(simboloAtual.tipo)) {
|
|
1650
1661
|
valor = await this.expressao();
|
|
1651
1662
|
}
|
|
1652
1663
|
// Ponto-e-vírgula é opcional aqui.
|
|
@@ -1938,51 +1949,46 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1938
1949
|
*/
|
|
1939
1950
|
async declaracaoDeVariaveis() {
|
|
1940
1951
|
const simboloVariavel = this.simboloAnterior();
|
|
1941
|
-
const identificadores = [];
|
|
1942
|
-
const retorno = [];
|
|
1943
|
-
let tipo = 'qualquer';
|
|
1944
1952
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.CHAVE_ESQUERDA)) {
|
|
1945
1953
|
return await this.declaracaoDesestruturacaoVariavel();
|
|
1946
1954
|
}
|
|
1955
|
+
const identificadores = [];
|
|
1947
1956
|
do {
|
|
1948
1957
|
identificadores.push(this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome da variável.'));
|
|
1949
1958
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
1959
|
+
let tipo = 'qualquer';
|
|
1950
1960
|
let tipoExplicito = false;
|
|
1951
1961
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.DOIS_PONTOS)) {
|
|
1952
1962
|
tipo = this.verificarDefinicaoTipoAtual();
|
|
1953
1963
|
tipoExplicito = true;
|
|
1954
1964
|
this.avancarEDevolverAnterior();
|
|
1955
1965
|
}
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1966
|
+
const retorno = [];
|
|
1967
|
+
const decoradores = Array.from(this.pilhaDecoradores);
|
|
1968
|
+
const temAtribuicao = this.verificarSeSimboloAtualEIgualA(delegua_2.default.IGUAL, delegua_2.default.SETA_ESQUERDA);
|
|
1969
|
+
if (!temAtribuicao) {
|
|
1970
|
+
for (const identificador of identificadores) {
|
|
1959
1971
|
this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipo));
|
|
1960
|
-
retorno.push(new declaracoes_1.Var(identificador, undefined, tipo, tipoExplicito,
|
|
1972
|
+
retorno.push(new declaracoes_1.Var(identificador, undefined, tipo, tipoExplicito, decoradores));
|
|
1961
1973
|
}
|
|
1962
|
-
this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
|
|
1963
|
-
this.pilhaDecoradores = [];
|
|
1964
|
-
return retorno;
|
|
1965
1974
|
}
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
this.logicaComumInferenciaTiposVariaveisEConstantes(
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, this.resolverInformacaoElementoSintaticoDeDicionario(inicializadorDicionario));
|
|
1975
|
+
else {
|
|
1976
|
+
const inicializadores = [];
|
|
1977
|
+
do {
|
|
1978
|
+
inicializadores.push(await this.expressao());
|
|
1979
|
+
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
1980
|
+
if (identificadores.length !== inicializadores.length) {
|
|
1981
|
+
throw this.erro(simboloVariavel, 'Quantidade de identificadores à esquerda do igual é diferente da quantidade de valores à direita.');
|
|
1982
|
+
}
|
|
1983
|
+
for (let [indice, identificador] of identificadores.entries()) {
|
|
1984
|
+
const inicializador = inicializadores[indice];
|
|
1985
|
+
const tipoInferido = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializador, tipo) ?? tipo;
|
|
1986
|
+
const informacaoSintatica = tipo === 'dicionário'
|
|
1987
|
+
? this.resolverInformacaoElementoSintaticoDeDicionario(inicializador)
|
|
1988
|
+
: new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipoInferido);
|
|
1989
|
+
this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, informacaoSintatica);
|
|
1990
|
+
retorno.push(new declaracoes_1.Var(identificador, inicializador, tipoInferido, tipoExplicito, decoradores, tipo));
|
|
1983
1991
|
}
|
|
1984
|
-
retorno.push(new declaracoes_1.Var(identificador, inicializadores[indice], tipo, tipoExplicito, Array.from(this.pilhaDecoradores), tipoOriginal // Passa o tipo original para o construtor
|
|
1985
|
-
));
|
|
1986
1992
|
}
|
|
1987
1993
|
this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
|
|
1988
1994
|
this.pilhaDecoradores = [];
|