@designliquido/delegua 0.63.0 → 0.64.1
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-base.d.ts +18 -1
- package/analisador-semantico/analisador-semantico-base.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico-base.js +129 -0
- package/analisador-semantico/analisador-semantico-base.js.map +1 -1
- package/analisador-semantico/analisador-semantico.d.ts +38 -19
- package/analisador-semantico/analisador-semantico.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico.js +353 -112
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/analisador-semantico/escopo-variavel.d.ts +11 -0
- package/analisador-semantico/escopo-variavel.d.ts.map +1 -0
- package/analisador-semantico/escopo-variavel.js +3 -0
- package/analisador-semantico/escopo-variavel.js.map +1 -0
- package/analisador-semantico/funcao-hipotetica-interface.d.ts +5 -0
- package/analisador-semantico/funcao-hipotetica-interface.d.ts.map +1 -0
- package/analisador-semantico/funcao-hipotetica-interface.js +3 -0
- package/analisador-semantico/funcao-hipotetica-interface.js.map +1 -0
- package/analisador-semantico/gerenciador-escopos.d.ts +15 -0
- package/analisador-semantico/gerenciador-escopos.d.ts.map +1 -0
- package/analisador-semantico/gerenciador-escopos.js +77 -0
- package/analisador-semantico/gerenciador-escopos.js.map +1 -0
- package/analisador-semantico/index.d.ts +4 -0
- package/analisador-semantico/index.d.ts.map +1 -1
- package/analisador-semantico/index.js +4 -0
- package/analisador-semantico/index.js.map +1 -1
- package/analisador-semantico/variavel-hipotetica-interface.d.ts +7 -0
- package/analisador-semantico/variavel-hipotetica-interface.d.ts.map +1 -0
- package/analisador-semantico/variavel-hipotetica-interface.js +3 -0
- package/analisador-semantico/variavel-hipotetica-interface.js.map +1 -0
- package/avaliador-sintatico/avaliador-sintatico.d.ts +2 -0
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +49 -2
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +4 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +91 -11
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/acesso-indice-variavel.d.ts +2 -1
- package/construtos/acesso-indice-variavel.d.ts.map +1 -1
- package/construtos/acesso-indice-variavel.js +3 -1
- package/construtos/acesso-indice-variavel.js.map +1 -1
- package/construtos/binario.d.ts +4 -0
- package/construtos/binario.d.ts.map +1 -1
- package/construtos/binario.js +7 -6
- package/construtos/binario.js.map +1 -1
- package/construtos/leia.d.ts +1 -1
- package/construtos/leia.d.ts.map +1 -1
- package/construtos/leia.js +1 -0
- package/construtos/leia.js.map +1 -1
- package/construtos/unario.d.ts +1 -0
- package/construtos/unario.d.ts.map +1 -1
- package/construtos/unario.js +2 -0
- package/construtos/unario.js.map +1 -1
- package/formatadores/formatador-pitugues.js +1 -1
- package/formatadores/formatador-pitugues.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.d.ts +0 -3
- package/lexador/dialetos/palavras-reservadas/pitugues.d.ts.map +1 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.js +0 -3
- package/lexador/dialetos/palavras-reservadas/pitugues.js.map +1 -1
- package/package.json +1 -1
- package/umd/delegua.js +154 -24
package/umd/delegua.js
CHANGED
|
@@ -705,6 +705,29 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
705
705
|
}
|
|
706
706
|
throw this.erro(this.simbolos[this.atual], 'Esperado expressão.');
|
|
707
707
|
}
|
|
708
|
+
resolverTipoAcessoIndiceVariavel(expressaoAnterior) {
|
|
709
|
+
let identificadorAcessado = '';
|
|
710
|
+
switch (expressaoAnterior.constructor) {
|
|
711
|
+
case construtos_1.Variavel:
|
|
712
|
+
identificadorAcessado = expressaoAnterior.simbolo.lexema;
|
|
713
|
+
break;
|
|
714
|
+
default:
|
|
715
|
+
return 'qualquer';
|
|
716
|
+
}
|
|
717
|
+
// Primeiro verificar se é acesso a índice de vetor.
|
|
718
|
+
const tipoIdentificadorCorrespondente = this.pilhaEscopos.obterTipoVariavelPorNome(expressaoAnterior.simbolo.lexema);
|
|
719
|
+
if (!tipoIdentificadorCorrespondente.endsWith('[]') && !['dicionário', 'qualquer', 'texto', 'tupla', 'vetor'].includes(tipoIdentificadorCorrespondente)) {
|
|
720
|
+
throw this.erro(this.simbolos[this.atual], `Tipo ${tipoIdentificadorCorrespondente} não suporta acesso por índice.`);
|
|
721
|
+
}
|
|
722
|
+
let tipoAcesso = 'qualquer';
|
|
723
|
+
if (tipoIdentificadorCorrespondente.endsWith('[]')) {
|
|
724
|
+
tipoAcesso = tipoIdentificadorCorrespondente.replace('[]', '');
|
|
725
|
+
}
|
|
726
|
+
else {
|
|
727
|
+
tipoAcesso = 'qualquer';
|
|
728
|
+
}
|
|
729
|
+
return tipoAcesso;
|
|
730
|
+
}
|
|
708
731
|
resolverCadeiaChamadas(expressaoAnterior, tipoAnterior = 'qualquer') {
|
|
709
732
|
if (!this.simbolos[this.atual]) {
|
|
710
733
|
return expressaoAnterior;
|
|
@@ -733,10 +756,11 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
733
756
|
const acesso = new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, expressaoAnterior, nome, tipoInferido);
|
|
734
757
|
return this.resolverCadeiaChamadas(acesso, tipoInferido);
|
|
735
758
|
case delegua_2.default.COLCHETE_ESQUERDO:
|
|
759
|
+
const tipoAcesso = this.resolverTipoAcessoIndiceVariavel(expressaoAnterior);
|
|
736
760
|
this.avancarEDevolverAnterior();
|
|
737
761
|
const indice = this.expressao();
|
|
738
762
|
const simboloFechamento = this.consumir(delegua_2.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
739
|
-
const acessoVariavel = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressaoAnterior, indice, simboloFechamento);
|
|
763
|
+
const acessoVariavel = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressaoAnterior, indice, simboloFechamento, tipoAcesso);
|
|
740
764
|
return this.resolverCadeiaChamadas(acessoVariavel);
|
|
741
765
|
default:
|
|
742
766
|
return expressaoAnterior;
|
|
@@ -931,11 +955,34 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
931
955
|
}
|
|
932
956
|
return expressao;
|
|
933
957
|
}
|
|
958
|
+
verificacaoOperacoesBinariasIlegais(esquerdo, direito, operador) {
|
|
959
|
+
if (esquerdo.tipo === 'vetor' || esquerdo.tipo.endsWith('[]')) {
|
|
960
|
+
if (['dicionario', 'dicionário', 'nulo'].includes(direito.tipo)) {
|
|
961
|
+
throw this.erro(operador, `Operação inválida: não é possível realizar operação ${operador.lexema} entre vetor e ${direito.tipo}.`);
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
if (direito.tipo === 'vetor' || direito.tipo.endsWith('[]')) {
|
|
965
|
+
if (['dicionario', 'dicionário', 'nulo'].includes(esquerdo.tipo)) {
|
|
966
|
+
throw this.erro(operador, `Operação inválida: não é possível realizar operação ${operador.lexema} entre vetor e ${esquerdo.tipo}.`);
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
if (esquerdo.tipo === 'dicionario' || esquerdo.tipo === 'dicionário') {
|
|
970
|
+
if (['vetor', 'nulo'].includes(direito.tipo)) {
|
|
971
|
+
throw this.erro(operador, `Operação inválida: não é possível realizar operação ${operador.lexema} entre dicionário e ${direito.tipo}.`);
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
if (direito.tipo === 'dicionario' || direito.tipo === 'dicionário') {
|
|
975
|
+
if (['vetor', 'nulo'].includes(esquerdo.tipo)) {
|
|
976
|
+
throw this.erro(operador, `Operação inválida: não é possível realizar operação ${operador.lexema} entre dicionário e ${esquerdo.tipo}.`);
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
}
|
|
934
980
|
multiplicar() {
|
|
935
981
|
let expressao = this.exponenciacao();
|
|
936
982
|
while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.DIVISAO, delegua_2.default.DIVISAO_IGUAL, delegua_2.default.DIVISAO_INTEIRA, delegua_2.default.DIVISAO_INTEIRA_IGUAL, delegua_2.default.MODULO, delegua_2.default.MODULO_IGUAL, delegua_2.default.MULTIPLICACAO, delegua_2.default.MULTIPLICACAO_IGUAL)) {
|
|
937
983
|
const operador = this.simbolos[this.atual - 1];
|
|
938
984
|
const direito = this.exponenciacao();
|
|
985
|
+
this.verificacaoOperacoesBinariasIlegais(expressao, direito, operador);
|
|
939
986
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
940
987
|
}
|
|
941
988
|
return expressao;
|
|
@@ -950,7 +997,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
950
997
|
while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.SUBTRACAO, delegua_2.default.ADICAO, delegua_2.default.MENOS_IGUAL)) {
|
|
951
998
|
const operador = this.simbolos[this.atual - 1];
|
|
952
999
|
const direito = this.multiplicar();
|
|
953
|
-
|
|
1000
|
+
this.verificacaoOperacoesBinariasIlegais(expressao, direito, operador);
|
|
954
1001
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
955
1002
|
}
|
|
956
1003
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.MAIS_IGUAL)) {
|
|
@@ -3376,6 +3423,75 @@ class AvaliadorSintaticoPitugues {
|
|
|
3376
3423
|
declaracaoDeVariavel() {
|
|
3377
3424
|
throw new Error('Método não implementado.');
|
|
3378
3425
|
}
|
|
3426
|
+
variavelJaDeclarada(nome) {
|
|
3427
|
+
try {
|
|
3428
|
+
this.pilhaEscopos.obterTipoVariavelPorNome(nome);
|
|
3429
|
+
return true;
|
|
3430
|
+
}
|
|
3431
|
+
catch (_a) {
|
|
3432
|
+
return false;
|
|
3433
|
+
}
|
|
3434
|
+
}
|
|
3435
|
+
declaracaoImplicita() {
|
|
3436
|
+
const identificador = this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome de variável.');
|
|
3437
|
+
this.consumir(pitugues_2.default.IGUAL, "Esperado '=' após identificador.");
|
|
3438
|
+
if (this.estaNoFinal()) {
|
|
3439
|
+
throw this.erro(this.simboloAnterior(), 'Esperado valor após o símbolo de igual.');
|
|
3440
|
+
}
|
|
3441
|
+
const valor = this.expressao();
|
|
3442
|
+
const tipo = this.logicaComumInferenciaTiposVariaveisEConstantes(valor, 'qualquer');
|
|
3443
|
+
this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipo));
|
|
3444
|
+
return new declaracoes_1.Var(identificador, valor, tipo);
|
|
3445
|
+
}
|
|
3446
|
+
temPadraoMultiplaAtribuicao() {
|
|
3447
|
+
// Verifica padrão: IDENTIFICADOR, VIRGULA, IDENTIFICADOR, ..., IGUAL
|
|
3448
|
+
let pos = this.atual;
|
|
3449
|
+
let contadorIdentificadores = 0;
|
|
3450
|
+
while (pos < this.simbolos.length) {
|
|
3451
|
+
if (this.simbolos[pos].tipo === pitugues_2.default.IDENTIFICADOR) {
|
|
3452
|
+
contadorIdentificadores++;
|
|
3453
|
+
pos++;
|
|
3454
|
+
if (pos >= this.simbolos.length)
|
|
3455
|
+
return false;
|
|
3456
|
+
// Se encontrou =, verifica se tinha mais de 1 identificador
|
|
3457
|
+
if (this.simbolos[pos].tipo === pitugues_2.default.IGUAL) {
|
|
3458
|
+
return contadorIdentificadores > 1;
|
|
3459
|
+
}
|
|
3460
|
+
// Se não é vírgula, não é padrão múltiplo
|
|
3461
|
+
if (this.simbolos[pos].tipo !== pitugues_2.default.VIRGULA) {
|
|
3462
|
+
return false;
|
|
3463
|
+
}
|
|
3464
|
+
pos++;
|
|
3465
|
+
continue;
|
|
3466
|
+
}
|
|
3467
|
+
break;
|
|
3468
|
+
}
|
|
3469
|
+
return false;
|
|
3470
|
+
}
|
|
3471
|
+
temPadraoVarComoPalavraChave() {
|
|
3472
|
+
// Verifica padrão: var identificador = ...
|
|
3473
|
+
var _a;
|
|
3474
|
+
if (this.simbolos[this.atual].lexema !== 'var') {
|
|
3475
|
+
return false;
|
|
3476
|
+
}
|
|
3477
|
+
// Exemplos permitidos: var = 10 | var, a = 10, 20
|
|
3478
|
+
if (((_a = this.simbolos[this.atual + 1]) === null || _a === void 0 ? void 0 : _a.tipo) !== pitugues_2.default.IDENTIFICADOR) {
|
|
3479
|
+
return false;
|
|
3480
|
+
}
|
|
3481
|
+
let pos = this.atual + 1;
|
|
3482
|
+
while (pos < this.simbolos.length) {
|
|
3483
|
+
if (this.simbolos[pos].tipo === pitugues_2.default.IGUAL) {
|
|
3484
|
+
return true; // Encontrou padrão var identificador = ...
|
|
3485
|
+
}
|
|
3486
|
+
// Se encontrou algo que não seja IDENTIFICADOR ou VIRGULA, não é o padrão
|
|
3487
|
+
if (this.simbolos[pos].tipo !== pitugues_2.default.IDENTIFICADOR &&
|
|
3488
|
+
this.simbolos[pos].tipo !== pitugues_2.default.VIRGULA) {
|
|
3489
|
+
return false;
|
|
3490
|
+
}
|
|
3491
|
+
pos++;
|
|
3492
|
+
}
|
|
3493
|
+
return false;
|
|
3494
|
+
}
|
|
3379
3495
|
declaracaoDeVariaveis() {
|
|
3380
3496
|
const identificadores = [];
|
|
3381
3497
|
let retorno = [];
|
|
@@ -3383,14 +3499,7 @@ class AvaliadorSintaticoPitugues {
|
|
|
3383
3499
|
do {
|
|
3384
3500
|
identificadores.push(this.consumir(pitugues_2.default.IDENTIFICADOR, 'Esperado nome de variável.'));
|
|
3385
3501
|
} while (this.verificarSeSimboloAtualEIgualA(pitugues_2.default.VIRGULA));
|
|
3386
|
-
|
|
3387
|
-
// Inicialização de variáveis sem valor.
|
|
3388
|
-
for (let [indice, identificador] of identificadores.entries()) {
|
|
3389
|
-
retorno.push(new declaracoes_1.Var(identificador, null));
|
|
3390
|
-
}
|
|
3391
|
-
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.PONTO_E_VIRGULA);
|
|
3392
|
-
return retorno;
|
|
3393
|
-
}
|
|
3502
|
+
this.consumir(pitugues_2.default.IGUAL, 'Esperado o símbolo igual(=) após identificador.');
|
|
3394
3503
|
const inicializadores = [];
|
|
3395
3504
|
do {
|
|
3396
3505
|
inicializadores.push(this.expressao());
|
|
@@ -4158,7 +4267,9 @@ class AvaliadorSintaticoPitugues {
|
|
|
4158
4267
|
const possivelDocumentacao = this.declaracaoTextoDeDocumentacao();
|
|
4159
4268
|
const metodos = [];
|
|
4160
4269
|
const propriedades = [];
|
|
4270
|
+
const indentacaoLinha = this.localizacoes[this.simboloAtual().linha].espacosIndentacao;
|
|
4161
4271
|
while (!this.estaNoFinal() &&
|
|
4272
|
+
this.localizacoes[this.simboloAtual().linha].espacosIndentacao === indentacaoLinha &&
|
|
4162
4273
|
this.verificarSeSimboloAtualEIgualA(pitugues_2.default.CONSTRUTOR, pitugues_2.default.FUNCAO, pitugues_2.default.FUNÇÃO, pitugues_2.default.IDENTIFICADOR)) {
|
|
4163
4274
|
const simboloAnterior = this.simbolos[this.atual - 1];
|
|
4164
4275
|
if (simboloAnterior.tipo === pitugues_2.default.IDENTIFICADOR) {
|
|
@@ -4235,6 +4346,25 @@ class AvaliadorSintaticoPitugues {
|
|
|
4235
4346
|
}
|
|
4236
4347
|
}
|
|
4237
4348
|
resolverDeclaracao() {
|
|
4349
|
+
var _a;
|
|
4350
|
+
// Detecção de declaração implícita
|
|
4351
|
+
if (this.simbolos[this.atual].tipo === pitugues_2.default.IDENTIFICADOR) {
|
|
4352
|
+
// Detecta e bloqueia "var x = 10"
|
|
4353
|
+
if (this.temPadraoVarComoPalavraChave()) {
|
|
4354
|
+
throw this.erro(this.simbolos[this.atual], 'Palavra "var" não pode ser usada como palavra-chave para declaração. Use declarações implícitas: "x = 10" em vez de "var x = 10".');
|
|
4355
|
+
}
|
|
4356
|
+
// Verifica se é múltipla atribuição (a, b, c = 1, 2, 3)
|
|
4357
|
+
if (this.temPadraoMultiplaAtribuicao()) {
|
|
4358
|
+
return this.declaracaoDeVariaveis();
|
|
4359
|
+
}
|
|
4360
|
+
// Verifica se é atribuição simples (a = 1)
|
|
4361
|
+
if (((_a = this.simbolos[this.atual + 1]) === null || _a === void 0 ? void 0 : _a.tipo) === pitugues_2.default.IGUAL) {
|
|
4362
|
+
const nomeVariavel = this.simbolos[this.atual].lexema;
|
|
4363
|
+
if (!this.variavelJaDeclarada(nomeVariavel)) {
|
|
4364
|
+
return this.declaracaoImplicita();
|
|
4365
|
+
}
|
|
4366
|
+
}
|
|
4367
|
+
}
|
|
4238
4368
|
switch (this.simbolos[this.atual].tipo) {
|
|
4239
4369
|
case pitugues_2.default.COMENTARIO:
|
|
4240
4370
|
return this.declaracaoComentario();
|
|
@@ -4279,9 +4409,6 @@ class AvaliadorSintaticoPitugues {
|
|
|
4279
4409
|
return this.declaracaoTente();
|
|
4280
4410
|
case pitugues_2.default.TEXTO_MULTILINHAS:
|
|
4281
4411
|
return this.declaracaoTextoDeDocumentacao();
|
|
4282
|
-
case pitugues_2.default.VARIAVEL:
|
|
4283
|
-
this.avancarEDevolverAnterior();
|
|
4284
|
-
return this.declaracaoDeVariaveis();
|
|
4285
4412
|
}
|
|
4286
4413
|
return this.declaracaoExpressao();
|
|
4287
4414
|
}
|
|
@@ -8616,12 +8743,14 @@ exports.AcessoIndiceVariavel = void 0;
|
|
|
8616
8743
|
* vetores e dicionários.
|
|
8617
8744
|
*/
|
|
8618
8745
|
class AcessoIndiceVariavel {
|
|
8619
|
-
constructor(hashArquivo, entidadeChamada, indice, simboloFechamento) {
|
|
8746
|
+
constructor(hashArquivo, entidadeChamada, indice, simboloFechamento, tipo = 'qualquer') {
|
|
8747
|
+
this.tipo = 'qualquer';
|
|
8620
8748
|
this.linha = entidadeChamada.linha;
|
|
8621
8749
|
this.hashArquivo = hashArquivo;
|
|
8622
8750
|
this.entidadeChamada = entidadeChamada;
|
|
8623
8751
|
this.indice = indice;
|
|
8624
8752
|
this.simboloFechamento = simboloFechamento;
|
|
8753
|
+
this.tipo = tipo;
|
|
8625
8754
|
}
|
|
8626
8755
|
async aceitar(visitante) {
|
|
8627
8756
|
return await visitante.visitarExpressaoAcessoIndiceVariavel(this);
|
|
@@ -8904,21 +9033,22 @@ class Binario {
|
|
|
8904
9033
|
this.direita = direita;
|
|
8905
9034
|
this.tipo = this.deduzirTipo();
|
|
8906
9035
|
}
|
|
9036
|
+
/**
|
|
9037
|
+
* Dedução otimista de tipos para expressões binárias.
|
|
9038
|
+
* @returns O tipo deduzido.
|
|
9039
|
+
*/
|
|
8907
9040
|
deduzirTipo() {
|
|
8908
9041
|
if (['logico', 'lógico'].includes(this.esquerda.tipo) ||
|
|
8909
9042
|
['logico', 'lógico'].includes(this.direita.tipo)) {
|
|
8910
9043
|
return 'lógico';
|
|
8911
9044
|
}
|
|
8912
|
-
if (this.esquerda.tipo === 'texto' || this.direita.tipo === 'texto') {
|
|
8913
|
-
return 'texto';
|
|
8914
|
-
}
|
|
8915
|
-
if (this.esquerda.tipo === 'inteiro' && this.direita.tipo === 'inteiro') {
|
|
8916
|
-
return 'inteiro';
|
|
8917
|
-
}
|
|
8918
9045
|
if (['numero', 'número'].includes(this.esquerda.tipo) ||
|
|
8919
9046
|
['numero', 'número'].includes(this.direita.tipo)) {
|
|
8920
9047
|
return 'número';
|
|
8921
9048
|
}
|
|
9049
|
+
if (this.esquerda.tipo === this.direita.tipo) {
|
|
9050
|
+
return this.esquerda.tipo;
|
|
9051
|
+
}
|
|
8922
9052
|
return 'qualquer';
|
|
8923
9053
|
}
|
|
8924
9054
|
async aceitar(visitante) {
|
|
@@ -9428,6 +9558,7 @@ const geracao_identificadores_1 = require("../geracao-identificadores");
|
|
|
9428
9558
|
*/
|
|
9429
9559
|
class Leia {
|
|
9430
9560
|
constructor(simbolo, argumentos) {
|
|
9561
|
+
this.tipo = 'texto';
|
|
9431
9562
|
this.linha = simbolo.linha;
|
|
9432
9563
|
this.hashArquivo = simbolo.hashArquivo;
|
|
9433
9564
|
this.simbolo = simbolo;
|
|
@@ -10110,11 +10241,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10110
10241
|
exports.Unario = void 0;
|
|
10111
10242
|
class Unario {
|
|
10112
10243
|
constructor(hashArquivo, operador, operando, incidenciaOperador = 'ANTES') {
|
|
10244
|
+
this.tipo = 'qualquer';
|
|
10113
10245
|
this.linha = operador.linha;
|
|
10114
10246
|
this.hashArquivo = hashArquivo;
|
|
10115
10247
|
this.operador = operador;
|
|
10116
10248
|
this.operando = operando;
|
|
10117
10249
|
this.incidenciaOperador = incidenciaOperador;
|
|
10250
|
+
this.tipo = operando.tipo;
|
|
10118
10251
|
}
|
|
10119
10252
|
async aceitar(visitante) {
|
|
10120
10253
|
return await visitante.visitarExpressaoUnaria(this);
|
|
@@ -11817,7 +11950,7 @@ class FormatadorPitugues {
|
|
|
11817
11950
|
this.códigoFormatado += `'''${declaracao.conteudo}'''`;
|
|
11818
11951
|
}
|
|
11819
11952
|
async visitarDeclaracaoVar(declaração) {
|
|
11820
|
-
this.códigoFormatado += this.indentar() +
|
|
11953
|
+
this.códigoFormatado += this.indentar() + `${declaração.simbolo.lexema} = `;
|
|
11821
11954
|
if (declaração.inicializador) {
|
|
11822
11955
|
this.códigoFormatado += await declaração.inicializador.aceitar(this);
|
|
11823
11956
|
}
|
|
@@ -18373,9 +18506,6 @@ exports.palavrasReservadasPitugues = {
|
|
|
18373
18506
|
tendo: pitugues_1.default.TENDO,
|
|
18374
18507
|
tente: pitugues_1.default.TENTE,
|
|
18375
18508
|
tipo: pitugues_1.default.TIPO,
|
|
18376
|
-
var: pitugues_1.default.VARIAVEL,
|
|
18377
|
-
variavel: pitugues_1.default.VARIAVEL,
|
|
18378
|
-
variável: pitugues_1.default.VARIAVEL,
|
|
18379
18509
|
verdadeiro: pitugues_1.default.VERDADEIRO,
|
|
18380
18510
|
};
|
|
18381
18511
|
exports.palavrasReservadasMicroGramatica = {
|