@designliquido/delegua 0.41.3 → 0.41.5
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 +3 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +16 -9
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bin/package.json +1 -1
- package/interpretador/interpretador-base.d.ts +3 -1
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +6 -37
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts +11 -1
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +68 -31
- package/interpretador/interpretador.js.map +1 -1
- package/package.json +1 -1
- package/tipos-de-dados/delegua.d.ts +4 -0
- package/tipos-de-dados/delegua.d.ts.map +1 -1
- package/tipos-de-dados/delegua.js +4 -0
- package/tipos-de-dados/delegua.js.map +1 -1
- package/umd/delegua.js +95 -78
package/umd/delegua.js
CHANGED
|
@@ -274,14 +274,21 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
274
274
|
this.performance = performance;
|
|
275
275
|
this.tiposDefinidosEmCodigo = {};
|
|
276
276
|
this.tiposDeFerramentasExternas = {};
|
|
277
|
-
this.primitivasConhecidas =
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
'
|
|
283
|
-
|
|
284
|
-
|
|
277
|
+
this.primitivasConhecidas = {};
|
|
278
|
+
for (const nomePrimitivaDicionario of Object.keys(primitivas_dicionario_1.default)) {
|
|
279
|
+
this.primitivasConhecidas[nomePrimitivaDicionario] = 'dicionário';
|
|
280
|
+
}
|
|
281
|
+
for (const nomePrimitivaNumero of Object.keys(primitivas_numero_1.default)) {
|
|
282
|
+
this.primitivasConhecidas[nomePrimitivaNumero] = 'número';
|
|
283
|
+
}
|
|
284
|
+
for (const nomePrimitivaTexto of Object.keys(primitivas_texto_1.default)) {
|
|
285
|
+
this.primitivasConhecidas[nomePrimitivaTexto] = 'texto';
|
|
286
|
+
}
|
|
287
|
+
for (const nomePrimitivaVetor of Object.keys(primitivas_vetor_1.default)) {
|
|
288
|
+
this.primitivasConhecidas[nomePrimitivaVetor] = 'vetor';
|
|
289
|
+
}
|
|
290
|
+
this.primitivasConhecidas['inteiro'] = 'inteiro';
|
|
291
|
+
this.primitivasConhecidas['texto'] = 'texto';
|
|
285
292
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
286
293
|
}
|
|
287
294
|
verificarDefinicaoTipoAtual() {
|
|
@@ -603,7 +610,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
603
610
|
resolverEntidadeChamada(entidadeChamada) {
|
|
604
611
|
if (entidadeChamada.constructor.name === 'Variavel') {
|
|
605
612
|
const entidadeChamadaResolvidaVariavel = entidadeChamada;
|
|
606
|
-
if (this.primitivasConhecidas.
|
|
613
|
+
if (this.primitivasConhecidas.hasOwnProperty(entidadeChamadaResolvidaVariavel.simbolo.lexema)) {
|
|
607
614
|
return entidadeChamadaResolvidaVariavel;
|
|
608
615
|
}
|
|
609
616
|
if (entidadeChamadaResolvidaVariavel.simbolo.lexema in this.tiposDefinidosEmCodigo) {
|
|
@@ -8092,15 +8099,14 @@ const espaco_variaveis_1 = require("../espaco-variaveis");
|
|
|
8092
8099
|
const comum_1 = require("./comum");
|
|
8093
8100
|
const excecoes_1 = require("../excecoes");
|
|
8094
8101
|
const primitivas_dicionario_1 = __importDefault(require("../bibliotecas/primitivas-dicionario"));
|
|
8095
|
-
const primitivas_numero_1 = __importDefault(require("../bibliotecas/primitivas-numero"));
|
|
8096
|
-
const primitivas_texto_1 = __importDefault(require("../bibliotecas/primitivas-texto"));
|
|
8097
|
-
const primitivas_vetor_1 = __importDefault(require("../bibliotecas/primitivas-vetor"));
|
|
8098
8102
|
const delegua_1 = __importDefault(require("../tipos-de-simbolos/delegua"));
|
|
8099
8103
|
const primitivos_1 = __importDefault(require("../tipos-de-dados/primitivos"));
|
|
8100
8104
|
const delegua_2 = __importDefault(require("../tipos-de-dados/delegua"));
|
|
8101
8105
|
/**
|
|
8102
8106
|
* O Interpretador visita todos os elementos complexos gerados pelo avaliador sintático (_parser_),
|
|
8103
|
-
* e de fato executa a lógica de programação descrita no código.
|
|
8107
|
+
* e de fato executa a lógica de programação descrita no código. Este interpretador base é usado
|
|
8108
|
+
* por Delégua e todos os seus dialetos, contendo somente os pontos em comum entre todas as
|
|
8109
|
+
* linguagens.
|
|
8104
8110
|
*
|
|
8105
8111
|
* O Interpretador Base não contém dependências com o Node.js. É
|
|
8106
8112
|
* recomendado para uso em execuções que ocorrem no navegador de internet.
|
|
@@ -9158,13 +9164,10 @@ class InterpretadorBase {
|
|
|
9158
9164
|
metodos[metodoAtual.simbolo.lexema] = funcao;
|
|
9159
9165
|
}
|
|
9160
9166
|
const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(declaracao.simbolo, superClasse, metodos, declaracao.propriedades);
|
|
9167
|
+
// TODO: Mover para Potigol, que é o único dialeto que realmente usa isso.
|
|
9161
9168
|
descritorTipoClasse.dialetoRequerExpansaoPropriedadesEspacoVariaveis =
|
|
9162
9169
|
this.expandirPropriedadesDeObjetosEmEspacoVariaveis;
|
|
9163
9170
|
descritorTipoClasse.dialetoRequerDeclaracaoPropriedades = this.requerDeclaracaoPropriedades;
|
|
9164
|
-
// TODO: Recolocar isso se for necessário.
|
|
9165
|
-
/* if (superClasse !== null) {
|
|
9166
|
-
this.ambiente = this.ambiente.enclosing;
|
|
9167
|
-
} */
|
|
9168
9171
|
this.pilhaEscoposExecucao.atribuirVariavel(declaracao.simbolo, descritorTipoClasse);
|
|
9169
9172
|
return null;
|
|
9170
9173
|
}
|
|
@@ -9219,35 +9222,7 @@ class InterpretadorBase {
|
|
|
9219
9222
|
if (tipoObjeto === null || tipoObjeto === undefined) {
|
|
9220
9223
|
tipoObjeto = (0, inferenciador_1.inferirTipoVariavel)(variavelObjeto);
|
|
9221
9224
|
}
|
|
9222
|
-
|
|
9223
|
-
// JavaScript, as primitivas de dicionário, especificamente, são tratadas
|
|
9224
|
-
// mais acima.
|
|
9225
|
-
switch (tipoObjeto) {
|
|
9226
|
-
case delegua_2.default.INTEIRO:
|
|
9227
|
-
case delegua_2.default.NUMERO:
|
|
9228
|
-
case delegua_2.default.NÚMERO:
|
|
9229
|
-
const metodoDePrimitivaNumero = primitivas_numero_1.default[expressao.simbolo.lexema].implementacao;
|
|
9230
|
-
if (metodoDePrimitivaNumero) {
|
|
9231
|
-
return new metodo_primitiva_1.MetodoPrimitiva(objeto, metodoDePrimitivaNumero);
|
|
9232
|
-
}
|
|
9233
|
-
break;
|
|
9234
|
-
case delegua_2.default.TEXTO:
|
|
9235
|
-
const metodoDePrimitivaTexto = primitivas_texto_1.default[expressao.simbolo.lexema].implementacao;
|
|
9236
|
-
if (metodoDePrimitivaTexto) {
|
|
9237
|
-
return new metodo_primitiva_1.MetodoPrimitiva(objeto, metodoDePrimitivaTexto);
|
|
9238
|
-
}
|
|
9239
|
-
break;
|
|
9240
|
-
case delegua_2.default.VETOR:
|
|
9241
|
-
case delegua_2.default.VETOR_NUMERO:
|
|
9242
|
-
case delegua_2.default.VETOR_NÚMERO:
|
|
9243
|
-
case delegua_2.default.VETOR_TEXTO:
|
|
9244
|
-
const metodoDePrimitivaVetor = primitivas_vetor_1.default[expressao.simbolo.lexema].implementacao;
|
|
9245
|
-
if (metodoDePrimitivaVetor) {
|
|
9246
|
-
return new metodo_primitiva_1.MetodoPrimitiva(objeto, metodoDePrimitivaVetor);
|
|
9247
|
-
}
|
|
9248
|
-
break;
|
|
9249
|
-
}
|
|
9250
|
-
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método para objeto ou primitiva não encontrado: ${expressao.simbolo.lexema}.`, expressao.linha));
|
|
9225
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(expressao.simbolo, `Método ou propriedade para objeto não encontrado: ${expressao.simbolo.lexema}.`, expressao.linha));
|
|
9251
9226
|
}
|
|
9252
9227
|
visitarExpressaoIsto(expressao) {
|
|
9253
9228
|
return this.procurarVariavel(expressao.palavraChave);
|
|
@@ -9375,6 +9350,7 @@ class InterpretadorBase {
|
|
|
9375
9350
|
async executar(declaracao, mostrarResultado = false) {
|
|
9376
9351
|
const resultado = await declaracao.aceitar(this);
|
|
9377
9352
|
/* console.log("Resultado aceitar: " + resultado, this); */
|
|
9353
|
+
// TODO: Mover a lógica abaixo para `delegua-node`.
|
|
9378
9354
|
if (mostrarResultado) {
|
|
9379
9355
|
this.funcaoDeRetorno(this.paraTexto(resultado));
|
|
9380
9356
|
}
|
|
@@ -9470,7 +9446,7 @@ class InterpretadorBase {
|
|
|
9470
9446
|
exports.InterpretadorBase = InterpretadorBase;
|
|
9471
9447
|
|
|
9472
9448
|
}).call(this)}).call(this,require('_process'))
|
|
9473
|
-
},{"../avaliador-sintatico":8,"../bibliotecas/primitivas-dicionario":16,"../
|
|
9449
|
+
},{"../avaliador-sintatico":8,"../bibliotecas/primitivas-dicionario":16,"../construtos":42,"../espaco-variaveis":97,"../excecoes":99,"../inferenciador":105,"../lexador":152,"../quebras":159,"../tipos-de-dados/delegua":160,"../tipos-de-dados/primitivos":161,"../tipos-de-simbolos/delegua":163,"./comum":128,"./estruturas":134,"./estruturas/metodo-primitiva":135,"./pilha-escopos-execucao":143,"_process":383,"browser-process-hrtime":340}],141:[function(require,module,exports){
|
|
9474
9450
|
"use strict";
|
|
9475
9451
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9476
9452
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -10080,9 +10056,7 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
10080
10056
|
variavelObjeto = variavelObjeto.valor;
|
|
10081
10057
|
}
|
|
10082
10058
|
const objeto = variavelObjeto.hasOwnProperty('valor') ? variavelObjeto.valor : variavelObjeto;
|
|
10083
|
-
|
|
10084
|
-
// então testamos também o nome do construtor.
|
|
10085
|
-
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
10059
|
+
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
10086
10060
|
return objeto.obterMetodo(expressao.nomeMetodo) || null;
|
|
10087
10061
|
}
|
|
10088
10062
|
// Objeto simples do JavaScript, ou dicionário de Delégua.
|
|
@@ -10143,7 +10117,16 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
10143
10117
|
}
|
|
10144
10118
|
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Método para objeto ou primitiva não encontrado: ${expressao.nomeMetodo}.`, expressao.linha));
|
|
10145
10119
|
}
|
|
10146
|
-
|
|
10120
|
+
/**
|
|
10121
|
+
* Casos que ocorrem aqui:
|
|
10122
|
+
*
|
|
10123
|
+
* - Quando o método ou propriedade é ou 'qualquer', ou vetor
|
|
10124
|
+
* de 'qualquer' ('qualquer[]'), e uma primitiva é usada.
|
|
10125
|
+
* - Quando o objeto é uma classe definida em código.
|
|
10126
|
+
* @param {AcessoMetodoOuPropriedade} expressao A expressão de acesso a método ou propriedade.
|
|
10127
|
+
* @returns A primitiva encontrada.
|
|
10128
|
+
*/
|
|
10129
|
+
async visitarExpressaoAcessoMetodoOuPropriedade(expressao) {
|
|
10147
10130
|
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
10148
10131
|
// Este caso acontece quando há encadeamento de métodos.
|
|
10149
10132
|
// Por exemplo, `objeto1.metodo1().metodo2()`.
|
|
@@ -10153,34 +10136,16 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
10153
10136
|
variavelObjeto = variavelObjeto.valor;
|
|
10154
10137
|
}
|
|
10155
10138
|
const objeto = variavelObjeto.hasOwnProperty('valor') ? variavelObjeto.valor : variavelObjeto;
|
|
10156
|
-
|
|
10157
|
-
|
|
10158
|
-
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
10159
|
-
return objeto.obterMetodo(expressao.nomePropriedade) || null;
|
|
10139
|
+
if (objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
10140
|
+
return objeto.obter(expressao.simbolo);
|
|
10160
10141
|
}
|
|
10161
10142
|
// Objeto simples do JavaScript, ou dicionário de Delégua.
|
|
10162
10143
|
if (objeto.constructor === Object) {
|
|
10163
|
-
if (expressao.
|
|
10164
|
-
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.
|
|
10144
|
+
if (expressao.simbolo.lexema in primitivas_dicionario_1.default) {
|
|
10145
|
+
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.simbolo.lexema].implementacao;
|
|
10165
10146
|
return new estruturas_1.MetodoPrimitiva(objeto, metodoDePrimitivaDicionario);
|
|
10166
10147
|
}
|
|
10167
|
-
return objeto[expressao.
|
|
10168
|
-
}
|
|
10169
|
-
// Casos em que o objeto possui algum outro tipo que não o de objeto simples.
|
|
10170
|
-
// Normalmente executam quando uma biblioteca é importada, e estamos tentando
|
|
10171
|
-
// obter alguma propriedade ou método desse objeto.
|
|
10172
|
-
// Caso 1: Função tradicional do JavaScript.
|
|
10173
|
-
if (typeof objeto[expressao.nomePropriedade] === primitivos_1.default.FUNCAO) {
|
|
10174
|
-
return objeto[expressao.nomePropriedade];
|
|
10175
|
-
}
|
|
10176
|
-
// Caso 2: Objeto tradicional do JavaScript.
|
|
10177
|
-
if (typeof objeto[expressao.nomePropriedade] === primitivos_1.default.OBJETO) {
|
|
10178
|
-
return objeto[expressao.nomePropriedade];
|
|
10179
|
-
}
|
|
10180
|
-
// A partir daqui, presume-se que o objeto é uma das estruturas
|
|
10181
|
-
// de Delégua.
|
|
10182
|
-
if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
10183
|
-
return objeto.componentes[expressao.nomePropriedade] || null;
|
|
10148
|
+
return objeto[expressao.simbolo.lexema] || null;
|
|
10184
10149
|
}
|
|
10185
10150
|
let tipoObjeto = variavelObjeto.tipo;
|
|
10186
10151
|
if (tipoObjeto === null || tipoObjeto === undefined) {
|
|
@@ -10193,28 +10158,76 @@ class Interpretador extends interpretador_base_1.InterpretadorBase {
|
|
|
10193
10158
|
case delegua_1.default.INTEIRO:
|
|
10194
10159
|
case delegua_1.default.NUMERO:
|
|
10195
10160
|
case delegua_1.default.NÚMERO:
|
|
10196
|
-
const metodoDePrimitivaNumero = primitivas_numero_1.default[expressao.
|
|
10161
|
+
const metodoDePrimitivaNumero = primitivas_numero_1.default[expressao.simbolo.lexema].implementacao;
|
|
10197
10162
|
if (metodoDePrimitivaNumero) {
|
|
10198
10163
|
return new estruturas_1.MetodoPrimitiva(objeto, metodoDePrimitivaNumero);
|
|
10199
10164
|
}
|
|
10200
10165
|
break;
|
|
10201
10166
|
case delegua_1.default.TEXTO:
|
|
10202
|
-
const metodoDePrimitivaTexto = primitivas_texto_1.default[expressao.
|
|
10167
|
+
const metodoDePrimitivaTexto = primitivas_texto_1.default[expressao.simbolo.lexema].implementacao;
|
|
10203
10168
|
if (metodoDePrimitivaTexto) {
|
|
10204
10169
|
return new estruturas_1.MetodoPrimitiva(objeto, metodoDePrimitivaTexto);
|
|
10205
10170
|
}
|
|
10206
10171
|
break;
|
|
10207
10172
|
case delegua_1.default.VETOR:
|
|
10173
|
+
case delegua_1.default.VETOR_INTEIRO:
|
|
10174
|
+
case delegua_1.default.VETOR_LOGICO:
|
|
10175
|
+
case delegua_1.default.VETOR_LÓGICO:
|
|
10208
10176
|
case delegua_1.default.VETOR_NUMERO:
|
|
10209
10177
|
case delegua_1.default.VETOR_NÚMERO:
|
|
10178
|
+
case delegua_1.default.VETOR_QUALQUER:
|
|
10210
10179
|
case delegua_1.default.VETOR_TEXTO:
|
|
10211
|
-
const metodoDePrimitivaVetor = primitivas_vetor_1.default[expressao.
|
|
10180
|
+
const metodoDePrimitivaVetor = primitivas_vetor_1.default[expressao.simbolo.lexema].implementacao;
|
|
10212
10181
|
if (metodoDePrimitivaVetor) {
|
|
10213
10182
|
return new estruturas_1.MetodoPrimitiva(objeto, metodoDePrimitivaVetor);
|
|
10214
10183
|
}
|
|
10215
10184
|
break;
|
|
10216
10185
|
}
|
|
10217
|
-
|
|
10186
|
+
}
|
|
10187
|
+
async visitarExpressaoAcessoPropriedade(expressao) {
|
|
10188
|
+
let variavelObjeto = await this.avaliar(expressao.objeto);
|
|
10189
|
+
// Este caso acontece quando há encadeamento de métodos.
|
|
10190
|
+
// Por exemplo, `objeto1.metodo1().metodo2()`.
|
|
10191
|
+
// Como `RetornoQuebra` também possui `valor`, precisamos extrair o
|
|
10192
|
+
// valor dele primeiro.
|
|
10193
|
+
if (variavelObjeto.constructor.name === 'RetornoQuebra') {
|
|
10194
|
+
variavelObjeto = variavelObjeto.valor;
|
|
10195
|
+
}
|
|
10196
|
+
const objeto = variavelObjeto.hasOwnProperty('valor') ? variavelObjeto.valor : variavelObjeto;
|
|
10197
|
+
// Outro caso que `instanceof` simplesmente não funciona para casos em Liquido,
|
|
10198
|
+
// então testamos também o nome do construtor.
|
|
10199
|
+
if (objeto instanceof estruturas_1.ObjetoDeleguaClasse || objeto.constructor.name === 'ObjetoDeleguaClasse') {
|
|
10200
|
+
return objeto.obterMetodo(expressao.nomePropriedade) || null;
|
|
10201
|
+
}
|
|
10202
|
+
// Objeto simples do JavaScript, ou dicionário de Delégua.
|
|
10203
|
+
if (objeto.constructor === Object) {
|
|
10204
|
+
if (expressao.nomePropriedade in primitivas_dicionario_1.default) {
|
|
10205
|
+
const metodoDePrimitivaDicionario = primitivas_dicionario_1.default[expressao.nomePropriedade].implementacao;
|
|
10206
|
+
return new estruturas_1.MetodoPrimitiva(objeto, metodoDePrimitivaDicionario);
|
|
10207
|
+
}
|
|
10208
|
+
return objeto[expressao.nomePropriedade] || null;
|
|
10209
|
+
}
|
|
10210
|
+
// Casos em que o objeto possui algum outro tipo que não o de objeto simples.
|
|
10211
|
+
// Normalmente executam quando uma biblioteca é importada, e estamos tentando
|
|
10212
|
+
// obter alguma propriedade ou método desse objeto.
|
|
10213
|
+
// Caso 1: Função tradicional do JavaScript.
|
|
10214
|
+
if (typeof objeto[expressao.nomePropriedade] === primitivos_1.default.FUNCAO) {
|
|
10215
|
+
return objeto[expressao.nomePropriedade];
|
|
10216
|
+
}
|
|
10217
|
+
// Caso 2: Objeto tradicional do JavaScript.
|
|
10218
|
+
if (typeof objeto[expressao.nomePropriedade] === primitivos_1.default.OBJETO) {
|
|
10219
|
+
return objeto[expressao.nomePropriedade];
|
|
10220
|
+
}
|
|
10221
|
+
// A partir daqui, presume-se que o objeto é uma das estruturas
|
|
10222
|
+
// de Delégua.
|
|
10223
|
+
if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
10224
|
+
return objeto.componentes[expressao.nomePropriedade] || null;
|
|
10225
|
+
}
|
|
10226
|
+
let tipoObjeto = variavelObjeto.tipo;
|
|
10227
|
+
if (tipoObjeto === null || tipoObjeto === undefined) {
|
|
10228
|
+
tipoObjeto = (0, inferenciador_1.inferirTipoVariavel)(variavelObjeto);
|
|
10229
|
+
}
|
|
10230
|
+
return Promise.reject(new excecoes_1.ErroEmTempoDeExecucao(null, `Propriedade para objeto ou primitiva não encontrado: ${expressao.nomePropriedade}.`, expressao.linha));
|
|
10218
10231
|
}
|
|
10219
10232
|
async visitarExpressaoArgumentoReferenciaFuncao(expressao) {
|
|
10220
10233
|
const deleguaFuncao = this.pilhaEscoposExecucao.obterVariavelPorNome(expressao.simboloFuncao.lexema);
|
|
@@ -12687,8 +12700,12 @@ exports.default = {
|
|
|
12687
12700
|
TUPLA: 'tupla',
|
|
12688
12701
|
VAZIO: 'vazio',
|
|
12689
12702
|
VETOR: 'vetor',
|
|
12703
|
+
VETOR_INTEIRO: 'inteiro[]',
|
|
12704
|
+
VETOR_LOGICO: 'logico[]',
|
|
12705
|
+
VETOR_LÓGICO: 'lógico[]',
|
|
12690
12706
|
VETOR_NUMERO: 'numero[]',
|
|
12691
12707
|
VETOR_NÚMERO: 'número[]',
|
|
12708
|
+
VETOR_QUALQUER: 'qualquer[]',
|
|
12692
12709
|
VETOR_TEXTO: 'texto[]',
|
|
12693
12710
|
};
|
|
12694
12711
|
|