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