@designliquido/delegua 0.2.1 → 0.2.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/bin/package.json +2 -1
- package/{src → fontes}/ambiente.d.ts +4 -3
- package/{src → fontes}/ambiente.js +7 -7
- package/fontes/ambiente.js.map +1 -0
- package/fontes/avaliador-sintatico/dialetos/egua-classico.d.ts +63 -0
- package/{src → fontes}/avaliador-sintatico/dialetos/egua-classico.js +230 -217
- package/fontes/avaliador-sintatico/dialetos/egua-classico.js.map +1 -0
- package/{src → fontes}/avaliador-sintatico/dialetos/index.d.ts +0 -0
- package/{src → fontes}/avaliador-sintatico/dialetos/index.js +0 -0
- package/fontes/avaliador-sintatico/dialetos/index.js.map +1 -0
- package/fontes/avaliador-sintatico/erro-avaliador-sintatico.d.ts +5 -0
- package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js +30 -0
- package/fontes/avaliador-sintatico/erro-avaliador-sintatico.js.map +1 -0
- package/fontes/avaliador-sintatico/index.d.ts +66 -0
- package/{src → fontes}/avaliador-sintatico/index.js +231 -216
- package/fontes/avaliador-sintatico/index.js.map +1 -0
- package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.d.ts +6 -0
- package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.js +3 -0
- package/fontes/avaliador-sintatico/retorno-avaliador-sintatico.js.map +1 -0
- package/{src → fontes}/bibliotecas/biblioteca-global.d.ts +0 -0
- package/{src → fontes}/bibliotecas/biblioteca-global.js +4 -4
- package/fontes/bibliotecas/biblioteca-global.js.map +1 -0
- package/{src → fontes}/bibliotecas/importar-biblioteca.d.ts +0 -0
- package/{src → fontes}/bibliotecas/importar-biblioteca.js +0 -0
- package/fontes/bibliotecas/importar-biblioteca.js.map +1 -0
- package/fontes/construtos/acesso-indice-variavel.d.ts +13 -0
- package/fontes/construtos/acesso-indice-variavel.js +21 -0
- package/fontes/construtos/acesso-indice-variavel.js.map +1 -0
- package/fontes/construtos/acesso-metodo.d.ts +13 -0
- package/fontes/construtos/acesso-metodo.js +20 -0
- package/fontes/construtos/acesso-metodo.js.map +1 -0
- package/fontes/construtos/agrupamento.d.ts +7 -0
- package/fontes/construtos/agrupamento.js +15 -0
- package/fontes/construtos/agrupamento.js.map +1 -0
- package/{src → fontes}/construtos/atribuicao-sobrescrita.d.ts +2 -1
- package/{src → fontes}/construtos/atribuicao-sobrescrita.js +2 -1
- package/fontes/construtos/atribuicao-sobrescrita.js.map +1 -0
- package/fontes/construtos/atribuir.d.ts +9 -0
- package/{src → fontes}/construtos/atribuir.js +3 -2
- package/fontes/construtos/atribuir.js.map +1 -0
- package/{src → fontes}/construtos/binario.d.ts +1 -0
- package/{src → fontes}/construtos/binario.js +1 -0
- package/fontes/construtos/binario.js.map +1 -0
- package/{src → fontes}/construtos/chamada.d.ts +3 -2
- package/{src → fontes}/construtos/chamada.js +1 -0
- package/fontes/construtos/chamada.js.map +1 -0
- package/{src → fontes}/construtos/conjunto.d.ts +2 -1
- package/{src → fontes}/construtos/conjunto.js +2 -1
- package/fontes/construtos/conjunto.js.map +1 -0
- package/{src → fontes}/construtos/construto.d.ts +1 -0
- package/{src → fontes}/construtos/construto.js +0 -0
- package/fontes/construtos/construto.js.map +1 -0
- package/{src → fontes}/construtos/dicionario.d.ts +2 -1
- package/{src → fontes}/construtos/dicionario.js +2 -1
- package/fontes/construtos/dicionario.js.map +1 -0
- package/{src → fontes}/construtos/funcao.d.ts +2 -1
- package/{src → fontes}/construtos/funcao.js +2 -1
- package/fontes/construtos/funcao.js.map +1 -0
- package/{src → fontes}/construtos/index.d.ts +4 -4
- package/{src → fontes}/construtos/index.js +4 -4
- package/fontes/construtos/index.js.map +1 -0
- package/{src → fontes}/construtos/isto.d.ts +2 -1
- package/{src → fontes}/construtos/isto.js +2 -1
- package/fontes/construtos/isto.js.map +1 -0
- package/{src → fontes}/construtos/literal.d.ts +2 -1
- package/{src → fontes}/construtos/literal.js +2 -1
- package/fontes/construtos/literal.js.map +1 -0
- package/{src/construtos/logical.d.ts → fontes/construtos/logico.d.ts} +2 -1
- package/fontes/construtos/logico.js +17 -0
- package/fontes/construtos/logico.js.map +1 -0
- package/{src → fontes}/construtos/super.d.ts +2 -1
- package/{src → fontes}/construtos/super.js +2 -1
- package/fontes/construtos/super.js.map +1 -0
- package/{src → fontes}/construtos/unario.d.ts +1 -0
- package/{src → fontes}/construtos/unario.js +1 -0
- package/fontes/construtos/unario.js.map +1 -0
- package/fontes/construtos/variavel.d.ts +8 -0
- package/{src → fontes}/construtos/variavel.js +3 -2
- package/fontes/construtos/variavel.js.map +1 -0
- package/{src → fontes}/construtos/vetor.d.ts +2 -1
- package/{src → fontes}/construtos/vetor.js +2 -1
- package/fontes/construtos/vetor.js.map +1 -0
- package/{src → fontes}/declaracoes/bloco.d.ts +0 -0
- package/{src → fontes}/declaracoes/bloco.js +1 -1
- package/fontes/declaracoes/bloco.js.map +1 -0
- package/{src → fontes}/declaracoes/classe.d.ts +3 -2
- package/{src → fontes}/declaracoes/classe.js +3 -3
- package/fontes/declaracoes/classe.js.map +1 -0
- package/{src → fontes}/declaracoes/continua.d.ts +0 -0
- package/{src → fontes}/declaracoes/continua.js +1 -1
- package/fontes/declaracoes/continua.js.map +1 -0
- package/{src → fontes}/declaracoes/declaracao.d.ts +2 -0
- package/{src → fontes}/declaracoes/declaracao.js +2 -1
- package/fontes/declaracoes/declaracao.js.map +1 -0
- package/{src → fontes}/declaracoes/enquanto.d.ts +0 -0
- package/{src → fontes}/declaracoes/enquanto.js +1 -1
- package/fontes/declaracoes/enquanto.js.map +1 -0
- package/{src → fontes}/declaracoes/escolha.d.ts +3 -3
- package/{src → fontes}/declaracoes/escolha.js +4 -4
- package/fontes/declaracoes/escolha.js.map +1 -0
- package/{src → fontes}/declaracoes/escreva.d.ts +0 -0
- package/{src → fontes}/declaracoes/escreva.js +1 -1
- package/fontes/declaracoes/escreva.js.map +1 -0
- package/{src → fontes}/declaracoes/expressao.d.ts +3 -2
- package/{src → fontes}/declaracoes/expressao.js +1 -1
- package/fontes/declaracoes/expressao.js.map +1 -0
- package/{src → fontes}/declaracoes/fazer.d.ts +3 -3
- package/{src → fontes}/declaracoes/fazer.js +4 -4
- package/fontes/declaracoes/fazer.js.map +1 -0
- package/fontes/declaracoes/funcao.d.ts +8 -0
- package/{src → fontes}/declaracoes/funcao.js +3 -3
- package/fontes/declaracoes/funcao.js.map +1 -0
- package/fontes/declaracoes/importar.d.ts +8 -0
- package/{src → fontes}/declaracoes/importar.js +3 -3
- package/fontes/declaracoes/importar.js.map +1 -0
- package/{src → fontes}/declaracoes/index.d.ts +1 -1
- package/{src → fontes}/declaracoes/index.js +1 -1
- package/fontes/declaracoes/index.js.map +1 -0
- package/{src → fontes}/declaracoes/para.d.ts +1 -1
- package/{src → fontes}/declaracoes/para.js +2 -2
- package/fontes/declaracoes/para.js.map +1 -0
- package/{src → fontes}/declaracoes/retorna.d.ts +0 -0
- package/{src → fontes}/declaracoes/retorna.js +1 -1
- package/fontes/declaracoes/retorna.js.map +1 -0
- package/fontes/declaracoes/se.d.ts +9 -0
- package/{src → fontes}/declaracoes/se.js +5 -5
- package/fontes/declaracoes/se.js.map +1 -0
- package/{src/declaracoes/pausa.d.ts → fontes/declaracoes/sustar.d.ts} +1 -1
- package/{src/declaracoes/pausa.js → fontes/declaracoes/sustar.js} +10 -10
- package/fontes/declaracoes/sustar.js.map +1 -0
- package/fontes/declaracoes/tente.d.ts +9 -0
- package/{src → fontes}/declaracoes/tente.js +6 -6
- package/fontes/declaracoes/tente.js.map +1 -0
- package/fontes/declaracoes/var.d.ts +8 -0
- package/{src → fontes}/declaracoes/var.js +3 -3
- package/fontes/declaracoes/var.js.map +1 -0
- package/{src → fontes}/delegua.d.ts +6 -7
- package/fontes/delegua.js +174 -0
- package/fontes/delegua.js.map +1 -0
- package/{src → fontes}/estruturas/chamavel.d.ts +0 -0
- package/{src → fontes}/estruturas/chamavel.js +0 -0
- package/fontes/estruturas/chamavel.js.map +1 -0
- package/{src → fontes}/estruturas/classe.d.ts +0 -0
- package/{src → fontes}/estruturas/classe.js +0 -0
- package/fontes/estruturas/classe.js.map +1 -0
- package/{src → fontes}/estruturas/funcao-padrao.d.ts +0 -0
- package/{src → fontes}/estruturas/funcao-padrao.js +0 -0
- package/fontes/estruturas/funcao-padrao.js.map +1 -0
- package/{src → fontes}/estruturas/funcao.d.ts +0 -0
- package/{src → fontes}/estruturas/funcao.js +0 -0
- package/fontes/estruturas/funcao.js.map +1 -0
- package/{src → fontes}/estruturas/index.d.ts +0 -0
- package/{src → fontes}/estruturas/index.js +0 -0
- package/fontes/estruturas/index.js.map +1 -0
- package/fontes/estruturas/instancia.d.ts +9 -0
- package/{src → fontes}/estruturas/instancia.js +7 -7
- package/fontes/estruturas/instancia.js.map +1 -0
- package/{src → fontes}/estruturas/modulo.d.ts +4 -0
- package/{src → fontes}/estruturas/modulo.js +3 -3
- package/fontes/estruturas/modulo.js.map +1 -0
- package/fontes/excecoes/erro-em-tempo-de-execucao.d.ts +7 -0
- package/{src → fontes}/excecoes/erro-em-tempo-de-execucao.js +2 -1
- package/fontes/excecoes/erro-em-tempo-de-execucao.js.map +1 -0
- package/{src → fontes}/excecoes/excecao-continuar.d.ts +0 -0
- package/{src → fontes}/excecoes/excecao-continuar.js +0 -0
- package/fontes/excecoes/excecao-continuar.js.map +1 -0
- package/{src → fontes}/excecoes/excecao-retornar.d.ts +0 -0
- package/{src → fontes}/excecoes/excecao-retornar.js +0 -0
- package/fontes/excecoes/excecao-retornar.js.map +1 -0
- package/fontes/excecoes/excecao-sustar.d.ts +2 -0
- package/{src/excecoes/excecao-quebra.js → fontes/excecoes/excecao-sustar.js} +7 -7
- package/fontes/excecoes/excecao-sustar.js.map +1 -0
- package/{src → fontes}/excecoes/index.d.ts +1 -1
- package/{src → fontes}/excecoes/index.js +1 -1
- package/fontes/excecoes/index.js.map +1 -0
- package/fontes/interfaces/avaliador-sintatico-interface.d.ts +59 -0
- package/{src → fontes}/interfaces/avaliador-sintatico-interface.js +0 -0
- package/fontes/interfaces/avaliador-sintatico-interface.js.map +1 -0
- package/{src → fontes}/interfaces/index.d.ts +0 -0
- package/{src → fontes}/interfaces/index.js +0 -0
- package/fontes/interfaces/index.js.map +1 -0
- package/fontes/interfaces/interpretador-interface.d.ts +53 -0
- package/{src → fontes}/interfaces/interpretador-interface.js +0 -0
- package/fontes/interfaces/interpretador-interface.js.map +1 -0
- package/fontes/interfaces/lexador-interface.d.ts +24 -0
- package/{src → fontes}/interfaces/lexador-interface.js +0 -0
- package/fontes/interfaces/lexador-interface.js.map +1 -0
- package/{src → fontes}/interfaces/pilha-interface.d.ts +0 -0
- package/{src → fontes}/interfaces/pilha-interface.js +0 -0
- package/fontes/interfaces/pilha-interface.js.map +1 -0
- package/fontes/interfaces/resolvedor-interface.d.ts +53 -0
- package/{src → fontes}/interfaces/resolvedor-interface.js +0 -0
- package/fontes/interfaces/resolvedor-interface.js.map +1 -0
- package/{src → fontes}/interfaces/simbolo-interface.d.ts +0 -0
- package/{src → fontes}/interfaces/simbolo-interface.js +0 -0
- package/fontes/interfaces/simbolo-interface.js.map +1 -0
- package/fontes/interpretador/dialetos/egua-classico.d.ts +62 -0
- package/{src → fontes}/interpretador/dialetos/egua-classico.js +211 -185
- package/fontes/interpretador/dialetos/egua-classico.js.map +1 -0
- package/{src → fontes}/interpretador/dialetos/index.d.ts +0 -0
- package/{src → fontes}/interpretador/dialetos/index.js +0 -0
- package/fontes/interpretador/dialetos/index.js.map +1 -0
- package/fontes/interpretador/index.d.ts +63 -0
- package/{src → fontes}/interpretador/index.js +245 -226
- package/fontes/interpretador/index.js.map +1 -0
- package/{src → fontes}/lexador/dialetos/egua-classico.d.ts +11 -9
- package/{src → fontes}/lexador/dialetos/egua-classico.js +103 -54
- package/fontes/lexador/dialetos/egua-classico.js.map +1 -0
- package/{src → fontes}/lexador/dialetos/index.d.ts +0 -0
- package/{src → fontes}/lexador/dialetos/index.js +0 -0
- package/fontes/lexador/dialetos/index.js.map +1 -0
- package/fontes/lexador/erro-lexador.d.ts +5 -0
- package/fontes/lexador/erro-lexador.js +3 -0
- package/fontes/lexador/erro-lexador.js.map +1 -0
- package/{src → fontes}/lexador/index.d.ts +5 -4
- package/{src → fontes}/lexador/index.js +21 -9
- package/fontes/lexador/index.js.map +1 -0
- package/fontes/lexador/retorno-lexador.d.ts +6 -0
- package/fontes/lexador/retorno-lexador.js +3 -0
- package/fontes/lexador/retorno-lexador.js.map +1 -0
- package/fontes/resolvedor/dialetos/egua-classico.d.ts +62 -0
- package/fontes/resolvedor/dialetos/egua-classico.js +343 -0
- package/fontes/resolvedor/dialetos/egua-classico.js.map +1 -0
- package/{src → fontes}/resolvedor/dialetos/index.d.ts +0 -0
- package/{src → fontes}/resolvedor/dialetos/index.js +0 -0
- package/fontes/resolvedor/dialetos/index.js.map +1 -0
- package/fontes/resolvedor/erro-resolvedor.d.ts +5 -0
- package/{src → fontes}/resolvedor/erro-resolvedor.js +3 -2
- package/fontes/resolvedor/erro-resolvedor.js.map +1 -0
- package/fontes/resolvedor/index.d.ts +62 -0
- package/fontes/resolvedor/index.js +342 -0
- package/fontes/resolvedor/index.js.map +1 -0
- package/{src → fontes}/resolvedor/pilha-escopos.d.ts +0 -0
- package/{src → fontes}/resolvedor/pilha-escopos.js +0 -0
- package/fontes/resolvedor/pilha-escopos.js.map +1 -0
- package/fontes/resolvedor/retorno-resolvedor.d.ts +4 -0
- package/fontes/resolvedor/retorno-resolvedor.js +3 -0
- package/fontes/resolvedor/retorno-resolvedor.js.map +1 -0
- package/{src → fontes}/tiposDeSimbolos.d.ts +0 -0
- package/{src → fontes}/tiposDeSimbolos.js +0 -0
- package/fontes/tiposDeSimbolos.js.map +1 -0
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +2 -1
- package/testes/avaliador-sintatico.test.js +14 -14
- package/testes/avaliador-sintatico.test.js.map +1 -1
- package/testes/biblioteca-global.test.d.ts +1 -0
- package/testes/biblioteca-global.test.js +131 -0
- package/testes/biblioteca-global.test.js.map +1 -0
- package/testes/egua-classico/avaliador-sintatico.test.d.ts +1 -0
- package/testes/egua-classico/avaliador-sintatico.test.js +33 -0
- package/testes/egua-classico/avaliador-sintatico.test.js.map +1 -0
- package/testes/egua-classico/interpretador.test.d.ts +1 -0
- package/testes/egua-classico/interpretador.test.js +219 -0
- package/testes/egua-classico/interpretador.test.js.map +1 -0
- package/testes/egua-classico/lexador.test.d.ts +1 -0
- package/testes/egua-classico/lexador.test.js +80 -0
- package/testes/egua-classico/lexador.test.js.map +1 -0
- package/testes/egua-classico/resolvedor.test.d.ts +1 -0
- package/testes/egua-classico/resolvedor.test.js +38 -0
- package/testes/egua-classico/resolvedor.test.js.map +1 -0
- package/testes/interpretador.test.js +154 -75
- package/testes/interpretador.test.js.map +1 -1
- package/testes/lexador.test.js +17 -14
- package/testes/lexador.test.js.map +1 -1
- package/testes/resolvedor.test.js +4 -4
- package/testes/resolvedor.test.js.map +1 -1
- package/src/ambiente.js.map +0 -1
- package/src/avaliador-sintatico/dialetos/egua-classico.d.ts +0 -60
- package/src/avaliador-sintatico/dialetos/egua-classico.js.map +0 -1
- package/src/avaliador-sintatico/dialetos/index.js.map +0 -1
- package/src/avaliador-sintatico/erros-avaliador.d.ts +0 -2
- package/src/avaliador-sintatico/erros-avaliador.js +0 -27
- package/src/avaliador-sintatico/erros-avaliador.js.map +0 -1
- package/src/avaliador-sintatico/index.d.ts +0 -62
- package/src/avaliador-sintatico/index.js.map +0 -1
- package/src/bibliotecas/biblioteca-global.js.map +0 -1
- package/src/bibliotecas/importar-biblioteca.js.map +0 -1
- package/src/construtos/atribuicao-sobrescrita.js.map +0 -1
- package/src/construtos/atribuir.d.ts +0 -7
- package/src/construtos/atribuir.js.map +0 -1
- package/src/construtos/binario.js.map +0 -1
- package/src/construtos/chamada.js.map +0 -1
- package/src/construtos/conjunto.js.map +0 -1
- package/src/construtos/construto.js.map +0 -1
- package/src/construtos/dicionario.js.map +0 -1
- package/src/construtos/funcao.js.map +0 -1
- package/src/construtos/get.d.ts +0 -7
- package/src/construtos/get.js +0 -15
- package/src/construtos/get.js.map +0 -1
- package/src/construtos/grouping.d.ts +0 -6
- package/src/construtos/grouping.js +0 -14
- package/src/construtos/grouping.js.map +0 -1
- package/src/construtos/index.js.map +0 -1
- package/src/construtos/isto.js.map +0 -1
- package/src/construtos/literal.js.map +0 -1
- package/src/construtos/logical.js +0 -16
- package/src/construtos/logical.js.map +0 -1
- package/src/construtos/subscript.d.ts +0 -8
- package/src/construtos/subscript.js +0 -16
- package/src/construtos/subscript.js.map +0 -1
- package/src/construtos/super.js.map +0 -1
- package/src/construtos/unario.js.map +0 -1
- package/src/construtos/variavel.d.ts +0 -6
- package/src/construtos/variavel.js.map +0 -1
- package/src/construtos/vetor.js.map +0 -1
- package/src/declaracoes/bloco.js.map +0 -1
- package/src/declaracoes/classe.js.map +0 -1
- package/src/declaracoes/continua.js.map +0 -1
- package/src/declaracoes/declaracao.js.map +0 -1
- package/src/declaracoes/enquanto.js.map +0 -1
- package/src/declaracoes/escolha.js.map +0 -1
- package/src/declaracoes/escreva.js.map +0 -1
- package/src/declaracoes/expressao.js.map +0 -1
- package/src/declaracoes/fazer.js.map +0 -1
- package/src/declaracoes/funcao.d.ts +0 -7
- package/src/declaracoes/funcao.js.map +0 -1
- package/src/declaracoes/importar.d.ts +0 -7
- package/src/declaracoes/importar.js.map +0 -1
- package/src/declaracoes/index.js.map +0 -1
- package/src/declaracoes/para.js.map +0 -1
- package/src/declaracoes/pausa.js.map +0 -1
- package/src/declaracoes/retorna.js.map +0 -1
- package/src/declaracoes/se.d.ts +0 -9
- package/src/declaracoes/se.js.map +0 -1
- package/src/declaracoes/tente.d.ts +0 -9
- package/src/declaracoes/tente.js.map +0 -1
- package/src/declaracoes/var.d.ts +0 -7
- package/src/declaracoes/var.js.map +0 -1
- package/src/delegua.js +0 -138
- package/src/delegua.js.map +0 -1
- package/src/estruturas/chamavel.js.map +0 -1
- package/src/estruturas/classe.js.map +0 -1
- package/src/estruturas/funcao-padrao.js.map +0 -1
- package/src/estruturas/funcao.js.map +0 -1
- package/src/estruturas/index.js.map +0 -1
- package/src/estruturas/instancia.d.ts +0 -8
- package/src/estruturas/instancia.js.map +0 -1
- package/src/estruturas/modulo.js.map +0 -1
- package/src/excecoes/erro-em-tempo-de-execucao.d.ts +0 -5
- package/src/excecoes/erro-em-tempo-de-execucao.js.map +0 -1
- package/src/excecoes/excecao-continuar.js.map +0 -1
- package/src/excecoes/excecao-quebra.d.ts +0 -2
- package/src/excecoes/excecao-quebra.js.map +0 -1
- package/src/excecoes/excecao-retornar.js.map +0 -1
- package/src/excecoes/index.js.map +0 -1
- package/src/interfaces/avaliador-sintatico-interface.d.ts +0 -55
- package/src/interfaces/avaliador-sintatico-interface.js.map +0 -1
- package/src/interfaces/index.js.map +0 -1
- package/src/interfaces/interpretador-interface.d.ts +0 -51
- package/src/interfaces/interpretador-interface.js.map +0 -1
- package/src/interfaces/lexador-interface.d.ts +0 -23
- package/src/interfaces/lexador-interface.js.map +0 -1
- package/src/interfaces/pilha-interface.js.map +0 -1
- package/src/interfaces/resolvedor-interface.d.ts +0 -50
- package/src/interfaces/resolvedor-interface.js.map +0 -1
- package/src/interfaces/simbolo-interface.js.map +0 -1
- package/src/interpretador/dialetos/egua-classico.d.ts +0 -58
- package/src/interpretador/dialetos/egua-classico.js.map +0 -1
- package/src/interpretador/dialetos/index.js.map +0 -1
- package/src/interpretador/index.d.ts +0 -59
- package/src/interpretador/index.js.map +0 -1
- package/src/lexador/dialetos/egua-classico.js.map +0 -1
- package/src/lexador/dialetos/index.js.map +0 -1
- package/src/lexador/index.js.map +0 -1
- package/src/resolvedor/dialetos/egua-classico.d.ts +0 -59
- package/src/resolvedor/dialetos/egua-classico.js +0 -331
- package/src/resolvedor/dialetos/egua-classico.js.map +0 -1
- package/src/resolvedor/dialetos/index.js.map +0 -1
- package/src/resolvedor/erro-resolvedor.d.ts +0 -4
- package/src/resolvedor/erro-resolvedor.js.map +0 -1
- package/src/resolvedor/index.d.ts +0 -60
- package/src/resolvedor/index.js +0 -331
- package/src/resolvedor/index.js.map +0 -1
- package/src/resolvedor/pilha-escopos.js.map +0 -1
- package/src/tiposDeSimbolos.js.map +0 -1
|
@@ -1,23 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
2
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
29
|
exports.Interpretador = void 0;
|
|
4
|
-
var
|
|
30
|
+
var caminho = __importStar(require("path"));
|
|
31
|
+
var fs = __importStar(require("fs"));
|
|
5
32
|
var perf_hooks_1 = require("perf_hooks");
|
|
33
|
+
var tiposDeSimbolos_1 = __importDefault(require("../tiposDeSimbolos"));
|
|
6
34
|
var ambiente_1 = require("../ambiente");
|
|
7
35
|
var delegua_1 = require("../delegua");
|
|
8
|
-
var biblioteca_global_1 = require("../bibliotecas/biblioteca-global");
|
|
9
|
-
var
|
|
10
|
-
var fs = require("fs");
|
|
11
|
-
var importar_biblioteca_1 = require("../bibliotecas/importar-biblioteca");
|
|
12
|
-
var chamavel_1 = require("../estruturas/chamavel");
|
|
13
|
-
var funcao_padrao_1 = require("../estruturas/funcao-padrao");
|
|
14
|
-
var classe_1 = require("../estruturas/classe");
|
|
15
|
-
var funcao_1 = require("../estruturas/funcao");
|
|
16
|
-
var instancia_1 = require("../estruturas/instancia");
|
|
17
|
-
var modulo_1 = require("../estruturas/modulo");
|
|
36
|
+
var biblioteca_global_1 = __importDefault(require("../bibliotecas/biblioteca-global"));
|
|
37
|
+
var importar_biblioteca_1 = __importDefault(require("../bibliotecas/importar-biblioteca"));
|
|
18
38
|
var excecoes_1 = require("../excecoes");
|
|
39
|
+
var estruturas_1 = require("../estruturas");
|
|
19
40
|
/**
|
|
20
|
-
* O Interpretador visita todos os elementos complexos gerados pelo analisador sintático (Parser)
|
|
41
|
+
* O Interpretador visita todos os elementos complexos gerados pelo analisador sintático (Parser),
|
|
21
42
|
* e de fato executa a lógica de programação descrita no código.
|
|
22
43
|
*/
|
|
23
44
|
var Interpretador = /** @class */ (function () {
|
|
@@ -31,19 +52,19 @@ var Interpretador = /** @class */ (function () {
|
|
|
31
52
|
this.locais = new Map();
|
|
32
53
|
this.global = (0, biblioteca_global_1.default)(this, this.global);
|
|
33
54
|
}
|
|
34
|
-
Interpretador.prototype.resolver = function (
|
|
35
|
-
this.locais.set(
|
|
55
|
+
Interpretador.prototype.resolver = function (expressao, profundidade) {
|
|
56
|
+
this.locais.set(expressao, profundidade);
|
|
36
57
|
};
|
|
37
|
-
Interpretador.prototype.visitarExpressaoLiteral = function (
|
|
38
|
-
return
|
|
58
|
+
Interpretador.prototype.visitarExpressaoLiteral = function (expressao) {
|
|
59
|
+
return expressao.valor;
|
|
39
60
|
};
|
|
40
|
-
Interpretador.prototype.avaliar = function (
|
|
41
|
-
if (
|
|
42
|
-
return
|
|
61
|
+
Interpretador.prototype.avaliar = function (expressao) {
|
|
62
|
+
if (expressao.aceitar) {
|
|
63
|
+
return expressao.aceitar(this);
|
|
43
64
|
}
|
|
44
65
|
};
|
|
45
|
-
Interpretador.prototype.visitarExpressaoAgrupamento = function (
|
|
46
|
-
return this.avaliar(
|
|
66
|
+
Interpretador.prototype.visitarExpressaoAgrupamento = function (expressao) {
|
|
67
|
+
return this.avaliar(expressao.expressao);
|
|
47
68
|
};
|
|
48
69
|
Interpretador.prototype.eVerdadeiro = function (objeto) {
|
|
49
70
|
if (objeto === null)
|
|
@@ -55,13 +76,13 @@ var Interpretador = /** @class */ (function () {
|
|
|
55
76
|
Interpretador.prototype.verificarOperandoNumero = function (operador, operando) {
|
|
56
77
|
if (typeof operando === 'number')
|
|
57
78
|
return;
|
|
58
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(operador, 'Operando precisa ser um número.');
|
|
79
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(operador, 'Operando precisa ser um número.', operador.linha);
|
|
59
80
|
};
|
|
60
|
-
Interpretador.prototype.visitarExpressaoUnaria = function (
|
|
61
|
-
var direita = this.avaliar(
|
|
62
|
-
switch (
|
|
81
|
+
Interpretador.prototype.visitarExpressaoUnaria = function (expressao) {
|
|
82
|
+
var direita = this.avaliar(expressao.direita);
|
|
83
|
+
switch (expressao.operador.tipo) {
|
|
63
84
|
case tiposDeSimbolos_1.default.SUBTRACAO:
|
|
64
|
-
this.verificarOperandoNumero(
|
|
85
|
+
this.verificarOperandoNumero(expressao.operador, direita);
|
|
65
86
|
return -direita;
|
|
66
87
|
case tiposDeSimbolos_1.default.NEGACAO:
|
|
67
88
|
return !this.eVerdadeiro(direita);
|
|
@@ -80,29 +101,29 @@ var Interpretador = /** @class */ (function () {
|
|
|
80
101
|
Interpretador.prototype.verificarOperandosNumeros = function (operador, direita, esquerda) {
|
|
81
102
|
if (typeof direita === 'number' && typeof esquerda === 'number')
|
|
82
103
|
return;
|
|
83
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(operador, 'Operandos precisam ser números.');
|
|
104
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(operador, 'Operandos precisam ser números.', operador.linha);
|
|
84
105
|
};
|
|
85
|
-
Interpretador.prototype.visitarExpressaoBinaria = function (
|
|
86
|
-
var esquerda = this.avaliar(
|
|
87
|
-
var direita = this.avaliar(
|
|
88
|
-
switch (
|
|
106
|
+
Interpretador.prototype.visitarExpressaoBinaria = function (expressao) {
|
|
107
|
+
var esquerda = this.avaliar(expressao.esquerda);
|
|
108
|
+
var direita = this.avaliar(expressao.direita);
|
|
109
|
+
switch (expressao.operador.tipo) {
|
|
89
110
|
case tiposDeSimbolos_1.default.EXPONENCIACAO:
|
|
90
|
-
this.verificarOperandosNumeros(
|
|
111
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
91
112
|
return Math.pow(esquerda, direita);
|
|
92
113
|
case tiposDeSimbolos_1.default.MAIOR:
|
|
93
|
-
this.verificarOperandosNumeros(
|
|
114
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
94
115
|
return Number(esquerda) > Number(direita);
|
|
95
116
|
case tiposDeSimbolos_1.default.MAIOR_IGUAL:
|
|
96
|
-
this.verificarOperandosNumeros(
|
|
117
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
97
118
|
return Number(esquerda) >= Number(direita);
|
|
98
119
|
case tiposDeSimbolos_1.default.MENOR:
|
|
99
|
-
this.verificarOperandosNumeros(
|
|
120
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
100
121
|
return Number(esquerda) < Number(direita);
|
|
101
122
|
case tiposDeSimbolos_1.default.MENOR_IGUAL:
|
|
102
|
-
this.verificarOperandosNumeros(
|
|
123
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
103
124
|
return Number(esquerda) <= Number(direita);
|
|
104
125
|
case tiposDeSimbolos_1.default.SUBTRACAO:
|
|
105
|
-
this.verificarOperandosNumeros(
|
|
126
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
106
127
|
return Number(esquerda) - Number(direita);
|
|
107
128
|
case tiposDeSimbolos_1.default.ADICAO:
|
|
108
129
|
if (typeof esquerda === 'number' &&
|
|
@@ -113,28 +134,28 @@ var Interpretador = /** @class */ (function () {
|
|
|
113
134
|
return String(esquerda) + String(direita);
|
|
114
135
|
}
|
|
115
136
|
case tiposDeSimbolos_1.default.DIVISAO:
|
|
116
|
-
this.verificarOperandosNumeros(
|
|
137
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
117
138
|
return Number(esquerda) / Number(direita);
|
|
118
139
|
case tiposDeSimbolos_1.default.MULTIPLICACAO:
|
|
119
|
-
this.verificarOperandosNumeros(
|
|
140
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
120
141
|
return Number(esquerda) * Number(direita);
|
|
121
142
|
case tiposDeSimbolos_1.default.MODULO:
|
|
122
|
-
this.verificarOperandosNumeros(
|
|
143
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
123
144
|
return Number(esquerda) % Number(direita);
|
|
124
145
|
case tiposDeSimbolos_1.default.BIT_AND:
|
|
125
|
-
this.verificarOperandosNumeros(
|
|
146
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
126
147
|
return Number(esquerda) & Number(direita);
|
|
127
148
|
case tiposDeSimbolos_1.default.BIT_XOR:
|
|
128
|
-
this.verificarOperandosNumeros(
|
|
149
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
129
150
|
return Number(esquerda) ^ Number(direita);
|
|
130
151
|
case tiposDeSimbolos_1.default.BIT_OR:
|
|
131
|
-
this.verificarOperandosNumeros(
|
|
152
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
132
153
|
return Number(esquerda) | Number(direita);
|
|
133
154
|
case tiposDeSimbolos_1.default.MENOR_MENOR:
|
|
134
|
-
this.verificarOperandosNumeros(
|
|
155
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
135
156
|
return Number(esquerda) << Number(direita);
|
|
136
157
|
case tiposDeSimbolos_1.default.MAIOR_MAIOR:
|
|
137
|
-
this.verificarOperandosNumeros(
|
|
158
|
+
this.verificarOperandosNumeros(expressao.operador, esquerda, direita);
|
|
138
159
|
return Number(esquerda) >> Number(direita);
|
|
139
160
|
case tiposDeSimbolos_1.default.DIFERENTE:
|
|
140
161
|
return !this.eIgual(esquerda, direita);
|
|
@@ -143,20 +164,20 @@ var Interpretador = /** @class */ (function () {
|
|
|
143
164
|
}
|
|
144
165
|
return null;
|
|
145
166
|
};
|
|
146
|
-
Interpretador.prototype.visitarExpressaoDeChamada = function (
|
|
147
|
-
var entidadeChamada = this.avaliar(
|
|
167
|
+
Interpretador.prototype.visitarExpressaoDeChamada = function (expressao) {
|
|
168
|
+
var entidadeChamada = this.avaliar(expressao.entidadeChamada);
|
|
148
169
|
var argumentos = [];
|
|
149
|
-
for (var i = 0; i <
|
|
150
|
-
argumentos.push(this.avaliar(
|
|
170
|
+
for (var i = 0; i < expressao.argumentos.length; i++) {
|
|
171
|
+
argumentos.push(this.avaliar(expressao.argumentos[i]));
|
|
151
172
|
}
|
|
152
|
-
if (!(entidadeChamada instanceof
|
|
153
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
173
|
+
if (!(entidadeChamada instanceof estruturas_1.Chamavel)) {
|
|
174
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.parentese, 'Só pode chamar função ou classe.', expressao.linha);
|
|
154
175
|
}
|
|
155
176
|
var parametros;
|
|
156
|
-
if (entidadeChamada instanceof
|
|
177
|
+
if (entidadeChamada instanceof estruturas_1.DeleguaFuncao) {
|
|
157
178
|
parametros = entidadeChamada.declaracao.parametros;
|
|
158
179
|
}
|
|
159
|
-
else if (entidadeChamada instanceof
|
|
180
|
+
else if (entidadeChamada instanceof estruturas_1.DeleguaClasse) {
|
|
160
181
|
parametros = entidadeChamada.metodos.init
|
|
161
182
|
? entidadeChamada.metodos.init.declaracao.parametros
|
|
162
183
|
: [];
|
|
@@ -180,41 +201,41 @@ var Interpretador = /** @class */ (function () {
|
|
|
180
201
|
argumentos = novosArgumentos;
|
|
181
202
|
}
|
|
182
203
|
}
|
|
183
|
-
if (entidadeChamada instanceof
|
|
184
|
-
return entidadeChamada.chamar(this, argumentos,
|
|
204
|
+
if (entidadeChamada instanceof estruturas_1.FuncaoPadrao) {
|
|
205
|
+
return entidadeChamada.chamar(this, argumentos, expressao.entidadeChamada.nome);
|
|
185
206
|
}
|
|
186
207
|
return entidadeChamada.chamar(this, argumentos);
|
|
187
208
|
};
|
|
188
|
-
Interpretador.prototype.visitarExpressaoDeAtribuicao = function (
|
|
189
|
-
var valor = this.avaliar(
|
|
190
|
-
var distancia = this.locais.get(
|
|
209
|
+
Interpretador.prototype.visitarExpressaoDeAtribuicao = function (expressao) {
|
|
210
|
+
var valor = this.avaliar(expressao.valor);
|
|
211
|
+
var distancia = this.locais.get(expressao);
|
|
191
212
|
if (distancia !== undefined) {
|
|
192
|
-
this.ambiente.atribuirVariavelEm(distancia,
|
|
213
|
+
this.ambiente.atribuirVariavelEm(distancia, expressao.simbolo, valor);
|
|
193
214
|
}
|
|
194
215
|
else {
|
|
195
|
-
this.ambiente.atribuirVariavel(
|
|
216
|
+
this.ambiente.atribuirVariavel(expressao.simbolo, valor);
|
|
196
217
|
}
|
|
197
218
|
return valor;
|
|
198
219
|
};
|
|
199
|
-
Interpretador.prototype.procurarVariavel = function (
|
|
200
|
-
var distancia = this.locais.get(
|
|
220
|
+
Interpretador.prototype.procurarVariavel = function (simbolo, expressao) {
|
|
221
|
+
var distancia = this.locais.get(expressao);
|
|
201
222
|
if (distancia !== undefined) {
|
|
202
|
-
return this.ambiente.obterVariavelEm(distancia,
|
|
223
|
+
return this.ambiente.obterVariavelEm(distancia, simbolo.lexema);
|
|
203
224
|
}
|
|
204
225
|
else {
|
|
205
|
-
return this.global.obterVariavel(
|
|
226
|
+
return this.global.obterVariavel(simbolo);
|
|
206
227
|
}
|
|
207
228
|
};
|
|
208
|
-
Interpretador.prototype.visitarExpressaoDeVariavel = function (
|
|
209
|
-
return this.procurarVariavel(
|
|
229
|
+
Interpretador.prototype.visitarExpressaoDeVariavel = function (expressao) {
|
|
230
|
+
return this.procurarVariavel(expressao.simbolo, expressao);
|
|
210
231
|
};
|
|
211
|
-
Interpretador.prototype.visitarDeclaracaoDeExpressao = function (
|
|
212
|
-
return this.avaliar(
|
|
232
|
+
Interpretador.prototype.visitarDeclaracaoDeExpressao = function (declaracao) {
|
|
233
|
+
return this.avaliar(declaracao.expressao);
|
|
213
234
|
};
|
|
214
|
-
Interpretador.prototype.visitarExpressaoLogica = function (
|
|
215
|
-
var esquerda = this.avaliar(
|
|
216
|
-
if (
|
|
217
|
-
var direita = this.avaliar(
|
|
235
|
+
Interpretador.prototype.visitarExpressaoLogica = function (expressao) {
|
|
236
|
+
var esquerda = this.avaliar(expressao.esquerda);
|
|
237
|
+
if (expressao.operador.tipo === tiposDeSimbolos_1.default.EM) {
|
|
238
|
+
var direita = this.avaliar(expressao.direita);
|
|
218
239
|
if (Array.isArray(direita) || typeof direita === 'string') {
|
|
219
240
|
return direita.includes(esquerda);
|
|
220
241
|
}
|
|
@@ -222,53 +243,53 @@ var Interpretador = /** @class */ (function () {
|
|
|
222
243
|
return esquerda in direita;
|
|
223
244
|
}
|
|
224
245
|
else {
|
|
225
|
-
throw new excecoes_1.ErroEmTempoDeExecucao("Tipo de chamada inválida com 'em'.");
|
|
246
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(esquerda, "Tipo de chamada inválida com 'em'.", expressao.linha);
|
|
226
247
|
}
|
|
227
248
|
}
|
|
228
249
|
// se um estado for verdadeiro, retorna verdadeiro
|
|
229
|
-
if (
|
|
250
|
+
if (expressao.operador.tipo === tiposDeSimbolos_1.default.OU) {
|
|
230
251
|
if (this.eVerdadeiro(esquerda))
|
|
231
252
|
return esquerda;
|
|
232
253
|
}
|
|
233
254
|
// se um estado for falso, retorna falso
|
|
234
|
-
if (
|
|
255
|
+
if (expressao.operador.tipo === tiposDeSimbolos_1.default.E) {
|
|
235
256
|
if (!this.eVerdadeiro(esquerda))
|
|
236
257
|
return esquerda;
|
|
237
258
|
}
|
|
238
|
-
return this.avaliar(
|
|
259
|
+
return this.avaliar(expressao.direita);
|
|
239
260
|
};
|
|
240
|
-
Interpretador.prototype.visitarExpressaoSe = function (
|
|
241
|
-
if (this.eVerdadeiro(this.avaliar(
|
|
242
|
-
this.executar(
|
|
261
|
+
Interpretador.prototype.visitarExpressaoSe = function (declaracao) {
|
|
262
|
+
if (this.eVerdadeiro(this.avaliar(declaracao.condicao))) {
|
|
263
|
+
this.executar(declaracao.caminhoEntao);
|
|
243
264
|
return null;
|
|
244
265
|
}
|
|
245
|
-
for (var i = 0; i <
|
|
246
|
-
var atual =
|
|
266
|
+
for (var i = 0; i < declaracao.caminhosSeSenao.length; i++) {
|
|
267
|
+
var atual = declaracao.caminhosSeSenao[i];
|
|
247
268
|
if (this.eVerdadeiro(this.avaliar(atual.condicao))) {
|
|
248
|
-
this.executar(atual.
|
|
269
|
+
this.executar(atual.caminho);
|
|
249
270
|
return null;
|
|
250
271
|
}
|
|
251
272
|
}
|
|
252
|
-
if (
|
|
253
|
-
this.executar(
|
|
273
|
+
if (declaracao.caminhoSenao !== null) {
|
|
274
|
+
this.executar(declaracao.caminhoSenao);
|
|
254
275
|
}
|
|
255
276
|
return null;
|
|
256
277
|
};
|
|
257
|
-
Interpretador.prototype.visitarExpressaoPara = function (
|
|
258
|
-
if (
|
|
259
|
-
this.avaliar(
|
|
278
|
+
Interpretador.prototype.visitarExpressaoPara = function (declaracao) {
|
|
279
|
+
if (declaracao.inicializador !== null) {
|
|
280
|
+
this.avaliar(declaracao.inicializador);
|
|
260
281
|
}
|
|
261
282
|
while (true) {
|
|
262
|
-
if (
|
|
263
|
-
if (!this.eVerdadeiro(this.avaliar(
|
|
283
|
+
if (declaracao.condicao !== null) {
|
|
284
|
+
if (!this.eVerdadeiro(this.avaliar(declaracao.condicao))) {
|
|
264
285
|
break;
|
|
265
286
|
}
|
|
266
287
|
}
|
|
267
288
|
try {
|
|
268
|
-
this.executar(
|
|
289
|
+
this.executar(declaracao.corpo);
|
|
269
290
|
}
|
|
270
291
|
catch (erro) {
|
|
271
|
-
if (erro instanceof excecoes_1.
|
|
292
|
+
if (erro instanceof excecoes_1.ExcecaoSustar) {
|
|
272
293
|
break;
|
|
273
294
|
}
|
|
274
295
|
else if (erro instanceof excecoes_1.ExcecaoContinuar) {
|
|
@@ -277,19 +298,19 @@ var Interpretador = /** @class */ (function () {
|
|
|
277
298
|
throw erro;
|
|
278
299
|
}
|
|
279
300
|
}
|
|
280
|
-
if (
|
|
281
|
-
this.avaliar(
|
|
301
|
+
if (declaracao.incrementar !== null) {
|
|
302
|
+
this.avaliar(declaracao.incrementar);
|
|
282
303
|
}
|
|
283
304
|
}
|
|
284
305
|
return null;
|
|
285
306
|
};
|
|
286
|
-
Interpretador.prototype.visitarExpressaoFazer = function (
|
|
307
|
+
Interpretador.prototype.visitarExpressaoFazer = function (declaracao) {
|
|
287
308
|
do {
|
|
288
309
|
try {
|
|
289
|
-
this.executar(
|
|
310
|
+
this.executar(declaracao.caminhoFazer);
|
|
290
311
|
}
|
|
291
312
|
catch (erro) {
|
|
292
|
-
if (erro instanceof excecoes_1.
|
|
313
|
+
if (erro instanceof excecoes_1.ExcecaoSustar) {
|
|
293
314
|
break;
|
|
294
315
|
}
|
|
295
316
|
else if (erro instanceof excecoes_1.ExcecaoContinuar) {
|
|
@@ -298,22 +319,22 @@ var Interpretador = /** @class */ (function () {
|
|
|
298
319
|
throw erro;
|
|
299
320
|
}
|
|
300
321
|
}
|
|
301
|
-
} while (this.eVerdadeiro(this.avaliar(
|
|
322
|
+
} while (this.eVerdadeiro(this.avaliar(declaracao.condicaoEnquanto)));
|
|
302
323
|
};
|
|
303
|
-
Interpretador.prototype.visitarExpressaoEscolha = function (
|
|
304
|
-
var
|
|
305
|
-
var
|
|
306
|
-
var
|
|
307
|
-
var
|
|
324
|
+
Interpretador.prototype.visitarExpressaoEscolha = function (declaracao) {
|
|
325
|
+
var condicaoEscolha = this.avaliar(declaracao.condicao);
|
|
326
|
+
var caminhos = declaracao.caminhos;
|
|
327
|
+
var caminhoPadrao = declaracao.caminhoPadrao;
|
|
328
|
+
var encontrado = false;
|
|
308
329
|
try {
|
|
309
|
-
for (var i = 0; i <
|
|
310
|
-
var
|
|
311
|
-
for (var j = 0; j <
|
|
312
|
-
if (this.avaliar(
|
|
313
|
-
|
|
330
|
+
for (var i = 0; i < caminhos.length; i++) {
|
|
331
|
+
var caminho_1 = caminhos[i];
|
|
332
|
+
for (var j = 0; j < caminho_1.conditions.length; j++) {
|
|
333
|
+
if (this.avaliar(caminho_1.conditions[j]) === condicaoEscolha) {
|
|
334
|
+
encontrado = true;
|
|
314
335
|
try {
|
|
315
|
-
for (var k = 0; k <
|
|
316
|
-
this.executar(
|
|
336
|
+
for (var k = 0; k < caminho_1.declaracoes.length; k++) {
|
|
337
|
+
this.executar(caminho_1.declaracoes[k]);
|
|
317
338
|
}
|
|
318
339
|
}
|
|
319
340
|
catch (erro) {
|
|
@@ -326,48 +347,48 @@ var Interpretador = /** @class */ (function () {
|
|
|
326
347
|
}
|
|
327
348
|
}
|
|
328
349
|
}
|
|
329
|
-
if (
|
|
330
|
-
for (var i = 0; i <
|
|
331
|
-
this.executar(
|
|
350
|
+
if (caminhoPadrao !== null && encontrado === false) {
|
|
351
|
+
for (var i = 0; i < caminhoPadrao.declaracoes.length; i++) {
|
|
352
|
+
this.executar(caminhoPadrao['declaracoes'][i]);
|
|
332
353
|
}
|
|
333
354
|
}
|
|
334
355
|
}
|
|
335
356
|
catch (erro) {
|
|
336
|
-
if (erro instanceof excecoes_1.
|
|
357
|
+
if (erro instanceof excecoes_1.ExcecaoSustar) {
|
|
337
358
|
}
|
|
338
359
|
else {
|
|
339
360
|
throw erro;
|
|
340
361
|
}
|
|
341
362
|
}
|
|
342
363
|
};
|
|
343
|
-
Interpretador.prototype.visitarExpressaoTente = function (
|
|
364
|
+
Interpretador.prototype.visitarExpressaoTente = function (declaracao) {
|
|
344
365
|
try {
|
|
345
366
|
var sucesso = true;
|
|
346
367
|
try {
|
|
347
|
-
this.executarBloco(
|
|
368
|
+
this.executarBloco(declaracao.caminhoTente, new ambiente_1.Ambiente(this.ambiente));
|
|
348
369
|
}
|
|
349
370
|
catch (erro) {
|
|
350
371
|
sucesso = false;
|
|
351
|
-
if (
|
|
352
|
-
this.executarBloco(
|
|
372
|
+
if (declaracao.caminhoPegue !== null) {
|
|
373
|
+
this.executarBloco(declaracao.caminhoPegue, new ambiente_1.Ambiente(this.ambiente));
|
|
353
374
|
}
|
|
354
375
|
}
|
|
355
|
-
if (sucesso &&
|
|
356
|
-
this.executarBloco(
|
|
376
|
+
if (sucesso && declaracao.caminhoSenao !== null) {
|
|
377
|
+
this.executarBloco(declaracao.caminhoSenao, new ambiente_1.Ambiente(this.ambiente));
|
|
357
378
|
}
|
|
358
379
|
}
|
|
359
380
|
finally {
|
|
360
|
-
if (
|
|
361
|
-
this.executarBloco(
|
|
381
|
+
if (declaracao.caminhoFinalmente !== null)
|
|
382
|
+
this.executarBloco(declaracao.caminhoFinalmente, new ambiente_1.Ambiente(this.ambiente));
|
|
362
383
|
}
|
|
363
384
|
};
|
|
364
|
-
Interpretador.prototype.visitarExpressaoEnquanto = function (
|
|
365
|
-
while (this.eVerdadeiro(this.avaliar(
|
|
385
|
+
Interpretador.prototype.visitarExpressaoEnquanto = function (declaracao) {
|
|
386
|
+
while (this.eVerdadeiro(this.avaliar(declaracao.condicao))) {
|
|
366
387
|
try {
|
|
367
|
-
this.executar(
|
|
388
|
+
this.executar(declaracao.corpo);
|
|
368
389
|
}
|
|
369
390
|
catch (erro) {
|
|
370
|
-
if (erro instanceof excecoes_1.
|
|
391
|
+
if (erro instanceof excecoes_1.ExcecaoSustar) {
|
|
371
392
|
break;
|
|
372
393
|
}
|
|
373
394
|
else if (erro instanceof excecoes_1.ExcecaoContinuar) {
|
|
@@ -379,43 +400,40 @@ var Interpretador = /** @class */ (function () {
|
|
|
379
400
|
}
|
|
380
401
|
return null;
|
|
381
402
|
};
|
|
382
|
-
Interpretador.prototype.visitarExpressaoImportar = function (
|
|
383
|
-
var caminhoRelativo = this.avaliar(
|
|
403
|
+
Interpretador.prototype.visitarExpressaoImportar = function (declaracao) {
|
|
404
|
+
var caminhoRelativo = this.avaliar(declaracao.caminho);
|
|
384
405
|
var caminhoTotal = caminho.join(this.diretorioBase, caminhoRelativo);
|
|
385
|
-
// const pastaTotal = caminho.dirname(caminhoTotal);
|
|
386
406
|
var nomeArquivo = caminho.basename(caminhoTotal);
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
conteudoImportacao = (0, importar_biblioteca_1.default)(caminhoRelativo);
|
|
390
|
-
if (conteudoImportacao)
|
|
391
|
-
return conteudoImportacao;
|
|
407
|
+
if (!caminhoTotal.endsWith('.egua') && !caminhoTotal.endsWith('.delegua')) {
|
|
408
|
+
return (0, importar_biblioteca_1.default)(caminhoRelativo);
|
|
392
409
|
}
|
|
393
410
|
try {
|
|
394
411
|
if (!fs.existsSync(caminhoTotal)) {
|
|
395
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
412
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(declaracao.simboloFechamento, 'Não foi possível encontrar arquivo importado.', declaracao.linha);
|
|
396
413
|
}
|
|
397
414
|
}
|
|
398
415
|
catch (erro) {
|
|
399
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
416
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(declaracao.simboloFechamento, 'Não foi possível ler o arquivo.', declaracao.linha);
|
|
400
417
|
}
|
|
401
|
-
conteudoImportacao = fs.readFileSync(caminhoTotal)
|
|
418
|
+
var conteudoImportacao = fs.readFileSync(caminhoTotal)
|
|
419
|
+
.toString()
|
|
420
|
+
.split('\n');
|
|
402
421
|
var delegua = new delegua_1.Delegua(this.Delegua.dialeto, this.performance, nomeArquivo);
|
|
403
422
|
delegua.executar(conteudoImportacao);
|
|
404
|
-
|
|
405
|
-
var exportar = delegua.interpretador.global.valores.exports;
|
|
423
|
+
var funcoesDeclaradas = delegua.interpretador.global.obterTodasDeleguaFuncao();
|
|
406
424
|
var eDicionario = function (objeto) { return objeto.constructor === Object; };
|
|
407
|
-
if (eDicionario(
|
|
408
|
-
var novoModulo = new
|
|
409
|
-
var chaves = Object.keys(
|
|
425
|
+
if (eDicionario(funcoesDeclaradas)) {
|
|
426
|
+
var novoModulo = new estruturas_1.DeleguaModulo();
|
|
427
|
+
var chaves = Object.keys(funcoesDeclaradas);
|
|
410
428
|
for (var i = 0; i < chaves.length; i++) {
|
|
411
|
-
novoModulo[chaves[i]] =
|
|
429
|
+
novoModulo.componentes[chaves[i]] = funcoesDeclaradas[chaves[i]];
|
|
412
430
|
}
|
|
413
431
|
return novoModulo;
|
|
414
432
|
}
|
|
415
|
-
return
|
|
433
|
+
return funcoesDeclaradas;
|
|
416
434
|
};
|
|
417
|
-
Interpretador.prototype.visitarExpressaoEscreva = function (
|
|
418
|
-
var valor = this.avaliar(
|
|
435
|
+
Interpretador.prototype.visitarExpressaoEscreva = function (declaracao) {
|
|
436
|
+
var valor = this.avaliar(declaracao.expressao);
|
|
419
437
|
console.log(this.paraTexto(valor));
|
|
420
438
|
return null;
|
|
421
439
|
};
|
|
@@ -437,37 +455,37 @@ var Interpretador = /** @class */ (function () {
|
|
|
437
455
|
this.ambiente = anterior;
|
|
438
456
|
}
|
|
439
457
|
};
|
|
440
|
-
Interpretador.prototype.visitarExpressaoBloco = function (
|
|
441
|
-
this.executarBloco(
|
|
458
|
+
Interpretador.prototype.visitarExpressaoBloco = function (declaracao) {
|
|
459
|
+
this.executarBloco(declaracao.declaracoes, new ambiente_1.Ambiente(this.ambiente));
|
|
442
460
|
return null;
|
|
443
461
|
};
|
|
444
|
-
Interpretador.prototype.visitarExpressaoVar = function (
|
|
462
|
+
Interpretador.prototype.visitarExpressaoVar = function (declaracao) {
|
|
445
463
|
var valor = null;
|
|
446
|
-
if (
|
|
447
|
-
valor = this.avaliar(
|
|
464
|
+
if (declaracao.inicializador !== null) {
|
|
465
|
+
valor = this.avaliar(declaracao.inicializador);
|
|
448
466
|
}
|
|
449
|
-
this.ambiente.definirVariavel(
|
|
467
|
+
this.ambiente.definirVariavel(declaracao.simbolo.lexema, valor);
|
|
450
468
|
return null;
|
|
451
469
|
};
|
|
452
|
-
Interpretador.prototype.visitarExpressaoContinua = function (
|
|
470
|
+
Interpretador.prototype.visitarExpressaoContinua = function (declaracao) {
|
|
453
471
|
throw new excecoes_1.ExcecaoContinuar();
|
|
454
472
|
};
|
|
455
|
-
Interpretador.prototype.
|
|
456
|
-
throw new excecoes_1.
|
|
473
|
+
Interpretador.prototype.visitarExpressaoSustar = function (declaracao) {
|
|
474
|
+
throw new excecoes_1.ExcecaoSustar();
|
|
457
475
|
};
|
|
458
|
-
Interpretador.prototype.visitarExpressaoRetornar = function (
|
|
476
|
+
Interpretador.prototype.visitarExpressaoRetornar = function (declaracao) {
|
|
459
477
|
var valor = null;
|
|
460
|
-
if (
|
|
461
|
-
valor = this.avaliar(
|
|
478
|
+
if (declaracao.valor != null)
|
|
479
|
+
valor = this.avaliar(declaracao.valor);
|
|
462
480
|
throw new excecoes_1.ExcecaoRetornar(valor);
|
|
463
481
|
};
|
|
464
|
-
Interpretador.prototype.visitarExpressaoDeleguaFuncao = function (
|
|
465
|
-
return new
|
|
482
|
+
Interpretador.prototype.visitarExpressaoDeleguaFuncao = function (expressao) {
|
|
483
|
+
return new estruturas_1.DeleguaFuncao(null, expressao, this.ambiente, false);
|
|
466
484
|
};
|
|
467
|
-
Interpretador.prototype.visitarExpressaoAtribuicaoSobrescrita = function (
|
|
468
|
-
var objeto = this.avaliar(
|
|
469
|
-
var indice = this.avaliar(
|
|
470
|
-
var valor = this.avaliar(
|
|
485
|
+
Interpretador.prototype.visitarExpressaoAtribuicaoSobrescrita = function (expressao) {
|
|
486
|
+
var objeto = this.avaliar(expressao.objeto);
|
|
487
|
+
var indice = this.avaliar(expressao.indice);
|
|
488
|
+
var valor = this.avaliar(expressao.valor);
|
|
471
489
|
if (Array.isArray(objeto)) {
|
|
472
490
|
if (indice < 0 && objeto.length !== 0) {
|
|
473
491
|
while (indice < 0) {
|
|
@@ -480,22 +498,22 @@ var Interpretador = /** @class */ (function () {
|
|
|
480
498
|
objeto[indice] = valor;
|
|
481
499
|
}
|
|
482
500
|
else if (objeto.constructor === Object ||
|
|
483
|
-
objeto instanceof
|
|
484
|
-
objeto instanceof
|
|
485
|
-
objeto instanceof
|
|
486
|
-
objeto instanceof
|
|
501
|
+
objeto instanceof estruturas_1.DeleguaInstancia ||
|
|
502
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
503
|
+
objeto instanceof estruturas_1.DeleguaClasse ||
|
|
504
|
+
objeto instanceof estruturas_1.DeleguaModulo) {
|
|
487
505
|
objeto[indice] = valor;
|
|
488
506
|
}
|
|
489
507
|
else {
|
|
490
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
508
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.objeto.nome, 'Somente listas, dicionários, classes e objetos podem ser mudados por sobrescrita.', expressao.linha);
|
|
491
509
|
}
|
|
492
510
|
};
|
|
493
|
-
Interpretador.prototype.
|
|
511
|
+
Interpretador.prototype.visitarExpressaoAcessoIndiceVariavel = function (expressao) {
|
|
494
512
|
var objeto = this.avaliar(expressao.entidadeChamada);
|
|
495
513
|
var indice = this.avaliar(expressao.indice);
|
|
496
514
|
if (Array.isArray(objeto)) {
|
|
497
515
|
if (!Number.isInteger(indice)) {
|
|
498
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.
|
|
516
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha);
|
|
499
517
|
}
|
|
500
518
|
if (indice < 0 && objeto.length !== 0) {
|
|
501
519
|
while (indice < 0) {
|
|
@@ -503,20 +521,20 @@ var Interpretador = /** @class */ (function () {
|
|
|
503
521
|
}
|
|
504
522
|
}
|
|
505
523
|
if (indice >= objeto.length) {
|
|
506
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.
|
|
524
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice do vetor fora do intervalo.', expressao.linha);
|
|
507
525
|
}
|
|
508
526
|
return objeto[indice];
|
|
509
527
|
}
|
|
510
528
|
else if (objeto.constructor === Object ||
|
|
511
|
-
objeto instanceof
|
|
512
|
-
objeto instanceof
|
|
513
|
-
objeto instanceof
|
|
514
|
-
objeto instanceof
|
|
529
|
+
objeto instanceof estruturas_1.DeleguaInstancia ||
|
|
530
|
+
objeto instanceof estruturas_1.DeleguaFuncao ||
|
|
531
|
+
objeto instanceof estruturas_1.DeleguaClasse ||
|
|
532
|
+
objeto instanceof estruturas_1.DeleguaModulo) {
|
|
515
533
|
return objeto[indice] || null;
|
|
516
534
|
}
|
|
517
535
|
else if (typeof objeto === 'string') {
|
|
518
536
|
if (!Number.isInteger(indice)) {
|
|
519
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.
|
|
537
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Somente inteiros podem ser usados para indexar um vetor.', expressao.linha);
|
|
520
538
|
}
|
|
521
539
|
if (indice < 0 && objeto.length !== 0) {
|
|
522
540
|
while (indice < 0) {
|
|
@@ -524,98 +542,98 @@ var Interpretador = /** @class */ (function () {
|
|
|
524
542
|
}
|
|
525
543
|
}
|
|
526
544
|
if (indice >= objeto.length) {
|
|
527
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.
|
|
545
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.simboloFechamento, 'Índice fora do tamanho.', expressao.linha);
|
|
528
546
|
}
|
|
529
547
|
return objeto.charAt(indice);
|
|
530
548
|
}
|
|
531
549
|
else {
|
|
532
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.entidadeChamada.nome, 'Somente listas, dicionários, classes e objetos podem ser mudados por sobrescrita.');
|
|
550
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.entidadeChamada.nome, 'Somente listas, dicionários, classes e objetos podem ser mudados por sobrescrita.', expressao.linha);
|
|
533
551
|
}
|
|
534
552
|
};
|
|
535
|
-
Interpretador.prototype.visitarExpressaoDefinir = function (
|
|
536
|
-
var objeto = this.avaliar(
|
|
537
|
-
if (!(objeto instanceof
|
|
553
|
+
Interpretador.prototype.visitarExpressaoDefinir = function (expressao) {
|
|
554
|
+
var objeto = this.avaliar(expressao.objeto);
|
|
555
|
+
if (!(objeto instanceof estruturas_1.DeleguaInstancia) &&
|
|
538
556
|
objeto.constructor !== Object) {
|
|
539
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
557
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.objeto.nome, 'Somente instâncias e dicionários podem possuir campos.', expressao.linha);
|
|
540
558
|
}
|
|
541
|
-
var valor = this.avaliar(
|
|
542
|
-
if (objeto instanceof
|
|
543
|
-
objeto.set(
|
|
559
|
+
var valor = this.avaliar(expressao.valor);
|
|
560
|
+
if (objeto instanceof estruturas_1.DeleguaInstancia) {
|
|
561
|
+
objeto.set(expressao.nome, valor);
|
|
544
562
|
return valor;
|
|
545
563
|
}
|
|
546
564
|
else if (objeto.constructor === Object) {
|
|
547
|
-
objeto[
|
|
565
|
+
objeto[expressao.simbolo.lexema] = valor;
|
|
548
566
|
}
|
|
549
567
|
};
|
|
550
|
-
Interpretador.prototype.visitarExpressaoFuncao = function (
|
|
551
|
-
var funcao = new
|
|
552
|
-
this.ambiente.definirVariavel(
|
|
568
|
+
Interpretador.prototype.visitarExpressaoFuncao = function (declaracao) {
|
|
569
|
+
var funcao = new estruturas_1.DeleguaFuncao(declaracao.simbolo.lexema, declaracao.funcao, this.ambiente, false);
|
|
570
|
+
this.ambiente.definirVariavel(declaracao.simbolo.lexema, funcao);
|
|
553
571
|
};
|
|
554
|
-
Interpretador.prototype.visitarExpressaoClasse = function (
|
|
572
|
+
Interpretador.prototype.visitarExpressaoClasse = function (declaracao) {
|
|
555
573
|
var superClasse = null;
|
|
556
|
-
if (
|
|
557
|
-
superClasse = this.avaliar(
|
|
558
|
-
if (!(superClasse instanceof
|
|
559
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
574
|
+
if (declaracao.superClasse !== null) {
|
|
575
|
+
superClasse = this.avaliar(declaracao.superClasse);
|
|
576
|
+
if (!(superClasse instanceof estruturas_1.DeleguaClasse)) {
|
|
577
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(declaracao.superClasse.nome, 'SuperClasse precisa ser uma classe.', declaracao.linha);
|
|
560
578
|
}
|
|
561
579
|
}
|
|
562
|
-
this.ambiente.definirVariavel(
|
|
563
|
-
if (
|
|
580
|
+
this.ambiente.definirVariavel(declaracao.simbolo.lexema, null);
|
|
581
|
+
if (declaracao.superClasse !== null) {
|
|
564
582
|
this.ambiente = new ambiente_1.Ambiente(this.ambiente);
|
|
565
583
|
this.ambiente.definirVariavel('super', superClasse);
|
|
566
584
|
}
|
|
567
585
|
var metodos = {};
|
|
568
|
-
var definirMetodos =
|
|
569
|
-
for (var i = 0; i <
|
|
586
|
+
var definirMetodos = declaracao.metodos;
|
|
587
|
+
for (var i = 0; i < declaracao.metodos.length; i++) {
|
|
570
588
|
var metodoAtual = definirMetodos[i];
|
|
571
|
-
var eInicializado = metodoAtual.
|
|
572
|
-
var funcao = new
|
|
573
|
-
metodos[metodoAtual.
|
|
589
|
+
var eInicializado = metodoAtual.simbolo.lexema === 'construtor';
|
|
590
|
+
var funcao = new estruturas_1.DeleguaFuncao(metodoAtual.simbolo.lexema, metodoAtual.funcao, this.ambiente, eInicializado);
|
|
591
|
+
metodos[metodoAtual.simbolo.lexema] = funcao;
|
|
574
592
|
}
|
|
575
|
-
var criado = new
|
|
593
|
+
var criado = new estruturas_1.DeleguaClasse(declaracao.simbolo.lexema, superClasse, metodos);
|
|
576
594
|
if (superClasse !== null) {
|
|
577
595
|
this.ambiente = this.ambiente.enclosing;
|
|
578
596
|
}
|
|
579
|
-
this.ambiente.atribuirVariavel(
|
|
597
|
+
this.ambiente.atribuirVariavel(declaracao.simbolo, criado);
|
|
580
598
|
return null;
|
|
581
599
|
};
|
|
582
|
-
Interpretador.prototype.
|
|
583
|
-
var objeto = this.avaliar(
|
|
584
|
-
if (objeto instanceof
|
|
585
|
-
return objeto.get(
|
|
600
|
+
Interpretador.prototype.visitarExpressaoAcessoMetodo = function (expressao) {
|
|
601
|
+
var objeto = this.avaliar(expressao.objeto);
|
|
602
|
+
if (objeto instanceof estruturas_1.DeleguaInstancia) {
|
|
603
|
+
return objeto.get(expressao.simbolo) || null;
|
|
586
604
|
}
|
|
587
605
|
else if (objeto.constructor === Object) {
|
|
588
|
-
return objeto[
|
|
606
|
+
return objeto[expressao.simbolo.lexema] || null;
|
|
589
607
|
}
|
|
590
|
-
else if (objeto instanceof
|
|
591
|
-
return objeto[
|
|
608
|
+
else if (objeto instanceof estruturas_1.DeleguaModulo) {
|
|
609
|
+
return objeto.componentes[expressao.simbolo.lexema] || null;
|
|
592
610
|
}
|
|
593
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
611
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.nome, 'Você só pode acessar métodos do objeto e dicionários.', expressao.linha);
|
|
594
612
|
};
|
|
595
|
-
Interpretador.prototype.visitarExpressaoIsto = function (
|
|
596
|
-
return this.procurarVariavel(
|
|
613
|
+
Interpretador.prototype.visitarExpressaoIsto = function (expressao) {
|
|
614
|
+
return this.procurarVariavel(expressao.palavraChave, expressao);
|
|
597
615
|
};
|
|
598
|
-
Interpretador.prototype.visitarExpressaoDicionario = function (
|
|
616
|
+
Interpretador.prototype.visitarExpressaoDicionario = function (expressao) {
|
|
599
617
|
var dicionario = {};
|
|
600
|
-
for (var i = 0; i <
|
|
601
|
-
dicionario[this.avaliar(
|
|
618
|
+
for (var i = 0; i < expressao.chaves.length; i++) {
|
|
619
|
+
dicionario[this.avaliar(expressao.chaves[i])] = this.avaliar(expressao.valores[i]);
|
|
602
620
|
}
|
|
603
621
|
return dicionario;
|
|
604
622
|
};
|
|
605
|
-
Interpretador.prototype.visitarExpressaoVetor = function (
|
|
623
|
+
Interpretador.prototype.visitarExpressaoVetor = function (expressao) {
|
|
606
624
|
var valores = [];
|
|
607
|
-
for (var i = 0; i <
|
|
608
|
-
valores.push(this.avaliar(
|
|
625
|
+
for (var i = 0; i < expressao.valores.length; i++) {
|
|
626
|
+
valores.push(this.avaliar(expressao.valores[i]));
|
|
609
627
|
}
|
|
610
628
|
return valores;
|
|
611
629
|
};
|
|
612
|
-
Interpretador.prototype.visitarExpressaoSuper = function (
|
|
613
|
-
var distancia = this.locais.get(
|
|
630
|
+
Interpretador.prototype.visitarExpressaoSuper = function (expressao) {
|
|
631
|
+
var distancia = this.locais.get(expressao);
|
|
614
632
|
var superClasse = this.ambiente.obterVariavelEm(distancia, 'super');
|
|
615
633
|
var objeto = this.ambiente.obterVariavelEm(distancia - 1, 'isto');
|
|
616
|
-
var metodo = superClasse.encontrarMetodo(
|
|
634
|
+
var metodo = superClasse.encontrarMetodo(expressao.metodo.lexema);
|
|
617
635
|
if (metodo === undefined) {
|
|
618
|
-
throw new excecoes_1.ErroEmTempoDeExecucao(
|
|
636
|
+
throw new excecoes_1.ErroEmTempoDeExecucao(expressao.metodo, 'Método chamado indefinido.', expressao.linha);
|
|
619
637
|
}
|
|
620
638
|
return metodo.definirEscopo(objeto);
|
|
621
639
|
};
|
|
@@ -638,16 +656,17 @@ var Interpretador = /** @class */ (function () {
|
|
|
638
656
|
return JSON.stringify(objeto);
|
|
639
657
|
return objeto.toString();
|
|
640
658
|
};
|
|
641
|
-
Interpretador.prototype.executar = function (
|
|
659
|
+
Interpretador.prototype.executar = function (declaracao, mostrarResultado) {
|
|
642
660
|
if (mostrarResultado === void 0) { mostrarResultado = false; }
|
|
643
|
-
var resultado =
|
|
661
|
+
var resultado = declaracao.aceitar(this);
|
|
644
662
|
if (mostrarResultado) {
|
|
645
663
|
console.log(this.paraTexto(resultado));
|
|
646
664
|
}
|
|
647
665
|
};
|
|
648
|
-
Interpretador.prototype.interpretar = function (
|
|
666
|
+
Interpretador.prototype.interpretar = function (objeto) {
|
|
649
667
|
var inicioInterpretacao = perf_hooks_1.performance.now();
|
|
650
668
|
try {
|
|
669
|
+
var declaracoes = objeto.declaracoes || objeto;
|
|
651
670
|
if (declaracoes.length === 1) {
|
|
652
671
|
var eObjetoExpressao = declaracoes[0].constructor.name === 'Expressao';
|
|
653
672
|
if (eObjetoExpressao) {
|