@designliquido/delegua 0.57.2 → 0.58.0
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 +7 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +69 -14
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts +3 -3
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +26 -10
- package/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts +23 -0
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.d.ts.map +1 -0
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js +199 -0
- package/avaliador-sintatico/dialetos/micro-avaliador-sintatico-pitugues.js.map +1 -0
- package/avaliador-sintatico/elemento-montao-tipos.d.ts.map +1 -1
- package/avaliador-sintatico/elemento-montao-tipos.js.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/montao-tipos.d.ts +1 -1
- package/avaliador-sintatico/montao-tipos.d.ts.map +1 -1
- package/avaliador-sintatico/montao-tipos.js.map +1 -1
- package/avaliador-sintatico/pilha-escopos.d.ts.map +1 -1
- package/avaliador-sintatico/pilha-escopos.js.map +1 -1
- package/bibliotecas/biblioteca-global.d.ts +7 -0
- package/bibliotecas/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/biblioteca-global.js +206 -0
- package/bibliotecas/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.d.ts.map +1 -1
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.js +8 -2
- package/bibliotecas/dialetos/egua-classico/biblioteca-global.js.map +1 -1
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts +169 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js +686 -0
- package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js +56 -0
- package/bibliotecas/dialetos/pitugues/primitivas-dicionario.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.js +84 -0
- package/bibliotecas/dialetos/pitugues/primitivas-numero.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js +254 -0
- package/bibliotecas/dialetos/pitugues/primitivas-texto.js.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts +6 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.d.ts.map +1 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.js +373 -0
- package/bibliotecas/dialetos/pitugues/primitivas-vetor.js.map +1 -0
- package/bibliotecas/primitivas-vetor.d.ts.map +1 -1
- package/bibliotecas/primitivas-vetor.js +6 -5
- package/bibliotecas/primitivas-vetor.js.map +1 -1
- package/bin/package.json +1 -1
- package/construtos/elvis.d.ts +2 -2
- package/construtos/elvis.d.ts.map +1 -1
- package/construtos/elvis.js.map +1 -1
- package/construtos/enquanto-como-construto.d.ts +4 -4
- package/construtos/fazer-como-construto.d.ts +4 -4
- package/construtos/importar-como-construto.d.ts +3 -3
- package/construtos/importar-como-construto.d.ts.map +1 -1
- package/construtos/importar-como-construto.js.map +1 -1
- package/construtos/para-cada-como-construto.d.ts +6 -6
- package/construtos/para-como-construto.d.ts +4 -4
- package/construtos/se-ternario.d.ts +2 -2
- package/formatadores/formatador-pitugues.d.ts.map +1 -1
- package/formatadores/formatador-pitugues.js.map +1 -1
- package/geracao-identificadores/index.d.ts.map +1 -1
- package/geracao-identificadores/index.js.map +1 -1
- package/informacao-elemento-sintatico.d.ts +1 -1
- package/interfaces/delegua/enquanto-interface.d.ts +2 -2
- package/interfaces/delegua/fazer-interface.d.ts +2 -2
- package/interfaces/delegua/para-cada-interface.d.ts +2 -2
- package/interfaces/delegua/para-interface.d.ts +2 -2
- package/interfaces/visitante-comum-interface.d.ts.map +1 -1
- package/interfaces/visitante-delegua-interface.d.ts +3 -3
- package/interfaces/visitante-delegua-interface.d.ts.map +1 -1
- package/interpretador/comum.d.ts.map +1 -1
- package/interpretador/comum.js +1 -0
- package/interpretador/comum.js.map +1 -1
- package/interpretador/depuracao/comum.d.ts.map +1 -1
- package/interpretador/depuracao/comum.js +6 -3
- package/interpretador/depuracao/comum.js.map +1 -1
- package/interpretador/dialetos/pitugues/index.d.ts +2 -0
- package/interpretador/dialetos/pitugues/index.d.ts.map +1 -0
- package/interpretador/dialetos/pitugues/index.js +18 -0
- package/interpretador/dialetos/pitugues/index.js.map +1 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts +17 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.d.ts.map +1 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js +248 -0
- package/interpretador/dialetos/pitugues/interpretador-pitugues.js.map +1 -0
- package/interpretador/estruturas/classe-de-modulo.d.ts +1 -1
- package/interpretador/estruturas/classe-de-modulo.d.ts.map +1 -1
- package/interpretador/estruturas/classe-de-modulo.js.map +1 -1
- package/interpretador/interpretador-base.d.ts.map +1 -1
- package/interpretador/interpretador-base.js +2 -5
- package/interpretador/interpretador-base.js.map +1 -1
- package/interpretador/interpretador.d.ts +5 -0
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +39 -22
- package/interpretador/interpretador.js.map +1 -1
- package/lexador/dialetos/lexador-pitugues.js.map +1 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.d.ts +1 -0
- package/lexador/dialetos/palavras-reservadas/pitugues.d.ts.map +1 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.js +2 -1
- package/lexador/dialetos/palavras-reservadas/pitugues.js.map +1 -1
- package/package.json +1 -1
- package/quebras/index.d.ts.map +1 -1
- package/quebras/index.js.map +1 -1
- package/tipos-de-simbolos/pitugues.d.ts.map +1 -1
- package/tipos-de-simbolos/pitugues.js.map +1 -1
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-python.d.ts.map +1 -1
- package/tradutores/tradutor-python.js.map +1 -1
- package/umd/delegua.js +354 -60
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AcessoMetodoOuPropriedade, Chamada, Construto, Decorador, Dicionario, EnquantoComoConstruto, FuncaoConstruto, ImportarComoConstruto, Leia, ParaCadaComoConstruto, ParaComoConstruto, Tupla, Variavel } from '../construtos';
|
|
1
|
+
import { AcessoMetodoOuPropriedade, Chamada, Construto, Decorador, Dicionario, EnquantoComoConstruto, FuncaoConstruto, ImportarComoConstruto, Leia, ListaCompreensao, ParaCadaComoConstruto, ParaComoConstruto, Tupla, Variavel } from '../construtos';
|
|
2
2
|
import { AvaliadorSintaticoInterface, ParametroInterface, SimboloInterface } from '../interfaces';
|
|
3
3
|
import { ErroAvaliadorSintatico } from './erro-avaliador-sintatico';
|
|
4
4
|
import { Bloco, Classe, Comentario, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, Expressao, Falhar, Fazer, FuncaoDeclaracao, Importar, Para, ParaCada, Retorna, Se, Sustar, TendoComo, Tente, Var } from '../declaracoes';
|
|
@@ -56,6 +56,7 @@ export declare class AvaliadorSintatico extends AvaliadorSintaticoBase implement
|
|
|
56
56
|
blocos: number;
|
|
57
57
|
performance: boolean;
|
|
58
58
|
superclasseAtual: string | undefined;
|
|
59
|
+
intuirTipoQualquerParaIdentificadores: boolean;
|
|
59
60
|
constructor(performance?: boolean);
|
|
60
61
|
protected verificarDefinicaoTipoAtual(): string;
|
|
61
62
|
protected obterChaveDicionario(): Construto;
|
|
@@ -72,6 +73,11 @@ export declare class AvaliadorSintatico extends AvaliadorSintaticoBase implement
|
|
|
72
73
|
* Método que resolve `para` ou `para cada` como construto.
|
|
73
74
|
*/
|
|
74
75
|
protected paraComoConstruto(simboloPara: SimboloInterface): ParaCadaComoConstruto | ParaComoConstruto;
|
|
76
|
+
/**
|
|
77
|
+
* Resolve uma lista de compreensão.
|
|
78
|
+
* @returns {ListaCompreensao} A lista de compreensão resolvida.
|
|
79
|
+
*/
|
|
80
|
+
protected resolverCompreensaoDeLista(retornoExpressao: Construto): ListaCompreensao;
|
|
75
81
|
primario(): Construto;
|
|
76
82
|
protected resolverCadeiaChamadas(expressaoAnterior: Construto, tipoAnterior?: string): any;
|
|
77
83
|
chamar(): Construto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,yBAAyB,EAOzB,OAAO,EAGP,SAAS,EACT,SAAS,EAET,UAAU,EAEV,qBAAqB,EAGrB,eAAe,EACf,qBAAqB,EAErB,IAAI,
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"AAEA,OAAO,EAGH,yBAAyB,EAOzB,OAAO,EAGP,SAAS,EACT,SAAS,EAET,UAAU,EAEV,qBAAqB,EAGrB,eAAe,EACf,qBAAqB,EAErB,IAAI,EACJ,gBAAgB,EAGhB,qBAAqB,EACrB,iBAAiB,EAMjB,KAAK,EAEL,QAAQ,EAEX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAElG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAcpE,OAAO,EACH,KAAK,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,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;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAa7D;;;;;;;;;;;;;;;;;;GAkBG;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,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAC3D,4BAA4B,EAAE;QAC1B,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;KACtC,CAAC;IACF,YAAY,EAAE,YAAY,CAAC;IAC3B,0BAA0B,EAAE;QAAE,CAAC,cAAc,EAAE,MAAM,GAAG;YAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACzF,oBAAoB,EAAE;QAClB,CAAC,kBAAkB,EAAE,MAAM,GAAG;YAAE,CAAC,aAAa,EAAE,MAAM,GAAG,2BAA2B,CAAA;SAAE,CAAC;KAC1F,CAAC;IACF,WAAW,EAAE,WAAW,CAAC;IAEzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,qCAAqC,EAAE,OAAO,CAAC;gBAEnC,WAAW,UAAQ;IAoB/B,SAAS,CAAC,2BAA2B,IAAI,MAAM;IA0C/C,SAAS,CAAC,oBAAoB,IAAI,SAAS;IA4C3C,SAAS,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,UAAU;IAiCjF,SAAS,CAAC,iBAAiB,IAAI,qBAAqB;IAQpD,SAAS,CAAC,cAAc,IAAI,KAAK;IAajC,SAAS,CAAC,qBAAqB,IAAI,qBAAqB;IAMxD,SAAS,CAAC,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,GAAG,SAAS;IAgBvE,SAAS,CAAC,0BAA0B,CAAC,WAAW,EAAE,gBAAgB;IAYlE,SAAS,CAAC,+BAA+B,CAAC,WAAW,EAAE,gBAAgB;IAgBvE,SAAS,CAAC,qBAAqB,CAAC,WAAW,EAAE,gBAAgB,GAAG,qBAAqB;IAerF,SAAS,CAAC,4BAA4B,CAAC,WAAW,EAAE,gBAAgB;IAapE;;OAEG;IACH,SAAS,CAAC,iBAAiB,CACvB,WAAW,EAAE,gBAAgB,GAC9B,qBAAqB,GAAG,iBAAiB;IAc5C;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,SAAS,GAAG,gBAAgB;IA+D1E,QAAQ,IAAI,SAAS;IAiY9B,SAAS,CAAC,sBAAsB,CAC5B,iBAAiB,EAAE,SAAS,EAC5B,YAAY,GAAE,MAAmB;IAiE5B,MAAM,IAAI,SAAS;IAK5B;;;;;;OAMG;IACH,SAAS,CAAC,gDAAgD,CACtD,wBAAwB,EAAE,yBAAyB,GACpD,SAAS;IAmGZ,SAAS,CAAC,gCAAgC,CACtC,yBAAyB,EAAE,2BAA2B,EAAE,EACxD,oBAAoB,EAAE,SAAS,EAAE,GAClC,MAAM,EAAE;IA+DX;;;;;;OAMG;IACH,SAAS,CAAC,uBAAuB,CAC7B,eAAe,EAAE,SAAS,EAC1B,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,GAAE,MAAM,GAAG,SAAqB,GAC9C,SAAS;IAsFH,gBAAgB,CACrB,eAAe,EAAE,SAAS,EAC1B,aAAa,GAAE,MAAM,GAAG,SAAqB,GAC9C,OAAO;IAsCD,MAAM,IAAI,SAAS;IAkB5B,SAAS,CAAC,KAAK,IAAI,SAAS;IAWnB,aAAa,IAAI,SAAS;IAY1B,WAAW,IAAI,SAAS;IA4BjC;;;;OAIG;IACM,iBAAiB,IAAI,SAAS;IAqC9B,QAAQ,IAAI,SAAS;IAsBrB,IAAI,IAAI,SAAS;IAiBjB,KAAK,IAAI,SAAS;IAmBlB,QAAQ,IAAI,SAAS;IAwBrB,mBAAmB,IAAI,SAAS;IAsBhC,EAAE,IAAI,SAAS;IAYf,CAAC,IAAI,SAAS;IAYvB,SAAS,CAAC,UAAU,IAAI,SAAS;IAuBjC;;;OAGG;IACM,QAAQ,IAAI,SAAS;IAkE9B;;;OAGG;IACM,aAAa,IAAI,IAAI;IAyBrB,SAAS,IAAI,SAAS;IAItB,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC;IAwBzC,SAAS,CAAC,8BAA8B,IAAI,UAAU;IAgBtD,SAAS,CAAC,4BAA4B,IAAI,UAAU;IAU3C,kBAAkB,IAAI,QAAQ;IAavC,SAAS,CAAC,mBAAmB;;;;IAWpB,kBAAkB,IAAI,QAAQ;IAYvC,SAAS,CAAC,iBAAiB,IAAI,OAAO;IAmF7B,iBAAiB,IAAI,OAAO;IA2BrC,SAAS,CAAC,mBAAmB,IAAI,SAAS;IAY1C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAKpC,SAAS,CAAC,gBAAgB;;;;IAc1B,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,gBAAgB,GAAG,KAAK;IAgBhE;;;;OAIG;IACH,kBAAkB,IAAI,QAAQ;IA0ErB,cAAc,IAAI,IAAI,GAAG,QAAQ;IAe1C,SAAS,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB;;;;;;IA6DhE,SAAS,CAAC,4BAA4B,CAAC,WAAW,EAAE,gBAAgB;IAgBpE,SAAS,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB;;;;;IAsDhE,SAAS,CAAC,uBAAuB,CAAC,WAAW,EAAE,gBAAgB;IAY/D,SAAS,CAAC,kBAAkB,CAAC,WAAW,EAAE,gBAAgB,GAAG,QAAQ;IAerE,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,gBAAgB;;;;;;IAmDvD,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAa/D,iBAAiB,IAAI,OAAO;IA8B5B,YAAY,IAAI,EAAE;IAalB,gBAAgB,IAAI,MAAM;IAa1B,eAAe,IAAI,KAAK;IAqDjC,SAAS,CAAC,iBAAiB,IAAI,IAAI;IA6CnC;;;;;;;OAOG;IACH,SAAS,CAAC,kBAAkB,IAAI,UAAU,GAAG,UAAU,EAAE;IAmFzD,SAAS,CAAC,mBAAmB,IAAI,SAAS;IAmD1C,SAAS,CAAC,iCAAiC,IAAI,GAAG,EAAE;IAwCpD,SAAS,CAAC,8CAA8C,CACpD,aAAa,EAAE,SAAS,EACxB,IAAI,EAAE,MAAM,GACb,MAAM;IAwJT,SAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS;IAWrD,SAAS,CAAC,+CAA+C,CACrD,SAAS,EAAE,SAAS,GACrB,mBAAmB;IAsBtB;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,GAAG,EAAE;IA6FxC,SAAS,CAAC,kCAAkC,IAAI,KAAK,EAAE;IAsCvD;;;OAGG;IACH,sBAAsB,IAAI,KAAK,EAAE;IA6EjC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAqChD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB,EAAE;IA2C9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAmF5C,kBAAkB,IAAI,MAAM;IAuFrC;;;;;;;;;;;OAWG;IACM,6BAA6B,IAAI,UAAU,GAAG,UAAU,EAAE;IA2BnE;;;;OAIG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAuB7B;;;;OAIG;IACH,SAAS,CAAC,uBAAuB;IAwKjC,QAAQ,CACJ,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAChD,WAAW,EAAE,MAAM,GACpB,yBAAyB,CAAC,UAAU,CAAC;CAqC3C"}
|
|
@@ -55,6 +55,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
55
55
|
this.primitivasConhecidas = {};
|
|
56
56
|
this.pilhaEscopos = new pilha_escopos_1.PilhaEscopos();
|
|
57
57
|
this.montaoTipos = new montao_tipos_1.MontaoTipos();
|
|
58
|
+
this.intuirTipoQualquerParaIdentificadores = false;
|
|
58
59
|
(0, comum_1.registrarPrimitiva)(this.primitivasConhecidas, 'dicionário', primitivas_dicionario_1.default);
|
|
59
60
|
(0, comum_1.registrarPrimitiva)(this.primitivasConhecidas, 'número', primitivas_numero_1.default);
|
|
60
61
|
(0, comum_1.registrarPrimitiva)(this.primitivasConhecidas, 'texto', primitivas_texto_1.default);
|
|
@@ -205,6 +206,34 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
205
206
|
this.blocos -= 1;
|
|
206
207
|
}
|
|
207
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Resolve uma lista de compreensão.
|
|
211
|
+
* @returns {ListaCompreensao} A lista de compreensão resolvida.
|
|
212
|
+
*/
|
|
213
|
+
resolverCompreensaoDeLista(retornoExpressao) {
|
|
214
|
+
this.consumir(delegua_2.default.PARA, "Esperado instrução 'para' após identificado.");
|
|
215
|
+
this.consumir(delegua_2.default.CADA, "Esperado instrução 'cada' após 'para'.");
|
|
216
|
+
const simboloVariavelIteracao = this.consumir(delegua_2.default.IDENTIFICADOR, "Esperado identificador de variável após 'para cada'.");
|
|
217
|
+
if (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.DE, delegua_2.default.EM)) {
|
|
218
|
+
throw this.erro(this.simbolos[this.atual], "Esperado palavras reservadas 'em' ou 'de' após variável de iteração em instrução em lista de compreensão.");
|
|
219
|
+
}
|
|
220
|
+
const localizacaoVetor = this.simboloAnterior();
|
|
221
|
+
const vetor = this.ou();
|
|
222
|
+
this.consumir(delegua_2.default.SE, "Esperado condição 'se' após vetor.");
|
|
223
|
+
const condicao = this.expressao();
|
|
224
|
+
this.consumir(delegua_2.default.COLCHETE_DIREITO, 'Espero fechamento de colchetes após condição.');
|
|
225
|
+
const tipoVetor = vetor.tipo;
|
|
226
|
+
if (!tipoVetor.endsWith('[]') && !['qualquer', 'vetor'].includes(tipoVetor)) {
|
|
227
|
+
throw this.erro(localizacaoVetor, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
228
|
+
}
|
|
229
|
+
const variavelIteracao = new construtos_1.Variavel(this.hashArquivo, simboloVariavelIteracao);
|
|
230
|
+
return new construtos_1.ListaCompreensao(Number(this.simbolos[this.atual]), this.hashArquivo, retornoExpressao, vetor, new construtos_1.ParaCadaComoConstruto(retornoExpressao.hashArquivo, retornoExpressao.linha, variavelIteracao, vetor, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
231
|
+
new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
|
|
232
|
+
new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao),
|
|
233
|
+
]), [], null),
|
|
234
|
+
])), 'qualquer[]' // TODO: Talvez um dia inferir o tipo aqui.
|
|
235
|
+
);
|
|
236
|
+
}
|
|
208
237
|
primario() {
|
|
209
238
|
const simboloAtual = this.simbolos[this.atual];
|
|
210
239
|
let valores = [];
|
|
@@ -220,6 +249,16 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
220
249
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.PARENTESE_ESQUERDO)) {
|
|
221
250
|
return this.construtoTupla();
|
|
222
251
|
}
|
|
252
|
+
// Ao resolver a expressão aqui, identificadores dentro da expressão de compreensão
|
|
253
|
+
// de lista serão tratados como 'qualquer', para evitar erros de tipo.
|
|
254
|
+
this.intuirTipoQualquerParaIdentificadores = true;
|
|
255
|
+
const retornoExpressaoOuPrimeiroValor = this.seTernario();
|
|
256
|
+
this.intuirTipoQualquerParaIdentificadores = false;
|
|
257
|
+
if (this.simbolos[this.atual].tipo === delegua_2.default.PARA) {
|
|
258
|
+
return this.resolverCompreensaoDeLista(retornoExpressaoOuPrimeiroValor);
|
|
259
|
+
}
|
|
260
|
+
// Aqui já sabemos que não é uma compreensão de lista.
|
|
261
|
+
valores.push(retornoExpressaoOuPrimeiroValor);
|
|
223
262
|
while (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.COLCHETE_DIREITO)) {
|
|
224
263
|
switch (this.simbolos[this.atual].tipo) {
|
|
225
264
|
case delegua_2.default.VIRGULA:
|
|
@@ -231,7 +270,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
231
270
|
valores.push(new construtos_1.ComentarioComoConstruto(simboloComentario));
|
|
232
271
|
break;
|
|
233
272
|
default:
|
|
234
|
-
const valor = this.
|
|
273
|
+
const valor = this.seTernario();
|
|
235
274
|
valores.push(valor);
|
|
236
275
|
break;
|
|
237
276
|
}
|
|
@@ -289,7 +328,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
289
328
|
case delegua_2.default.IDENTIFICADOR:
|
|
290
329
|
const simboloIdentificador = this.avancarEDevolverAnterior();
|
|
291
330
|
let tipoOperando;
|
|
292
|
-
if (
|
|
331
|
+
if (this.intuirTipoQualquerParaIdentificadores) {
|
|
332
|
+
// Esta indicação é utilizada para compreensões de lista, onde o
|
|
333
|
+
// tipo do identificador de iteração é 'qualquer' por definição.
|
|
334
|
+
tipoOperando = 'qualquer';
|
|
335
|
+
this.pilhaEscopos.definirInformacoesVariavel(simboloIdentificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(simboloIdentificador.lexema, 'qualquer') // TODO: Talvez um dia inferir o tipo aqui.
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
else if (simboloIdentificador.lexema in this.tiposDefinidosEmCodigo) {
|
|
293
339
|
tipoOperando = simboloIdentificador.lexema;
|
|
294
340
|
}
|
|
295
341
|
else {
|
|
@@ -425,7 +471,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
425
471
|
const nome = this.consumir(delegua_2.default.IDENTIFICADOR, "Esperado nome de método ou propriedade após '.'.");
|
|
426
472
|
let tipoInferido = expressaoAnterior.tipo;
|
|
427
473
|
// Se não for um dicionário anônimo (ou seja, ser variável ou constante com nome)
|
|
428
|
-
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
474
|
+
if (expressaoAnterior.tipo === 'dicionário' &&
|
|
475
|
+
expressaoAnterior.constructor !== construtos_1.Dicionario) {
|
|
429
476
|
// TODO: Achar algum caso em que aqui não seja variável.
|
|
430
477
|
const nomeDicionario = expressaoAnterior.simbolo.lexema;
|
|
431
478
|
const elementoDicionarioPilha = this.pilhaEscopos.obterElementoMontaoTipos(nomeDicionario);
|
|
@@ -844,7 +891,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
844
891
|
const corpo = this.resolverDeclaracao();
|
|
845
892
|
return {
|
|
846
893
|
condicao,
|
|
847
|
-
corpo
|
|
894
|
+
corpo,
|
|
848
895
|
};
|
|
849
896
|
}
|
|
850
897
|
declaracaoEnquanto() {
|
|
@@ -949,7 +996,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
949
996
|
const condicaoEnquanto = this.expressao();
|
|
950
997
|
return {
|
|
951
998
|
caminhoFazer,
|
|
952
|
-
condicaoEnquanto
|
|
999
|
+
condicaoEnquanto,
|
|
953
1000
|
};
|
|
954
1001
|
}
|
|
955
1002
|
declaracaoFazer(simboloFazer) {
|
|
@@ -980,7 +1027,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
980
1027
|
case delegua_2.default.CHAVE_ESQUERDA:
|
|
981
1028
|
this.avancarEDevolverAnterior();
|
|
982
1029
|
do {
|
|
983
|
-
const identificadorImportacao = this.consumir(delegua_2.default.IDENTIFICADOR,
|
|
1030
|
+
const identificadorImportacao = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado identificador de elemento a ser importado.');
|
|
984
1031
|
elementosImportacao.push(identificadorImportacao);
|
|
985
1032
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
|
|
986
1033
|
this.consumir(delegua_2.default.CHAVE_DIREITA, "Esperado '}' após lista de elementos a serem importados.");
|
|
@@ -1047,7 +1094,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1047
1094
|
nomeVariavelChave,
|
|
1048
1095
|
nomeVariavelValor,
|
|
1049
1096
|
dicionario,
|
|
1050
|
-
corpo
|
|
1097
|
+
corpo,
|
|
1051
1098
|
};
|
|
1052
1099
|
}
|
|
1053
1100
|
declaracaoParaCadaDicionario(simboloPara) {
|
|
@@ -1071,7 +1118,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1071
1118
|
}
|
|
1072
1119
|
}
|
|
1073
1120
|
const tipoVetor = vetor.tipo;
|
|
1074
|
-
if (!tipoVetor.endsWith('[]') &&
|
|
1121
|
+
if (!tipoVetor.endsWith('[]') &&
|
|
1122
|
+
!['dicionário', 'qualquer', 'texto', 'vetor'].includes(tipoVetor)) {
|
|
1075
1123
|
throw this.erro(simboloPara, `Variável ou constante em 'para cada' não é iterável. Tipo resolvido: ${tipoVetor}.`);
|
|
1076
1124
|
}
|
|
1077
1125
|
let tipoVariavelIteracao = 'qualquer';
|
|
@@ -1084,7 +1132,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1084
1132
|
return {
|
|
1085
1133
|
variavelIteracao,
|
|
1086
1134
|
vetor,
|
|
1087
|
-
corpo
|
|
1135
|
+
corpo,
|
|
1088
1136
|
};
|
|
1089
1137
|
}
|
|
1090
1138
|
declaracaoParaCadaVetor(simboloPara) {
|
|
@@ -1135,7 +1183,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1135
1183
|
inicializador,
|
|
1136
1184
|
condicao,
|
|
1137
1185
|
incrementar,
|
|
1138
|
-
corpo
|
|
1186
|
+
corpo,
|
|
1139
1187
|
};
|
|
1140
1188
|
}
|
|
1141
1189
|
declaracaoParaTradicional(simboloPara) {
|
|
@@ -1404,11 +1452,14 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1404
1452
|
if (!tipoCorrespondente) {
|
|
1405
1453
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaAcessoMetodoOuPropriedade.simbolo, `Tipo '${entidadeChamadaAcessoMetodoOuPropriedade.objeto.tipo}' não foi encontrado entre os tipos definidos por bibliotecas.`);
|
|
1406
1454
|
}
|
|
1407
|
-
if (!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1408
|
-
|
|
1455
|
+
if (!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1456
|
+
tipoCorrespondente.metodos) &&
|
|
1457
|
+
!(entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1458
|
+
tipoCorrespondente.propriedades)) {
|
|
1409
1459
|
throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(entidadeChamadaAcessoMetodoOuPropriedade.simbolo, `Membro '${entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema}' não existe no tipo '${entidadeChamadaAcessoMetodoOuPropriedade.objeto.tipo}'.`);
|
|
1410
1460
|
}
|
|
1411
|
-
if (entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1461
|
+
if (entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema in
|
|
1462
|
+
tipoCorrespondente.metodos) {
|
|
1412
1463
|
return tipoCorrespondente.metodos[entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema].tipo;
|
|
1413
1464
|
}
|
|
1414
1465
|
return tipoCorrespondente.propriedades[entidadeChamadaAcessoMetodoOuPropriedade.simbolo.lexema].tipo;
|
|
@@ -1475,7 +1526,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1475
1526
|
for (var i = 0; i < construto.valores.length; i++) {
|
|
1476
1527
|
const chaveCorrespondente = this.resolverValorConstruto(construto.chaves[i]);
|
|
1477
1528
|
const valorCorrespondente = construto.valores[i];
|
|
1478
|
-
subElementos[chaveCorrespondente] =
|
|
1529
|
+
subElementos[chaveCorrespondente] =
|
|
1530
|
+
this.resolverInformacaoElementoSintaticoDeDicionario(valorCorrespondente);
|
|
1479
1531
|
}
|
|
1480
1532
|
retorno.subElementos = subElementos;
|
|
1481
1533
|
const endereco = this.montaoTipos.adicionarReferencia(retorno);
|
|
@@ -1828,6 +1880,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
1828
1880
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
1829
1881
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|
|
1830
1882
|
]));
|
|
1883
|
+
this.pilhaEscopos.definirInformacoesVariavel('clonar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('clonar', 'qualquer', true, [
|
|
1884
|
+
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('valor', 'qualquer'),
|
|
1885
|
+
]));
|
|
1831
1886
|
this.pilhaEscopos.definirInformacoesVariavel('encontrar', new informacao_elemento_sintatico_1.InformacaoElementoSintatico('encontrar', 'qualquer', true, [
|
|
1832
1887
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('vetor', 'qualquer[]'),
|
|
1833
1888
|
new informacao_elemento_sintatico_1.InformacaoElementoSintatico('funcaoPesquisa', 'função'),
|