@designliquido/delegua 1.27.1 → 1.27.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/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.js +11 -0
- package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +15 -1
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/bin/package.json +1 -1
- package/interfaces/parametro-interface.d.ts +4 -0
- package/interfaces/parametro-interface.d.ts.map +1 -1
- package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
- package/interpretador/estruturas/delegua-funcao.js +47 -1
- package/interpretador/estruturas/delegua-funcao.js.map +1 -1
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +4 -1
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +3 -0
- package/interpretador/interpretador.js.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
- package/lexador/dialetos/lexador-portugol-ipt.js +3 -2
- package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
- package/lexador/lexador-base-linha-unica.d.ts.map +1 -1
- package/lexador/lexador-base-linha-unica.js +3 -2
- package/lexador/lexador-base-linha-unica.js.map +1 -1
- package/lexador/lexador-base.d.ts.map +1 -1
- package/lexador/lexador-base.js +9 -2
- package/lexador/lexador-base.js.map +1 -1
- package/lexador/lexador.d.ts.map +1 -1
- package/lexador/lexador.js +3 -2
- package/lexador/lexador.js.map +1 -1
- package/lexador/micro-lexador-pitugues.d.ts.map +1 -1
- package/lexador/micro-lexador-pitugues.js +3 -2
- package/lexador/micro-lexador-pitugues.js.map +1 -1
- package/lexador/micro-lexador.d.ts.map +1 -1
- package/lexador/micro-lexador.js +3 -2
- package/lexador/micro-lexador.js.map +1 -1
- package/package.json +1 -1
- package/umd/delegua.js +105 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro-lexador-pitugues.js","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador-pitugues.ts"],"names":[],"mappings":";;;;;;AAIA,+DAA+F;AAC/F,uCAAoC;AAEpC,6EAA4D;AAE5D;;;;GAIG;AACH,MAAa,oBAAoB;IAAjC;QAOI,qFAAqF;QACrF,sBAAiB,GAAW,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"micro-lexador-pitugues.js","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador-pitugues.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro-lexador.d.ts","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C;;;;GAIG;AACH,qBAAa,YAAY;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAoCrC,iBAAiB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;IAI1C,cAAc,IAAI,OAAO;IAIzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,GAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"micro-lexador.d.ts","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C;;;;GAIG;AACH,qBAAa,YAAY;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAoCrC,iBAAiB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;IAI1C,cAAc,IAAI,OAAO;IAIzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,GAAU,GAAG,IAAI;IAWzD,aAAa,CAAC,WAAW,SAAM,GAAG,IAAI;IAkBtC,cAAc,IAAI,IAAI;IAkBtB,uBAAuB,IAAI,IAAI;IAe/B,aAAa,IAAI,IAAI;IAiHrB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC,gBAAgB,CAAC;CAiBpE"}
|
package/lexador/micro-lexador.js
CHANGED
|
@@ -56,8 +56,9 @@ class MicroLexador {
|
|
|
56
56
|
}
|
|
57
57
|
adicionarSimbolo(tipo, literal = null) {
|
|
58
58
|
const texto = this.codigo.substring(this.inicioSimbolo, this.atual);
|
|
59
|
-
|
|
60
|
-
const
|
|
59
|
+
// `lexema` deve sempre ser texto. Ver comentário equivalente em `LexadorBase.adicionarSimbolo`.
|
|
60
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
61
|
+
const comprimentoLexema = lexema.length;
|
|
61
62
|
const comprimento = Math.max(comprimentoLexema, texto.length) || 1;
|
|
62
63
|
const colunaInicio = this.inicioSimbolo + 1;
|
|
63
64
|
const colunaFim = this.inicioSimbolo + comprimento;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro-lexador.js","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador.ts"],"names":[],"mappings":";;;;;;AAIA,+DAA+F;AAC/F,uCAAoC;AAEpC,2FAA2E;AAE3E;;;;GAIG;AACH,MAAa,YAAY;IAOrB,OAAO,CAAC,SAAiB;QACrB,OAAO,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,SAAiB;QACvB,MAAM,WAAW,GAAG;YAChB,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACN,CAAC;QAEF,OAAO,CACH,CAAC,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;YACtC,CAAC,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;YACtC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAClC,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,SAAc;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,UAAe,IAAI;QAC9C,MAAM,KAAK,GAAW,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"micro-lexador.js","sourceRoot":"","sources":["../../fontes/lexador/micro-lexador.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/umd/delegua.js
CHANGED
|
@@ -2165,6 +2165,17 @@ class AvaliadorSintaticoBase {
|
|
|
2165
2165
|
this.blocos = 0;
|
|
2166
2166
|
}
|
|
2167
2167
|
erro(simbolo, mensagemDeErro, codigoDiagnostico, simboloRelacionado) {
|
|
2168
|
+
// Chamadores costumam passar `this.simbolos[this.atual]` diretamente. Se o
|
|
2169
|
+
// cursor já passou do último símbolo (ex.: código termina logo após um
|
|
2170
|
+
// token sem ';' ou EOF explícito), esse acesso devolve `undefined`, e o
|
|
2171
|
+
// construtor de `ErroAvaliadorSintatico` quebraria ao ler `simbolo.hashArquivo`.
|
|
2172
|
+
// Mesma lógica de fallback já usada em `consumir()`.
|
|
2173
|
+
if (!simbolo) {
|
|
2174
|
+
simbolo =
|
|
2175
|
+
this.simbolos.length === 0
|
|
2176
|
+
? { hashArquivo: this.hashArquivo, linha: 1 }
|
|
2177
|
+
: this.simbolos[this.simbolos.length - 1];
|
|
2178
|
+
}
|
|
2168
2179
|
const excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro, codigoDiagnostico, simboloRelacionado);
|
|
2169
2180
|
return excecao;
|
|
2170
2181
|
}
|
|
@@ -4701,6 +4712,15 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
4701
4712
|
const parametros = [];
|
|
4702
4713
|
do {
|
|
4703
4714
|
const parametro = {};
|
|
4715
|
+
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.CONSTANTE)) {
|
|
4716
|
+
const modificador = this.simbolos[this.atual - 1];
|
|
4717
|
+
if (modificador.lexema === 'fixo') {
|
|
4718
|
+
parametro.fixo = true;
|
|
4719
|
+
}
|
|
4720
|
+
else {
|
|
4721
|
+
parametro.imutavel = true;
|
|
4722
|
+
}
|
|
4723
|
+
}
|
|
4704
4724
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.RETICENCIAS)) {
|
|
4705
4725
|
parametro.abrangencia = 'multiplo';
|
|
4706
4726
|
}
|
|
@@ -4772,7 +4792,12 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
4772
4792
|
}
|
|
4773
4793
|
}
|
|
4774
4794
|
const tiposRetornos = new Set(expressoesRetorna.filter((e) => e.tipo !== 'qualquer').map((e) => e.tipo));
|
|
4775
|
-
|
|
4795
|
+
// Não usar `tiposRetornos.size > 0` aqui: esse conjunto já descarta
|
|
4796
|
+
// retornos de tipo 'qualquer' (ex.: `retorna x * y` com parâmetros sem
|
|
4797
|
+
// tipo). Um `retorna` com valor de tipo indeterminado ainda conta como
|
|
4798
|
+
// retorno explícito, senão a função seria incorretamente inferida como
|
|
4799
|
+
// 'vazio' em vez de 'qualquer'.
|
|
4800
|
+
let retornaChamadoExplicitamente = expressoesRetorna.some((e) => e.valor !== undefined);
|
|
4776
4801
|
if (tiposRetornos.size > 1 && tipoRetorno !== 'qualquer') {
|
|
4777
4802
|
let tiposEncontrados = Array.from(tiposRetornos).reduce((acumulador, valor) => (acumulador += valor + ', '), '');
|
|
4778
4803
|
tiposEncontrados = tiposEncontrados.slice(0, -2);
|
|
@@ -20984,6 +21009,8 @@ const espaco_memoria_1 = require("../espaco-memoria");
|
|
|
20984
21009
|
const quebras_1 = require("../../quebras");
|
|
20985
21010
|
const objeto_delegua_classe_1 = require("./objeto-delegua-classe");
|
|
20986
21011
|
const declaracoes_1 = require("../../declaracoes");
|
|
21012
|
+
const inferenciador_1 = require("../../inferenciador");
|
|
21013
|
+
const referencia_montao_1 = require("./referencia-montao");
|
|
20987
21014
|
/**
|
|
20988
21015
|
* Qualquer função declarada em código é uma DeleguaFuncao.
|
|
20989
21016
|
*/
|
|
@@ -21079,7 +21106,27 @@ class DeleguaFuncao extends chamavel_1.Chamavel {
|
|
|
21079
21106
|
else {
|
|
21080
21107
|
valorFinal = null;
|
|
21081
21108
|
}
|
|
21082
|
-
|
|
21109
|
+
if (parametro.fixo) {
|
|
21110
|
+
// Vetores e dicionários vivem no montão; `valorFinal` é apenas
|
|
21111
|
+
// o ponteiro (`ReferenciaMontao`). É preciso congelar o valor
|
|
21112
|
+
// real armazenado no montão, não o ponteiro em si.
|
|
21113
|
+
if (valorFinal instanceof referencia_montao_1.ReferenciaMontao) {
|
|
21114
|
+
congelarProfundamente(visitante.resolverValor(valorFinal));
|
|
21115
|
+
}
|
|
21116
|
+
else {
|
|
21117
|
+
valorFinal = congelarProfundamente(valorFinal);
|
|
21118
|
+
}
|
|
21119
|
+
}
|
|
21120
|
+
if (parametro.imutavel || parametro.fixo) {
|
|
21121
|
+
ambiente.valores[nome] = {
|
|
21122
|
+
valor: valorFinal,
|
|
21123
|
+
tipo: (0, inferenciador_1.inferirTipoVariavel)(valorFinal),
|
|
21124
|
+
imutavel: true,
|
|
21125
|
+
};
|
|
21126
|
+
}
|
|
21127
|
+
else {
|
|
21128
|
+
ambiente.valores[nome] = valorFinal;
|
|
21129
|
+
}
|
|
21083
21130
|
// Se o argumento é `DeleguaFuncao`, para habilitar o recurso de _currying_,
|
|
21084
21131
|
// copiamos seu valor para o escopo atual. Nem sempre podemos contar com a tipagem explícita aqui.
|
|
21085
21132
|
if (valorFinal &&
|
|
@@ -21159,6 +21206,30 @@ class DeleguaFuncao extends chamavel_1.Chamavel {
|
|
|
21159
21206
|
}
|
|
21160
21207
|
}
|
|
21161
21208
|
exports.DeleguaFuncao = DeleguaFuncao;
|
|
21209
|
+
/**
|
|
21210
|
+
* Congela recursivamente vetores e objetos (dicionários), usados para
|
|
21211
|
+
* implementar parâmetros `fixo`: qualquer tentativa de mutação do valor,
|
|
21212
|
+
* mesmo através de um alias, deve resultar em erro em tempo de execução.
|
|
21213
|
+
* Não congela instâncias de classe, funções ou outras estruturas de Delégua,
|
|
21214
|
+
* pois isso quebraria comportamento esperado (ex.: métodos, `isto`).
|
|
21215
|
+
*/
|
|
21216
|
+
function congelarProfundamente(valor) {
|
|
21217
|
+
if (valor === null || typeof valor !== 'object') {
|
|
21218
|
+
return valor;
|
|
21219
|
+
}
|
|
21220
|
+
if (!Array.isArray(valor) && valor.constructor !== Object) {
|
|
21221
|
+
return valor;
|
|
21222
|
+
}
|
|
21223
|
+
if (Object.isFrozen(valor)) {
|
|
21224
|
+
return valor;
|
|
21225
|
+
}
|
|
21226
|
+
Object.freeze(valor);
|
|
21227
|
+
const valores = Array.isArray(valor) ? valor : Object.values(valor);
|
|
21228
|
+
for (const item of valores) {
|
|
21229
|
+
congelarProfundamente(item);
|
|
21230
|
+
}
|
|
21231
|
+
return valor;
|
|
21232
|
+
}
|
|
21162
21233
|
/**
|
|
21163
21234
|
* Mapeia o tipo JS de um valor primitivo para o nome de tipo de Delégua.
|
|
21164
21235
|
*/
|
|
@@ -21178,7 +21249,7 @@ function tipoDeDados(valor) {
|
|
|
21178
21249
|
}
|
|
21179
21250
|
}
|
|
21180
21251
|
|
|
21181
|
-
},{"../../declaracoes":117,"../../quebras":253,"../espaco-memoria":206,"./chamavel":207,"./objeto-delegua-classe":220}],212:[function(require,module,exports){
|
|
21252
|
+
},{"../../declaracoes":117,"../../inferenciador":151,"../../quebras":253,"../espaco-memoria":206,"./chamavel":207,"./objeto-delegua-classe":220,"./referencia-montao":222}],212:[function(require,module,exports){
|
|
21182
21253
|
"use strict";
|
|
21183
21254
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21184
21255
|
exports.DescritorTipoClasse = void 0;
|
|
@@ -22674,10 +22745,13 @@ class InterpretadorBase {
|
|
|
22674
22745
|
return avaliacaoAgrupamento;
|
|
22675
22746
|
}
|
|
22676
22747
|
eVerdadeiro(objeto) {
|
|
22677
|
-
if (objeto === null)
|
|
22748
|
+
if (objeto === null || objeto === undefined)
|
|
22678
22749
|
return false;
|
|
22679
22750
|
if (typeof objeto === primitivos_1.default.BOOLEANO)
|
|
22680
22751
|
return Boolean(objeto);
|
|
22752
|
+
if (typeof objeto === primitivos_1.default.NUMERO || typeof objeto === 'bigint') {
|
|
22753
|
+
return Boolean(objeto);
|
|
22754
|
+
}
|
|
22681
22755
|
if (objeto.hasOwnProperty('valor')) {
|
|
22682
22756
|
return Boolean(objeto.valor);
|
|
22683
22757
|
}
|
|
@@ -25831,6 +25905,9 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
25831
25905
|
}
|
|
25832
25906
|
objeto = this.resolverValor(objeto);
|
|
25833
25907
|
indice = this.resolverValor(indice);
|
|
25908
|
+
if (objeto && typeof objeto === 'object' && Object.isFrozen(objeto)) {
|
|
25909
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.objeto.simbolo, 'Não é possível mutar um valor fixo.', expressao.linha));
|
|
25910
|
+
}
|
|
25834
25911
|
// Se o valor é uma referência ao montão, e o índice que a recebe é
|
|
25835
25912
|
// de uma variável/constante que vive num escopo superior, a referência
|
|
25836
25913
|
// precisa ser transferida para o escopo correspondente.
|
|
@@ -27945,8 +28022,9 @@ class LexadorPortugolIpt {
|
|
|
27945
28022
|
}
|
|
27946
28023
|
adicionarSimbolo(tipo, literal) {
|
|
27947
28024
|
const texto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
|
|
27948
|
-
|
|
27949
|
-
const
|
|
28025
|
+
// `lexema` deve sempre ser texto. Ver comentário equivalente em `LexadorBase.adicionarSimbolo`.
|
|
28026
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
28027
|
+
const comprimentoLexema = lexema.length;
|
|
27950
28028
|
const comprimento = Math.max(comprimentoLexema, texto.length) || 1;
|
|
27951
28029
|
const colunaInicio = this.inicioSimbolo + 1;
|
|
27952
28030
|
const colunaFim = this.inicioSimbolo + comprimento;
|
|
@@ -29398,8 +29476,9 @@ class LexadorBaseLinhaUnica {
|
|
|
29398
29476
|
}
|
|
29399
29477
|
adicionarSimbolo(tipo, literal) {
|
|
29400
29478
|
const texto = this.codigo.substring(this.inicioSimbolo, this.atual);
|
|
29401
|
-
|
|
29402
|
-
const
|
|
29479
|
+
// `lexema` deve sempre ser texto. Ver comentário equivalente em `LexadorBase.adicionarSimbolo`.
|
|
29480
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
29481
|
+
const comprimentoLexema = lexema.length;
|
|
29403
29482
|
const comprimento = Math.max(comprimentoLexema, texto.length) || 1;
|
|
29404
29483
|
const colunaInicio = this.inicioSimbolo + 1;
|
|
29405
29484
|
const colunaFim = this.inicioSimbolo + comprimento;
|
|
@@ -29537,8 +29616,15 @@ class LexadorBase {
|
|
|
29537
29616
|
}
|
|
29538
29617
|
adicionarSimbolo(tipo, literal, ehNumeroReal) {
|
|
29539
29618
|
const texto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
|
|
29540
|
-
|
|
29541
|
-
|
|
29619
|
+
// `lexema` deve sempre ser texto (o token como aparece no código-fonte).
|
|
29620
|
+
// Para símbolos de um só avanço (operadores compostos, por exemplo), `literal`
|
|
29621
|
+
// é passado como string e usado como `lexema` porque `texto` ainda está vazio
|
|
29622
|
+
// nesse ponto. Mas `literal` também pode ser um valor já convertido (número,
|
|
29623
|
+
// BigInt) para tokens como NUMERO — nesse caso `texto` é que deve virar o lexema,
|
|
29624
|
+
// nunca o valor bruto (ver `verificarDefinicaoTipoAtual`, que chama `.toLowerCase()`
|
|
29625
|
+
// em `lexema` esperando sempre uma string).
|
|
29626
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
29627
|
+
const comprimentoLexema = lexema.length;
|
|
29542
29628
|
const comprimento = Math.max(comprimentoLexema, texto.length) || 1;
|
|
29543
29629
|
const colunaInicio = this.inicioSimbolo + 1;
|
|
29544
29630
|
const colunaFim = this.inicioSimbolo + comprimento;
|
|
@@ -29635,8 +29721,9 @@ class Lexador extends lexador_base_1.LexadorBase {
|
|
|
29635
29721
|
}
|
|
29636
29722
|
adicionarSimbolo(tipo, literal = null, ehNumeroReal) {
|
|
29637
29723
|
const texto = this.codigo[this.linha].substring(this.inicioSimbolo, this.atual);
|
|
29638
|
-
|
|
29639
|
-
const
|
|
29724
|
+
// `lexema` deve sempre ser texto. Ver comentário equivalente em `LexadorBase.adicionarSimbolo`.
|
|
29725
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
29726
|
+
const comprimento = Math.max(lexema.length, texto.length) || 1;
|
|
29640
29727
|
this.simbolos.push(new simbolo_1.Simbolo(tipo, lexema, literal, this.linha + 1, this.hashArquivo, this.inicioSimbolo + 1, this.inicioSimbolo + comprimento, undefined, ehNumeroReal));
|
|
29641
29728
|
}
|
|
29642
29729
|
verificarEAvancar(esperado) {
|
|
@@ -30286,8 +30373,9 @@ class MicroLexadorPitugues {
|
|
|
30286
30373
|
}
|
|
30287
30374
|
adicionarSimbolo(tipo, literal = null) {
|
|
30288
30375
|
const texto = this.codigo.substring(this.inicioSimbolo, this.atual);
|
|
30289
|
-
|
|
30290
|
-
const
|
|
30376
|
+
// `lexema` deve sempre ser texto. Ver comentário equivalente em `LexadorBase.adicionarSimbolo`.
|
|
30377
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
30378
|
+
const comprimentoLexema = lexema.length;
|
|
30291
30379
|
const comprimento = Math.max(comprimentoLexema, texto.length) || 1;
|
|
30292
30380
|
const colunaInicio = this.inicioSimbolo + 1;
|
|
30293
30381
|
const colunaFim = this.inicioSimbolo + comprimento;
|
|
@@ -30502,8 +30590,9 @@ class MicroLexador {
|
|
|
30502
30590
|
}
|
|
30503
30591
|
adicionarSimbolo(tipo, literal = null) {
|
|
30504
30592
|
const texto = this.codigo.substring(this.inicioSimbolo, this.atual);
|
|
30505
|
-
|
|
30506
|
-
const
|
|
30593
|
+
// `lexema` deve sempre ser texto. Ver comentário equivalente em `LexadorBase.adicionarSimbolo`.
|
|
30594
|
+
const lexema = (typeof literal === 'string' && literal.length > 0) ? literal : texto;
|
|
30595
|
+
const comprimentoLexema = lexema.length;
|
|
30507
30596
|
const comprimento = Math.max(comprimentoLexema, texto.length) || 1;
|
|
30508
30597
|
const colunaInicio = this.inicioSimbolo + 1;
|
|
30509
30598
|
const colunaFim = this.inicioSimbolo + comprimento;
|