@designliquido/delegua 0.38.0 → 0.38.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/analisador-semantico/analisador-semantico.d.ts.map +1 -1
- package/analisador-semantico/analisador-semantico.js +11 -21
- package/analisador-semantico/analisador-semantico.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.js +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts +8 -0
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +109 -14
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/informacao-escopo.d.ts +7 -0
- package/avaliador-sintatico/informacao-escopo.d.ts.map +1 -0
- package/avaliador-sintatico/informacao-escopo.js +10 -0
- package/avaliador-sintatico/informacao-escopo.js.map +1 -0
- package/avaliador-sintatico/pilha-escopos.d.ts +13 -0
- package/avaliador-sintatico/pilha-escopos.d.ts.map +1 -0
- package/avaliador-sintatico/pilha-escopos.js +39 -0
- package/avaliador-sintatico/pilha-escopos.js.map +1 -0
- package/avaliador-sintatico/retornos/retorno-primario.d.ts +2 -2
- package/avaliador-sintatico/retornos/retorno-primario.d.ts.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/binario.d.ts +3 -1
- package/construtos/binario.d.ts.map +1 -1
- package/construtos/binario.js +16 -0
- package/construtos/binario.js.map +1 -1
- package/construtos/construto.d.ts +1 -0
- package/construtos/construto.d.ts.map +1 -1
- package/construtos/variavel.d.ts +2 -1
- package/construtos/variavel.d.ts.map +1 -1
- package/construtos/variavel.js +2 -1
- package/construtos/variavel.js.map +1 -1
- package/inferenciador.d.ts.map +1 -1
- package/inferenciador.js +26 -17
- package/inferenciador.js.map +1 -1
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +8 -7
- package/interpretador/interpretador-base.js.map +1 -1
- package/package.json +1 -1
- package/tipos-de-dados/delegua.d.ts +3 -0
- package/tipos-de-dados/delegua.d.ts.map +1 -1
- package/tipos-de-dados/delegua.js +3 -0
- package/tipos-de-dados/delegua.js.map +1 -1
- package/umd/delegua.js +608 -432
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analisador-semantico.d.ts","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,QAAQ,EAER,OAAO,EAKP,MAAM,EAGT,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,KAAK,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,gBAAgB,EAEhB,OAAO,EACP,GAAG,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAyB,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,2BAA2B;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;CACf;AAED,UAAU,yBAAyB;IAC/B,KAAK,EAAE,GAAG,CAAC;CACd;AAED,qBAAa,mBAAoB,SAAQ,uBAAuB;IAC5D,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE;QAAE,CAAC,YAAY,EAAE,MAAM,GAAG,2BAA2B,CAAA;KAAE,CAAC;IACnE,OAAO,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,yBAAyB,CAAA;KAAE,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,8BAA8B,EAAE,CAAC;;IAW/C,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUvD,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUxD,sBAAsB,CAAC,UAAU,EAAE,GAAG,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"analisador-semantico.d.ts","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,13 +41,13 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
41
41
|
if (declaracao.tipo === 'inteiro[]') {
|
|
42
42
|
const v = vetor.valores.find((v) => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'number');
|
|
43
43
|
if (v) {
|
|
44
|
-
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de
|
|
44
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um valor do tipo vetor de inteiro ou real. Atual: ${vetor.tipo}.`);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
if (declaracao.tipo === 'texto[]') {
|
|
48
48
|
const v = vetor.valores.find((v) => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'string');
|
|
49
49
|
if (v) {
|
|
50
|
-
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de
|
|
50
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um valor do tipo vetor de texto. Atual: ${vetor.tipo}.`);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -57,17 +57,14 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
57
57
|
}
|
|
58
58
|
if (declaracao.inicializador instanceof construtos_1.Literal) {
|
|
59
59
|
const literal = declaracao.inicializador;
|
|
60
|
-
if (declaracao.tipo === 'texto') {
|
|
61
|
-
|
|
62
|
-
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um 'texto'.`);
|
|
63
|
-
}
|
|
60
|
+
if (declaracao.tipo === 'texto' && literal.tipo !== 'texto') {
|
|
61
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um valor do tipo texto. Atual: ${literal.tipo}.`);
|
|
64
62
|
}
|
|
65
|
-
if (['inteiro', 'real'].includes(declaracao.tipo)) {
|
|
66
|
-
|
|
67
|
-
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um 'número'.`);
|
|
68
|
-
}
|
|
63
|
+
if (['inteiro', 'número', 'real'].includes(declaracao.tipo) && !['inteiro', 'número', 'real'].includes(literal.tipo)) {
|
|
64
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um valor do tipo número. Atual: ${literal.tipo}.`);
|
|
69
65
|
}
|
|
70
66
|
}
|
|
67
|
+
// TODO: Estudar remoção.
|
|
71
68
|
if (declaracao.inicializador instanceof declaracoes_1.Leia) {
|
|
72
69
|
if (declaracao.tipo !== 'texto') {
|
|
73
70
|
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', Leia só pode receber tipo 'texto'.`);
|
|
@@ -123,7 +120,7 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
123
120
|
// TODO: `argumento` pode ser Literal (tipo já resolvido) ou variável (tipo inferido em outra etapa).
|
|
124
121
|
const argumento = expressao.argumentos[indice];
|
|
125
122
|
if (argumento) {
|
|
126
|
-
if (parametro.tipoDado === 'texto' &&
|
|
123
|
+
if (parametro.tipoDado === 'texto' && argumento.tipo !== 'texto') {
|
|
127
124
|
this.erro(expressao.entidadeChamada.simbolo, `O valor passado para o parâmetro '${parametro.nome.lexema}' (${parametro.tipoDado}) é diferente do esperado pela função (${argumento.tipo}).`);
|
|
128
125
|
}
|
|
129
126
|
else if (['inteiro', 'número', 'real'].includes(parametro.tipoDado)) {
|
|
@@ -368,7 +365,7 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
368
365
|
if (declaracao.inicializador instanceof construtos_1.FuncaoConstruto) {
|
|
369
366
|
const funcao = declaracao.inicializador;
|
|
370
367
|
if (funcao.parametros.length >= 255) {
|
|
371
|
-
this.erro(declaracao.simbolo, '
|
|
368
|
+
this.erro(declaracao.simbolo, 'Função não pode ter mais de 255 parâmetros.');
|
|
372
369
|
}
|
|
373
370
|
}
|
|
374
371
|
this.variaveis[declaracao.simbolo.lexema] = {
|
|
@@ -386,18 +383,11 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
386
383
|
return Promise.resolve(null);
|
|
387
384
|
}
|
|
388
385
|
visitarDeclaracaoDefinicaoFuncao(declaracao) {
|
|
389
|
-
for (let parametro of declaracao.funcao.parametros) {
|
|
390
|
-
// TODO: Repensar.
|
|
391
|
-
/* if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado.tipo) {
|
|
392
|
-
this.erro(declaracao.simbolo, `O tipo '${parametro.tipoDado.tipoInvalido}' não é válido.`);
|
|
393
|
-
} */
|
|
394
|
-
console.log(parametro);
|
|
395
|
-
}
|
|
396
386
|
if (declaracao.funcao.tipoRetorno === undefined) {
|
|
397
387
|
this.erro(declaracao.simbolo, `Declaração de retorno da função é inválido.`);
|
|
398
388
|
}
|
|
399
389
|
if (declaracao.funcao.parametros.length >= 255) {
|
|
400
|
-
this.erro(declaracao.simbolo, '
|
|
390
|
+
this.erro(declaracao.simbolo, 'Função não pode ter mais de 255 parâmetros.');
|
|
401
391
|
}
|
|
402
392
|
let tipoRetornoFuncao = declaracao.funcao.tipoRetorno;
|
|
403
393
|
if (tipoRetornoFuncao) {
|
|
@@ -421,7 +411,7 @@ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemantic
|
|
|
421
411
|
}
|
|
422
412
|
}
|
|
423
413
|
else {
|
|
424
|
-
if (
|
|
414
|
+
if (!['vazio', 'qualquer'].includes(tipoRetornoFuncao)) {
|
|
425
415
|
this.erro(declaracao.simbolo, `Esperado retorno do tipo '${tipoRetornoFuncao}' dentro da função.`);
|
|
426
416
|
}
|
|
427
417
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analisador-semantico.js","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":";;;AAAA,8CAYuB;AACvB,gDAYwB;AAExB,+CAA4F;AAI5F,2EAAsE;AACtE,uDAAmD;AAanD,MAAa,mBAAoB,SAAQ,mDAAuB;IAO5D;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,OAAyB,EAAE,QAAgB;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,6BAAqB,CAAC,IAAI;SACzC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAyB,EAAE,QAAgB;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,6BAAqB,CAAC,KAAK;SAC1C,CAAC,CAAC;IACP,CAAC;IAED,sBAAsB,CAAC,UAAuB;QAC1C,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5E,IAAI,UAAU,CAAC,aAAa,YAAY,kBAAK,EAAE,CAAC;oBAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,aAAsB,CAAC;oBAChD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAClC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAA,KAAK,QAAQ,CAAC,CAAC;wBAClE,IAAI,CAAC,EAAE,CAAC;4BACJ,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,iDAAiD,CAC1G,CAAC;wBACN,CAAC;oBACL,CAAC;oBACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAChC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAA,KAAK,QAAQ,CAAC,CAAC;wBAClE,IAAI,CAAC,EAAE,CAAC;4BACJ,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,oCAAoC,CAC7F,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,sCAAsC,CAC/F,CAAC;gBACN,CAAC;YACL,CAAC;YACD,IAAI,UAAU,CAAC,aAAa,YAAY,oBAAO,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,aAAwB,CAAC;gBACpD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC9B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACpC,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,2BAA2B,CACpF,CAAC;oBACN,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACpC,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,4BAA4B,CACrF,CAAC;oBACN,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,UAAU,CAAC,aAAa,YAAY,kBAAI,EAAE,CAAC;gBAC3C,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,uCAAuC,CAChG,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,sBAAsB,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEO,eAAe,CAAC,KAAgB;QACpC,IAAI,KAAK,YAAY,oBAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,KAAK,YAAY,wBAAW,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,YAAY,qBAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAEO,eAAe,CAAC,KAAgB;QACpC,IAAI,KAAK,YAAY,oBAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,KAAK,YAAY,wBAAW,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,YAAY,qBAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,SAAkB;QACxC,IAAI,SAAS,CAAC,eAAe,YAAY,qBAAQ,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,eAA2B,CAAC;YACvD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CACL,SAAS,CAAC,eAAe,CAAC,OAAO,EACjC,sBAAsB,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,eAAe,CAChF,CAAC;gBACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAwB,CAAC;YACtD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3D,IAAI,CAAC,IAAI,CACL,SAAS,CAAC,eAAe,CAAC,OAAO,EACjC,WAAW,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,UAAU,CAAC,MAAM,uBAAuB,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAC/I,CAAC;YACN,CAAC;YAED,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1D,qGAAqG;gBACrG,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAQ,CAAC;gBACtD,IAAI,SAAS,EAAE,CAAC;oBACZ,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACxE,IAAI,CAAC,IAAI,CACL,SAAS,CAAC,eAAe,CAAC,OAAO,EACjC,qCAAqC,SAAS,CAAC,IAAI,CAAC,MAAM,MAAM,SAAS,CAAC,QAAQ,0CAA0C,SAAS,CAAC,IAAI,IAAI,CACjJ,CAAC;oBACN,CAAC;yBAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACpE,qFAAqF;wBACrF,2DAA2D;wBAC3D,oCAAoC;wBACpC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1D,IAAI,CAAC,IAAI,CACL,SAAS,CAAC,eAAe,CAAC,OAAO,EACjC,qCAAqC,SAAS,CAAC,IAAI,CAAC,MAAM,MAAM,SAAS,CAAC,QAAQ,0CAA0C,SAAS,CAAC,IAAI,IAAI,CACjJ,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,SAAmB;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CACL,SAAS,CAAC,OAAO,EACjB,YAAY,SAAS,CAAC,OAAO,CAAC,MAAM,0CAA0C,CACjF,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,SAAS,CAAC,KAAK,YAAY,oBAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,uCAAuC,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAClG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,SAAS,CAAC,KAAK,YAAY,kBAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,uCAAuC,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAClG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,SAAS,CAAC,KAAK,YAAY,oBAAO,EAAE,CAAC;gBACrC,IAAI,YAAY,GAAG,OAAQ,SAAS,CAAC,KAAiB,CAAC,KAAK,CAAC;gBAC7D,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;4BACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC7B,CAAC;oBACL,CAAC;oBACD,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC7B,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,SAAS,CAAC,KAAK,YAAY,kBAAK,EAAE,CAAC;gBACnC,IAAI,OAAO,GAAI,SAAS,CAAC,KAAe,CAAC,OAAO,CAAC;gBACjD,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;4BACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC7B,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;4BACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC7B,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,SAAS,CAAC,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC;YAC/F,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YACrE,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,UAAqB;QACpD,OAAO,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,wBAAwB,CAAC,UAAmB;;QACxC,MAAM,sBAAsB,GAAG,UAAU,CAAC,sBAA6B,CAAC;QACxE,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,MAAA,sBAAsB,CAAC,OAAO,0CAAE,MAAM,CAAC,0CAAE,KAAK,CAAC;QAC5E,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;QAC1B,KAAK,IAAI,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtC,KAAK,IAAI,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,KAAK,YAAY,kBAAI,IAAI,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE,CAAC;oBAC/D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC,KAAK,8CAA8C,CAAC,CAAC;oBAC3F,SAAS;gBACb,CAAC;gBACD,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAI,CAAC,IAAI,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAA,KAAK,IAAI,EAAE,CAAC;oBAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC,KAAK,8CAA8C,CAAC,CAAC;gBAC/F,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,UAAoB;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,iBAAiB,CAAC,QAAmB;QACzC,IAAI,QAAQ,YAAY,wBAAW,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,YAAY,qBAAQ,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,QAAQ,YAAY,oBAAO,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,QAAQ,YAAY,mBAAM,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,QAAQ,YAAY,oBAAO,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,wBAAwB,CAAC,QAAkB;QAC/C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,IACI,kBAAkB;YAClB,CAAC,CAAC,kBAAkB,CAAC,KAAK,YAAY,oBAAO,CAAC;YAC9C,OAAO,kBAAkB,CAAC,KAAK,KAAK,SAAS,EAC/C,CAAC;YACC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,mDAAmD,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,iBAAiB,CAAC,QAAkB;QACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,QAAQ,CAAC,OAAO,CAAC,MAAM,0CAA0C,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,gBAAgB,CAAC,OAAgB;QACrC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,wBAAwB,CAAC,OAAgB;;QAC7C,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5F,IAAI,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,IAAI,OAAO,CAAC,OAAO,YAAY,qBAAQ,IAAI,OAAO,CAAC,QAAQ,YAAY,qBAAQ,EAAE,CAAC;gBAC9E,MAAM,WAAW,GAAG,OAAO,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,0CAAE,KAAK,CAAA,CAAC;gBACjF,MAAM,YAAY,GAAG,OAAO,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,0CAAE,KAAK,CAAA,CAAC;gBACnF,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;gBACxE,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,QAAQ,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBACvC,KAAK,UAAU;oBACX,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAmB,CAAC;oBAC3D,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,0CAAE,KAAK,MAAK,CAAC,EAAE,CAAC;wBACrE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;oBACrD,CAAC;oBACD,MAAM;YACd,CAAC;QACL,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,IAAe;QACxC,IAAI,IAAI,YAAY,qBAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,0CAA0C,CAAC,CAAC;YACnG,OAAO;QACX,CAAC;QACD,IAAI,IAAI,YAAY,oBAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO;QACX,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,KAAa;QACjC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,gBAAgB,CAAC,OAAgB;QACrC,IAAI,aAAa,GAAG,OAAO,CAAC,eAA2B,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,aAAa,CAAC,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;QACxG,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,IAAS;QACjC,IAAI,IAAI,YAAY,qBAAQ,EAAE,CAAC;YAC3B,IAAI,QAAQ,GAAG,IAAgB,CAAC;YAChC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,UAAmB;;QACxC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;YAC1C,MAAM,OAAO,GAAyB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YACvG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yDAAyD,CAAC,CAAC;YAC9E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,qBAAQ,CAAC,CAAC;QAEjF,KAAK,IAAI,QAAQ,IAAI,SAAuB,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,QAAQ,CAAC,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,0CAAE,KAAK,MAAK,SAAS,EAAE,CAAC;gBAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,QAAQ,CAAC,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAChG,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,UAAiB;QACpC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,mCAAmC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;gBACxC,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK;aACxC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,UAAiB;QAC1C,IAAI,UAAU,CAAC,aAAa,YAAY,oBAAO,EAAE,CAAC;YAC9C,oDAAoD;YACpD,MAAM,OAAO,GAAG,UAAU,CAAC,aAAwB,CAAC;YACpD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5C,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAEnD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,+CAA+C,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,oBAAoB,CAAC,UAAe;QAChC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,UAAU,CAAC,aAAa,YAAY,4BAAe,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC;YACxC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;YACxC,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EACD,UAAU,CAAC,aAAa,KAAK,IAAI;gBAC7B,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS;oBAC1C,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;oBAChC,CAAC,CAAC,UAAU,CAAC,aAAa;gBAC9B,CAAC,CAAC,SAAS;SACtB,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,wBAAwB,CAAC,UAAmB;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,gCAAgC,CAAC,UAA4B;QACzD,KAAK,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,kBAAkB;YAClB;;gBAEI;YACJ,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,6CAA6C,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QACtD,IAAI,iBAAiB,EAAE,CAAC;YACpB,IAAI,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,qBAAO,CAAY,CAAC;YAC/F,IAAI,mBAAmB,EAAE,CAAC;gBACtB,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,+CAA+C,CAAC,CAAC;gBACnF,CAAC;gBAED,MAAM,SAAS,GAAG,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzD,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBACzB,IAAI,iBAAiB,IAAI,OAAO,EAAE,CAAC;4BAC/B,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,iBAAiB,qBAAqB,CACtE,CAAC;wBACN,CAAC;oBACL,CAAC;oBACD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBACzB,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BACnD,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,iBAAiB,qBAAqB,CACtE,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,6BAA6B,iBAAiB,qBAAqB,CAAC,CAAC;gBACvG,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;YACtC,KAAK,EAAE,UAAU,CAAC,MAAM;SAC3B,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,WAAyB;QAC9B,8CAA8C;QAC9C,iCAAiC;QACjC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,OAAO,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,YAAY;SACJ,CAAC;IACpC,CAAC;CACJ;AAxhBD,kDAwhBC"}
|
|
1
|
+
{"version":3,"file":"analisador-semantico.js","sourceRoot":"","sources":["../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,7 +164,7 @@ class AvaliadorSintaticoBase {
|
|
|
164
164
|
const parametros = [];
|
|
165
165
|
do {
|
|
166
166
|
if (parametros.length >= 255) {
|
|
167
|
-
this.erro(this.simbolos[this.atual], '
|
|
167
|
+
this.erro(this.simbolos[this.atual], 'Função não pode ter mais de 255 parâmetros.');
|
|
168
168
|
}
|
|
169
169
|
const parametro = {};
|
|
170
170
|
if (this.simbolos[this.atual].tipo === comum_1.default.MULTIPLICACAO) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { RetornoAvaliadorSintatico } from '../interfaces/retornos/retorno-avalia
|
|
|
6
6
|
import { RetornoLexador } from '../interfaces/retornos/retorno-lexador';
|
|
7
7
|
import { RetornoDeclaracao } from './retornos';
|
|
8
8
|
import { AvaliadorSintaticoBase } from './avaliador-sintatico-base';
|
|
9
|
+
import { PilhaEscopos } from './pilha-escopos';
|
|
9
10
|
/**
|
|
10
11
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
11
12
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -18,6 +19,12 @@ export declare class AvaliadorSintatico extends AvaliadorSintaticoBase implement
|
|
|
18
19
|
tiposDefinidosEmCodigo: {
|
|
19
20
|
[key: string]: Declaracao;
|
|
20
21
|
};
|
|
22
|
+
pilhaEscopos: PilhaEscopos;
|
|
23
|
+
tiposDeFerramentasExternas: {
|
|
24
|
+
[key: string]: {
|
|
25
|
+
[key: string]: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
21
28
|
hashArquivo: number;
|
|
22
29
|
atual: number;
|
|
23
30
|
blocos: number;
|
|
@@ -116,6 +123,7 @@ export declare class AvaliadorSintatico extends AvaliadorSintaticoBase implement
|
|
|
116
123
|
* @returns Sempre retorna `void`.
|
|
117
124
|
*/
|
|
118
125
|
protected sincronizar(): void;
|
|
126
|
+
protected inicializarPilhaEscopos(): void;
|
|
119
127
|
analisar(retornoLexador: RetornoLexador<SimboloInterface>, hashArquivo: number): RetornoAvaliadorSintatico<Declaracao>;
|
|
120
128
|
}
|
|
121
129
|
//# sourceMappingURL=avaliador-sintatico.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"AAIA,OAAO,EAQH,UAAU,EACV,SAAS,EACT,SAAS,EAIT,eAAe,EASlB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAElG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAEH,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EAER,OAAO,EACP,EAAE,EACF,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAGxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;;;GAIG;AACH,qBAAa,kBACT,SAAQ,sBACR,YAAW,2BAA2B,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAEpE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,sBAAsB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IACtD,YAAY,EAAE,YAAY,CAAC;IAC3B,0BAA0B,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;IAErE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;gBAET,WAAW,UAAQ;IAY/B,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAmCtC,QAAQ,IAAI,SAAS;IAuNrB,MAAM,IAAI,SAAS;IA2BnB,MAAM,IAAI,SAAS;IAkBnB,WAAW,IAAI,SAAS;IAuBjC;;;;OAIG;IACM,iBAAiB,IAAI,SAAS;IAmB9B,QAAQ,IAAI,SAAS;IAYrB,IAAI,IAAI,SAAS;IAYjB,KAAK,IAAI,SAAS;IAYlB,QAAQ,IAAI,SAAS;IAmBrB,mBAAmB,IAAI,SAAS;IAYhC,EAAE,IAAI,SAAS;IAYf,CAAC,IAAI,SAAS;IAYvB;;;OAGG;IACM,QAAQ,IAAI,SAAS;IAoDrB,SAAS,IAAI,SAAS;IAKtB,WAAW,IAAI,KAAK,CAAC,iBAAiB,CAAC;IAqBvC,kBAAkB,IAAI,QAAQ;IAa9B,iBAAiB,IAAI,OAAO;IAqBrC,SAAS,CAAC,mBAAmB,IAAI,SAAS;IAY1C,SAAS,CAAC,8BAA8B,IAAI,UAAU;IAWtD,SAAS,CAAC,4BAA4B,IAAI,UAAU;IAK3C,kBAAkB,IAAI,QAAQ;IAU9B,iBAAiB,IAAI,OAAO;IAuErC,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAK3B,eAAe,IAAI,KAAK;IAcxB,kBAAkB,IAAI,QAAQ;IAOvC;;;OAGG;IACM,cAAc,IAAI,IAAI;IAkBtB,cAAc,IAAI,IAAI,GAAG,QAAQ;IAe1C,SAAS,CAAC,kBAAkB,CAAC,WAAW,EAAE,gBAAgB,GAAG,QAAQ;IA6BrE,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAwC/D,iBAAiB,IAAI,OAAO;IA4B5B,YAAY,IAAI,EAAE;IAalB,gBAAgB,IAAI,MAAM;IAU1B,eAAe,IAAI,KAAK;IA4CjC,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAsCnC;;;;;;;OAOG;IACH,SAAS,CAAC,kBAAkB,IAAI,GAAG;IA4EnC,SAAS,CAAC,mBAAmB,IAAI,SAAS;IA+C1C,SAAS,CAAC,iCAAiC,IAAI,GAAG,EAAE;IA8BpD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,GAAG,EAAE;IAyExC,SAAS,CAAC,kCAAkC,IAAI,KAAK,EAAE;IA8BvD;;;OAGG;IACH,sBAAsB,IAAI,KAAK,EAAE;IAsDjC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAuBhD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB,EAAE;IAiC9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IA2B5C,kBAAkB,IAAI,MAAM;IA0DrC;;;;;;;;;;;OAWG;IACM,6BAA6B,IAAI,iBAAiB;IA2B3D;;;;OAIG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAuB7B,SAAS,CAAC,uBAAuB;IAwBjC,QAAQ,CACJ,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAChD,WAAW,EAAE,MAAM,GACpB,yBAAyB,CAAC,UAAU,CAAC;CAiC3C"}
|
|
@@ -14,6 +14,8 @@ const declaracoes_1 = require("../declaracoes");
|
|
|
14
14
|
const lexador_1 = require("../lexador");
|
|
15
15
|
const avaliador_sintatico_base_1 = require("./avaliador-sintatico-base");
|
|
16
16
|
const inferenciador_1 = require("../inferenciador");
|
|
17
|
+
const pilha_escopos_1 = require("./pilha-escopos");
|
|
18
|
+
const informacao_escopo_1 = require("./informacao-escopo");
|
|
17
19
|
/**
|
|
18
20
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
19
21
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -28,6 +30,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
28
30
|
this.erros = [];
|
|
29
31
|
this.performance = performance;
|
|
30
32
|
this.tiposDefinidosEmCodigo = {};
|
|
33
|
+
this.tiposDeFerramentasExternas = {};
|
|
34
|
+
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
31
35
|
}
|
|
32
36
|
verificarDefinicaoTipoAtual() {
|
|
33
37
|
const tipos = [...Object.values(delegua_1.default)];
|
|
@@ -77,7 +81,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
77
81
|
this.avancarEDevolverAnterior();
|
|
78
82
|
valores = [];
|
|
79
83
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.COLCHETE_DIREITO)) {
|
|
80
|
-
return new construtos_1.Vetor(this.hashArquivo, Number(simboloAtual.linha), []);
|
|
84
|
+
return new construtos_1.Vetor(this.hashArquivo, Number(simboloAtual.linha), [], 0, 'qualquer');
|
|
81
85
|
}
|
|
82
86
|
while (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.COLCHETE_DIREITO)) {
|
|
83
87
|
let valor = null;
|
|
@@ -98,7 +102,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
98
102
|
this.consumir(delegua_2.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
99
103
|
}
|
|
100
104
|
}
|
|
101
|
-
|
|
105
|
+
const tipoVetor = (0, inferenciador_1.inferirTipoVariavel)(valores);
|
|
106
|
+
return new construtos_1.Vetor(this.hashArquivo, Number(simboloAtual.linha), valores, valores.length, tipoVetor);
|
|
102
107
|
case delegua_2.default.FALSO:
|
|
103
108
|
this.avancarEDevolverAnterior();
|
|
104
109
|
return new construtos_1.Literal(this.hashArquivo, Number(simboloAtual.linha), false, 'lógico');
|
|
@@ -108,15 +113,22 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
108
113
|
return this.corpoDaFuncao(simboloFuncao.lexema);
|
|
109
114
|
case delegua_2.default.IDENTIFICADOR:
|
|
110
115
|
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
116
|
+
let tipoOperando;
|
|
117
|
+
if (simboloIdentificador.lexema in this.tiposDefinidosEmCodigo) {
|
|
118
|
+
tipoOperando = simboloIdentificador.lexema;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
tipoOperando = this.pilhaEscopos.obterTipoVariavelPorNome(simboloIdentificador.lexema);
|
|
122
|
+
}
|
|
111
123
|
// Se o próximo símbolo é um incremento ou um decremento,
|
|
112
124
|
// aqui deve retornar um unário correspondente.
|
|
113
125
|
// Caso contrário, apenas retornar um construto de variável.
|
|
114
126
|
if (this.simbolos[this.atual] &&
|
|
115
127
|
[delegua_2.default.INCREMENTAR, delegua_2.default.DECREMENTAR].includes(this.simbolos[this.atual].tipo)) {
|
|
116
128
|
const simboloIncrementoDecremento = this.avancarEDevolverAnterior();
|
|
117
|
-
return new construtos_1.Unario(this.hashArquivo, simboloIncrementoDecremento, new construtos_1.Variavel(this.hashArquivo, simboloIdentificador), 'DEPOIS');
|
|
129
|
+
return new construtos_1.Unario(this.hashArquivo, simboloIncrementoDecremento, new construtos_1.Variavel(this.hashArquivo, simboloIdentificador, tipoOperando), 'DEPOIS');
|
|
118
130
|
}
|
|
119
|
-
return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador);
|
|
131
|
+
return new construtos_1.Variavel(this.hashArquivo, simboloIdentificador, tipoOperando);
|
|
120
132
|
case delegua_2.default.IMPORTAR:
|
|
121
133
|
this.avancarEDevolverAnterior();
|
|
122
134
|
return this.declaracaoImportar();
|
|
@@ -267,7 +279,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
267
279
|
let expressao = this.bitOu();
|
|
268
280
|
while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.MAIOR, delegua_2.default.MAIOR_IGUAL, delegua_2.default.MENOR, delegua_2.default.MENOR_IGUAL)) {
|
|
269
281
|
const operador = this.simbolos[this.atual - 1];
|
|
270
|
-
const direito = this.bitOu();
|
|
282
|
+
const direito = this.bitOu();
|
|
271
283
|
expressao = new construtos_1.Binario(this.hashArquivo, expressao, operador, direito);
|
|
272
284
|
}
|
|
273
285
|
return expressao;
|
|
@@ -346,6 +358,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
346
358
|
return this.atribuir();
|
|
347
359
|
}
|
|
348
360
|
blocoEscopo() {
|
|
361
|
+
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
349
362
|
let declaracoes = [];
|
|
350
363
|
while (!this.verificarTipoSimboloAtual(delegua_2.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
|
|
351
364
|
const retornoDeclaracao = this.resolverDeclaracaoForaDeBloco();
|
|
@@ -357,6 +370,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
357
370
|
}
|
|
358
371
|
}
|
|
359
372
|
this.consumir(delegua_2.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
|
|
373
|
+
this.pilhaEscopos.removerUltimo();
|
|
360
374
|
this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
|
|
361
375
|
return declaracoes;
|
|
362
376
|
}
|
|
@@ -531,6 +545,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
531
545
|
throw this.erro(this.simbolos[this.atual], "Esperado palavras reservadas 'em' ou 'de' após variável de iteração em instrução 'para cada'.");
|
|
532
546
|
}
|
|
533
547
|
const vetor = this.expressao();
|
|
548
|
+
if (!vetor.hasOwnProperty('tipo')) {
|
|
549
|
+
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não parece possuir um tipo iterável.`);
|
|
550
|
+
}
|
|
551
|
+
const tipoVetor = vetor.tipo;
|
|
552
|
+
if (!(tipoVetor).endsWith('[]')) {
|
|
553
|
+
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
554
|
+
}
|
|
555
|
+
this.pilhaEscopos.definirTipoVariavel(nomeVariavelIteracao.lexema, tipoVetor.slice(0, -2));
|
|
534
556
|
const corpo = this.resolverDeclaracao();
|
|
535
557
|
return new declaracoes_1.ParaCada(this.hashArquivo, Number(simboloPara.linha), nomeVariavelIteracao.lexema, vetor, corpo);
|
|
536
558
|
}
|
|
@@ -747,6 +769,25 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
747
769
|
this.consumir(delegua_2.default.COMO, "Esperado palavra reservada 'como' após expressão de inicialização de variável, em declaração 'tendo'.");
|
|
748
770
|
const simboloNomeVariavel = this.consumir(delegua_2.default.IDENTIFICADOR, "Esperado nome do identificador em declaração 'tendo'.");
|
|
749
771
|
this.consumir(delegua_2.default.CHAVE_ESQUERDA, "Esperado chave esquerda para abertura de bloco em declaração 'tendo'.");
|
|
772
|
+
let tipoInicializacao = 'qualquer';
|
|
773
|
+
switch (expressaoInicializacao.constructor.name) {
|
|
774
|
+
case 'Chamada':
|
|
775
|
+
const construtoChamada = expressaoInicializacao;
|
|
776
|
+
switch (construtoChamada.entidadeChamada.constructor.name) {
|
|
777
|
+
case 'Variavel':
|
|
778
|
+
const entidadeChamadaVariavel = construtoChamada.entidadeChamada;
|
|
779
|
+
tipoInicializacao = entidadeChamadaVariavel.tipo;
|
|
780
|
+
break;
|
|
781
|
+
// TODO: Demais casos
|
|
782
|
+
default:
|
|
783
|
+
break;
|
|
784
|
+
}
|
|
785
|
+
break;
|
|
786
|
+
// TODO: Demais casos
|
|
787
|
+
default:
|
|
788
|
+
break;
|
|
789
|
+
}
|
|
790
|
+
this.pilhaEscopos.definirTipoVariavel(simboloNomeVariavel.lexema, tipoInicializacao);
|
|
750
791
|
const blocoCorpo = this.blocoEscopo();
|
|
751
792
|
return new declaracoes_1.TendoComo(simboloTendo.linha, simboloTendo.hashArquivo, simboloNomeVariavel, expressaoInicializacao, new declaracoes_1.Bloco(simboloTendo.linha, simboloTendo.hashArquivo, blocoCorpo));
|
|
752
793
|
}
|
|
@@ -758,10 +799,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
758
799
|
this.consumir(delegua_2.default.CHAVE_DIREITA, 'Esperado chave direita para concluir relação de variáveis a serem desestruturadas.');
|
|
759
800
|
this.consumir(delegua_2.default.IGUAL, 'Esperado igual após relação de propriedades da desestruturação.');
|
|
760
801
|
const inicializador = this.expressao();
|
|
761
|
-
// TODO: Para cada variável dos identificadores, emitir um `AcessoMetodoOuPropriedade` usando
|
|
762
|
-
// como prefixo o nome do inicializador, e o sufixo o nome de cada propriedade.
|
|
763
802
|
const retornos = [];
|
|
764
803
|
for (let identificador of identificadores) {
|
|
804
|
+
// TODO: Melhorar dicionário para intuir o tipo de cada propriedade.
|
|
805
|
+
this.pilhaEscopos.definirTipoVariavel(identificador.lexema, 'qualquer');
|
|
765
806
|
const declaracaoVar = new declaracoes_1.Var(identificador, new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, inicializador, identificador));
|
|
766
807
|
declaracaoVar.decoradores = Array.from(this.pilhaDecoradores);
|
|
767
808
|
retornos.push(declaracaoVar);
|
|
@@ -790,6 +831,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
790
831
|
if (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.IGUAL)) {
|
|
791
832
|
// Inicialização de variáveis sem valor.
|
|
792
833
|
for (let identificador of identificadores.values()) {
|
|
834
|
+
this.pilhaEscopos.definirTipoVariavel(identificador.lexema, tipo);
|
|
793
835
|
retorno.push(new declaracoes_1.Var(identificador, null, tipo, Array.from(this.pilhaDecoradores)));
|
|
794
836
|
}
|
|
795
837
|
this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
|
|
@@ -804,7 +846,27 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
804
846
|
throw this.erro(this.simbolos[this.atual], 'Quantidade de identificadores à esquerda do igual é diferente da quantidade de valores à direita.');
|
|
805
847
|
}
|
|
806
848
|
for (let [indice, identificador] of identificadores.entries()) {
|
|
807
|
-
tipo
|
|
849
|
+
// Se tipo ainda não foi definido, infere.
|
|
850
|
+
if (!tipo) {
|
|
851
|
+
switch (inicializadores[indice].constructor.name) {
|
|
852
|
+
case 'Dupla':
|
|
853
|
+
case 'Trio':
|
|
854
|
+
case 'Quarteto':
|
|
855
|
+
case 'Quinteto':
|
|
856
|
+
case 'Sexteto':
|
|
857
|
+
case 'Septeto':
|
|
858
|
+
case 'Octeto':
|
|
859
|
+
case 'Noneto':
|
|
860
|
+
case 'Deceto':
|
|
861
|
+
tipo = delegua_1.default.TUPLA;
|
|
862
|
+
break;
|
|
863
|
+
case 'Literal':
|
|
864
|
+
case 'Vetor':
|
|
865
|
+
tipo = inicializadores[indice].tipo;
|
|
866
|
+
break;
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
this.pilhaEscopos.definirTipoVariavel(identificador.lexema, tipo);
|
|
808
870
|
retorno.push(new declaracoes_1.Var(identificador, inicializadores[indice], tipo, Array.from(this.pilhaDecoradores)));
|
|
809
871
|
}
|
|
810
872
|
this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
|
|
@@ -819,10 +881,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
819
881
|
this.consumir(delegua_2.default.CHAVE_DIREITA, 'Esperado chave direita para concluir relação de variáveis a serem desestruturadas.');
|
|
820
882
|
this.consumir(delegua_2.default.IGUAL, 'Esperado igual após relação de propriedades da desestruturação.');
|
|
821
883
|
const inicializador = this.expressao();
|
|
822
|
-
// TODO: Para cada variável dos identificadores, emitir um `AcessoMetodoOuPropriedade` usando
|
|
823
|
-
// como prefixo o nome do inicializador, e o sufixo o nome de cada propriedade.
|
|
824
884
|
const retornos = [];
|
|
825
885
|
for (let identificador of identificadores) {
|
|
886
|
+
// TODO: Melhorar dicionário para intuir o tipo de cada propriedade.
|
|
887
|
+
this.pilhaEscopos.definirTipoVariavel(identificador.lexema, 'qualquer');
|
|
826
888
|
const declaracaoConst = new declaracoes_1.Const(identificador, new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, inicializador, identificador));
|
|
827
889
|
declaracaoConst.decoradores = Array.from(this.pilhaDecoradores);
|
|
828
890
|
retornos.push(declaracaoConst);
|
|
@@ -856,6 +918,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
856
918
|
}
|
|
857
919
|
let retorno = [];
|
|
858
920
|
for (let [indice, identificador] of identificadores.entries()) {
|
|
921
|
+
if (!tipo) {
|
|
922
|
+
tipo = (0, inferenciador_1.inferirTipoVariavel)(inicializadores[indice]);
|
|
923
|
+
}
|
|
924
|
+
this.pilhaEscopos.definirTipoVariavel(identificador.lexema, tipo);
|
|
859
925
|
retorno.push(new declaracoes_1.Const(identificador, inicializadores[indice], tipo, Array.from(this.pilhaDecoradores)));
|
|
860
926
|
}
|
|
861
927
|
this.pilhaDecoradores = [];
|
|
@@ -874,7 +940,12 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
874
940
|
}
|
|
875
941
|
const decoradores = Array.from(this.pilhaDecoradores);
|
|
876
942
|
this.pilhaDecoradores = [];
|
|
877
|
-
|
|
943
|
+
// Se houver chamadas recursivas à função, precisamos definir um tipo
|
|
944
|
+
// para ela. Vai ser atualizado após avaliação do corpo da função.
|
|
945
|
+
this.pilhaEscopos.definirTipoVariavel(simbolo.lexema, 'qualquer');
|
|
946
|
+
const corpoDaFuncao = this.corpoDaFuncao(tipo);
|
|
947
|
+
this.pilhaEscopos.definirTipoVariavel(simbolo.lexema, corpoDaFuncao.tipoRetorno || 'qualquer');
|
|
948
|
+
return new declaracoes_1.FuncaoDeclaracao(simbolo, corpoDaFuncao, null, decoradores);
|
|
878
949
|
}
|
|
879
950
|
logicaComumParametros() {
|
|
880
951
|
const parametros = [];
|
|
@@ -897,6 +968,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
897
968
|
parametro.tipoDado = tipoDadoParametro;
|
|
898
969
|
this.avancarEDevolverAnterior();
|
|
899
970
|
}
|
|
971
|
+
this.pilhaEscopos.definirTipoVariavel(parametro.nome.lexema, parametro.tipoDado || 'qualquer');
|
|
900
972
|
parametros.push(parametro);
|
|
901
973
|
if (parametro.abrangencia === 'multiplo')
|
|
902
974
|
break;
|
|
@@ -912,7 +984,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
912
984
|
parametros = this.logicaComumParametros();
|
|
913
985
|
}
|
|
914
986
|
this.consumir(delegua_2.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
915
|
-
let tipoRetorno =
|
|
987
|
+
let tipoRetorno = 'qualquer';
|
|
916
988
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.DOIS_PONTOS)) {
|
|
917
989
|
tipoRetorno = this.verificarDefinicaoTipoAtual();
|
|
918
990
|
this.avancarEDevolverAnterior();
|
|
@@ -926,8 +998,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
926
998
|
const pilhaDecoradoresClasse = Array.from(this.pilhaDecoradores);
|
|
927
999
|
let superClasse = null;
|
|
928
1000
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.HERDA)) {
|
|
929
|
-
this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome da Superclasse.');
|
|
930
|
-
superClasse = new construtos_1.Variavel(this.hashArquivo, this.simbolos[this.atual - 1]);
|
|
1001
|
+
const simboloSuperclasse = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado nome da Superclasse.');
|
|
1002
|
+
superClasse = new construtos_1.Variavel(this.hashArquivo, this.simbolos[this.atual - 1], simboloSuperclasse.lexema);
|
|
931
1003
|
}
|
|
932
1004
|
this.consumir(delegua_2.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
|
|
933
1005
|
this.pilhaDecoradores = [];
|
|
@@ -1022,6 +1094,27 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1022
1094
|
this.avancarEDevolverAnterior();
|
|
1023
1095
|
}
|
|
1024
1096
|
}
|
|
1097
|
+
inicializarPilhaEscopos() {
|
|
1098
|
+
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
1099
|
+
this.pilhaEscopos.empilhar(new informacao_escopo_1.InformacaoEscopo());
|
|
1100
|
+
// Funções nativas de Delégua
|
|
1101
|
+
this.pilhaEscopos.definirTipoVariavel('filtrarPor', 'qualquer[]');
|
|
1102
|
+
this.pilhaEscopos.definirTipoVariavel('inteiro', 'inteiro');
|
|
1103
|
+
this.pilhaEscopos.definirTipoVariavel('mapear', 'qualquer[]');
|
|
1104
|
+
this.pilhaEscopos.definirTipoVariavel('paraCada', 'qualquer[]');
|
|
1105
|
+
this.pilhaEscopos.definirTipoVariavel('primeiroEmCondicao', 'qualquer');
|
|
1106
|
+
this.pilhaEscopos.definirTipoVariavel('real', 'número');
|
|
1107
|
+
this.pilhaEscopos.definirTipoVariavel('tamanho', 'inteiro');
|
|
1108
|
+
this.pilhaEscopos.definirTipoVariavel('texto', 'texto');
|
|
1109
|
+
this.pilhaEscopos.definirTipoVariavel('todosEmCondicao', 'lógico');
|
|
1110
|
+
this.pilhaEscopos.definirTipoVariavel('tupla', 'tupla');
|
|
1111
|
+
// TODO: Escrever algum tipo de validação aqui.
|
|
1112
|
+
for (const tipos of Object.values(this.tiposDeFerramentasExternas)) {
|
|
1113
|
+
for (const [nomeTipo, tipo] of Object.entries(tipos)) {
|
|
1114
|
+
this.pilhaEscopos.definirTipoVariavel(nomeTipo, tipo);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1025
1118
|
analisar(retornoLexador, hashArquivo) {
|
|
1026
1119
|
const inicioAnalise = (0, browser_process_hrtime_1.default)();
|
|
1027
1120
|
this.erros = [];
|
|
@@ -1030,6 +1123,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1030
1123
|
this.hashArquivo = hashArquivo || 0;
|
|
1031
1124
|
this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
|
|
1032
1125
|
this.pilhaDecoradores = [];
|
|
1126
|
+
this.tiposDefinidosEmCodigo = {};
|
|
1127
|
+
this.inicializarPilhaEscopos();
|
|
1033
1128
|
let declaracoes = [];
|
|
1034
1129
|
while (!this.estaNoFinal()) {
|
|
1035
1130
|
this.resolverDecorador();
|