@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,25 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var tiposDeSimbolos_1 = require("../tiposDeSimbolos");
|
|
6
|
+
exports.AvaliadorSintatico = void 0;
|
|
7
|
+
var tiposDeSimbolos_1 = __importDefault(require("../tiposDeSimbolos"));
|
|
8
|
+
var perf_hooks_1 = require("perf_hooks");
|
|
5
9
|
var construtos_1 = require("../construtos");
|
|
6
|
-
var
|
|
10
|
+
var erro_avaliador_sintatico_1 = require("./erro-avaliador-sintatico");
|
|
7
11
|
var declaracoes_1 = require("../declaracoes");
|
|
8
12
|
/**
|
|
9
13
|
* O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
10
14
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
15
|
+
* Há dois grupos de estruturas de alto nível: Construtos e Declarações.
|
|
11
16
|
*/
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
this.Delegua = Delegua;
|
|
17
|
+
var AvaliadorSintatico = /** @class */ (function () {
|
|
18
|
+
function AvaliadorSintatico(performance) {
|
|
19
|
+
if (performance === void 0) { performance = false; }
|
|
16
20
|
this.atual = 0;
|
|
17
21
|
this.ciclos = 0;
|
|
22
|
+
this.erros = [];
|
|
23
|
+
this.performance = performance;
|
|
18
24
|
}
|
|
19
|
-
|
|
20
|
-
this.
|
|
25
|
+
AvaliadorSintatico.prototype.sincronizar = function () {
|
|
26
|
+
this.avancarEDevolverAnterior();
|
|
21
27
|
while (!this.estaNoFinal()) {
|
|
22
|
-
if (this.
|
|
28
|
+
if (this.simboloAnterior().tipo === tiposDeSimbolos_1.default.PONTO_E_VIRGULA)
|
|
23
29
|
return;
|
|
24
30
|
switch (this.simboloAtual().tipo) {
|
|
25
31
|
case tiposDeSimbolos_1.default.CLASSE:
|
|
@@ -33,89 +39,92 @@ var Parser = /** @class */ (function () {
|
|
|
33
39
|
case tiposDeSimbolos_1.default.RETORNA:
|
|
34
40
|
return;
|
|
35
41
|
}
|
|
36
|
-
this.
|
|
42
|
+
this.avancarEDevolverAnterior();
|
|
37
43
|
}
|
|
38
44
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
AvaliadorSintatico.prototype.erro = function (simbolo, mensagemDeErro) {
|
|
46
|
+
var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(simbolo, mensagemDeErro);
|
|
47
|
+
this.erros.push(excecao);
|
|
48
|
+
return excecao;
|
|
42
49
|
};
|
|
43
|
-
|
|
44
|
-
if (this.
|
|
45
|
-
return this.
|
|
50
|
+
AvaliadorSintatico.prototype.consumir = function (tipo, mensagemDeErro) {
|
|
51
|
+
if (this.verificarTipoSimboloAtual(tipo))
|
|
52
|
+
return this.avancarEDevolverAnterior();
|
|
46
53
|
throw this.erro(this.simboloAtual(), mensagemDeErro);
|
|
47
54
|
};
|
|
48
|
-
|
|
55
|
+
AvaliadorSintatico.prototype.verificarTipoSimboloAtual = function (tipo) {
|
|
49
56
|
if (this.estaNoFinal())
|
|
50
57
|
return false;
|
|
51
58
|
return this.simboloAtual().tipo === tipo;
|
|
52
59
|
};
|
|
53
|
-
|
|
60
|
+
AvaliadorSintatico.prototype.verificarTipoProximoSimbolo = function (tipo) {
|
|
54
61
|
if (this.estaNoFinal())
|
|
55
62
|
return false;
|
|
56
63
|
return this.simbolos[this.atual + 1].tipo === tipo;
|
|
57
64
|
};
|
|
58
|
-
|
|
65
|
+
AvaliadorSintatico.prototype.simboloAtual = function () {
|
|
59
66
|
return this.simbolos[this.atual];
|
|
60
67
|
};
|
|
61
|
-
|
|
68
|
+
AvaliadorSintatico.prototype.simboloAnterior = function () {
|
|
62
69
|
return this.simbolos[this.atual - 1];
|
|
63
70
|
};
|
|
64
|
-
|
|
71
|
+
AvaliadorSintatico.prototype.simboloNaPosicao = function (posicao) {
|
|
65
72
|
return this.simbolos[this.atual + posicao];
|
|
66
73
|
};
|
|
67
|
-
|
|
74
|
+
AvaliadorSintatico.prototype.estaNoFinal = function () {
|
|
68
75
|
var simboloAtual = this.simboloAtual();
|
|
69
|
-
if (simboloAtual &&
|
|
76
|
+
if (simboloAtual &&
|
|
77
|
+
simboloAtual.tipo === tiposDeSimbolos_1.default.PONTO_E_VIRGULA) {
|
|
70
78
|
return true;
|
|
71
79
|
}
|
|
72
80
|
return this.atual === this.simbolos.length;
|
|
73
81
|
};
|
|
74
|
-
|
|
82
|
+
AvaliadorSintatico.prototype.avancarEDevolverAnterior = function () {
|
|
75
83
|
if (!this.estaNoFinal())
|
|
76
84
|
this.atual += 1;
|
|
77
|
-
return this.
|
|
85
|
+
return this.simboloAnterior();
|
|
78
86
|
};
|
|
79
|
-
|
|
87
|
+
AvaliadorSintatico.prototype.verificarSeSimboloAtualEIgualA = function () {
|
|
80
88
|
var argumentos = [];
|
|
81
89
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
82
90
|
argumentos[_i] = arguments[_i];
|
|
83
91
|
}
|
|
84
92
|
for (var i = 0; i < argumentos.length; i++) {
|
|
85
93
|
var tipoAtual = argumentos[i];
|
|
86
|
-
if (this.
|
|
87
|
-
this.
|
|
94
|
+
if (this.verificarTipoSimboloAtual(tipoAtual)) {
|
|
95
|
+
this.avancarEDevolverAnterior();
|
|
88
96
|
return true;
|
|
89
97
|
}
|
|
90
98
|
}
|
|
91
99
|
return false;
|
|
92
100
|
};
|
|
93
|
-
|
|
101
|
+
AvaliadorSintatico.prototype.primario = function () {
|
|
94
102
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.SUPER)) {
|
|
95
|
-
var palavraChave = this.
|
|
103
|
+
var palavraChave = this.simboloAnterior();
|
|
96
104
|
this.consumir(tiposDeSimbolos_1.default.PONTO, "Esperado '.' após 'super'.");
|
|
97
|
-
var metodo = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR,
|
|
98
|
-
return new construtos_1.Super(palavraChave, metodo);
|
|
105
|
+
var metodo = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, 'Esperado nome do método da SuperClasse.');
|
|
106
|
+
return new construtos_1.Super(0, palavraChave, metodo);
|
|
99
107
|
}
|
|
100
108
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.COLCHETE_ESQUERDO)) {
|
|
101
109
|
var valores = [];
|
|
102
110
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.COLCHETE_DIREITO)) {
|
|
103
|
-
return new construtos_1.Vetor([]);
|
|
111
|
+
return new construtos_1.Vetor(0, []);
|
|
104
112
|
}
|
|
105
113
|
while (!this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.COLCHETE_DIREITO)) {
|
|
106
114
|
var valor = this.atribuir();
|
|
107
115
|
valores.push(valor);
|
|
108
|
-
if (this.simboloAtual().tipo !==
|
|
109
|
-
|
|
116
|
+
if (this.simboloAtual().tipo !==
|
|
117
|
+
tiposDeSimbolos_1.default.COLCHETE_DIREITO) {
|
|
118
|
+
this.consumir(tiposDeSimbolos_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
|
-
return new construtos_1.Vetor(valores);
|
|
121
|
+
return new construtos_1.Vetor(0, valores);
|
|
113
122
|
}
|
|
114
123
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CHAVE_ESQUERDA)) {
|
|
115
124
|
var chaves = [];
|
|
116
125
|
var valores = [];
|
|
117
126
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CHAVE_DIREITA)) {
|
|
118
|
-
return new construtos_1.Dicionario([], []);
|
|
127
|
+
return new construtos_1.Dicionario(0, [], []);
|
|
119
128
|
}
|
|
120
129
|
while (!this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CHAVE_DIREITA)) {
|
|
121
130
|
var chave = this.atribuir();
|
|
@@ -124,44 +133,45 @@ var Parser = /** @class */ (function () {
|
|
|
124
133
|
chaves.push(chave);
|
|
125
134
|
valores.push(valor);
|
|
126
135
|
if (this.simboloAtual().tipo !== tiposDeSimbolos_1.default.CHAVE_DIREITA) {
|
|
127
|
-
this.consumir(tiposDeSimbolos_1.default.VIRGULA,
|
|
136
|
+
this.consumir(tiposDeSimbolos_1.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
128
137
|
}
|
|
129
138
|
}
|
|
130
|
-
return new construtos_1.Dicionario(chaves, valores);
|
|
139
|
+
return new construtos_1.Dicionario(0, chaves, valores);
|
|
131
140
|
}
|
|
132
141
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.FUNÇÃO))
|
|
133
|
-
return this.corpoDaFuncao(
|
|
142
|
+
return this.corpoDaFuncao('função');
|
|
134
143
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.FUNCAO))
|
|
135
|
-
return this.corpoDaFuncao(
|
|
144
|
+
return this.corpoDaFuncao('funcao');
|
|
136
145
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.FALSO))
|
|
137
|
-
return new construtos_1.Literal(false);
|
|
146
|
+
return new construtos_1.Literal(0, false);
|
|
138
147
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.VERDADEIRO))
|
|
139
|
-
return new construtos_1.Literal(true);
|
|
148
|
+
return new construtos_1.Literal(0, true);
|
|
140
149
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.NULO))
|
|
141
|
-
return new construtos_1.Literal(null);
|
|
150
|
+
return new construtos_1.Literal(0, null);
|
|
142
151
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.ISTO))
|
|
143
|
-
return new construtos_1.Isto(this.
|
|
152
|
+
return new construtos_1.Isto(0, this.simboloAnterior());
|
|
144
153
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.NUMERO, tiposDeSimbolos_1.default.TEXTO)) {
|
|
145
|
-
|
|
154
|
+
var simboloAnterior = this.simboloAnterior();
|
|
155
|
+
return new construtos_1.Literal(Number(simboloAnterior.linha), simboloAnterior.literal);
|
|
146
156
|
}
|
|
147
157
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.IDENTIFICADOR)) {
|
|
148
|
-
return new construtos_1.Variavel(this.
|
|
158
|
+
return new construtos_1.Variavel(this.simboloAnterior());
|
|
149
159
|
}
|
|
150
160
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO)) {
|
|
151
161
|
var expr = this.expressao();
|
|
152
162
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
|
|
153
|
-
return new construtos_1.
|
|
163
|
+
return new construtos_1.Agrupamento(0, expr);
|
|
154
164
|
}
|
|
155
165
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.IMPORTAR))
|
|
156
166
|
return this.declaracaoImportar();
|
|
157
|
-
throw this.erro(this.simboloAtual(),
|
|
167
|
+
throw this.erro(this.simboloAtual(), 'Esperado expressão.');
|
|
158
168
|
};
|
|
159
|
-
|
|
169
|
+
AvaliadorSintatico.prototype.finalizarChamada = function (entidadeChamada) {
|
|
160
170
|
var argumentos = [];
|
|
161
|
-
if (!this.
|
|
171
|
+
if (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PARENTESE_DIREITO)) {
|
|
162
172
|
do {
|
|
163
173
|
if (argumentos.length >= 255) {
|
|
164
|
-
throw this.erro(this.simboloAtual(),
|
|
174
|
+
throw this.erro(this.simboloAtual(), 'Não pode haver mais de 255 argumentos.');
|
|
165
175
|
}
|
|
166
176
|
argumentos.push(this.expressao());
|
|
167
177
|
} while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.VIRGULA));
|
|
@@ -169,200 +179,201 @@ var Parser = /** @class */ (function () {
|
|
|
169
179
|
var parenteseDireito = this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
|
|
170
180
|
return new construtos_1.Chamada(entidadeChamada, parenteseDireito, argumentos);
|
|
171
181
|
};
|
|
172
|
-
|
|
173
|
-
var
|
|
182
|
+
AvaliadorSintatico.prototype.chamar = function () {
|
|
183
|
+
var expressao = this.primario();
|
|
174
184
|
while (true) {
|
|
175
185
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO)) {
|
|
176
|
-
|
|
186
|
+
expressao = this.finalizarChamada(expressao);
|
|
177
187
|
}
|
|
178
188
|
else if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PONTO)) {
|
|
179
189
|
var nome = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, "Esperado nome do método após '.'.");
|
|
180
|
-
|
|
190
|
+
expressao = new construtos_1.AcessoMetodo(expressao, nome);
|
|
181
191
|
}
|
|
182
192
|
else if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.COLCHETE_ESQUERDO)) {
|
|
183
193
|
var indice = this.expressao();
|
|
184
|
-
var
|
|
185
|
-
|
|
194
|
+
var simboloFechamento = this.consumir(tiposDeSimbolos_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
|
|
195
|
+
expressao = new construtos_1.AcessoIndiceVariavel(expressao, indice, simboloFechamento);
|
|
186
196
|
}
|
|
187
197
|
else {
|
|
188
198
|
break;
|
|
189
199
|
}
|
|
190
200
|
}
|
|
191
|
-
return
|
|
201
|
+
return expressao;
|
|
192
202
|
};
|
|
193
|
-
|
|
203
|
+
AvaliadorSintatico.prototype.unario = function () {
|
|
194
204
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.NEGACAO, tiposDeSimbolos_1.default.SUBTRACAO, tiposDeSimbolos_1.default.BIT_NOT)) {
|
|
195
|
-
var operador = this.
|
|
205
|
+
var operador = this.simboloAnterior();
|
|
196
206
|
var direito = this.unario();
|
|
197
207
|
return new construtos_1.Unario(operador, direito);
|
|
198
208
|
}
|
|
199
209
|
return this.chamar();
|
|
200
210
|
};
|
|
201
|
-
|
|
202
|
-
var
|
|
211
|
+
AvaliadorSintatico.prototype.exponenciacao = function () {
|
|
212
|
+
var expressao = this.unario();
|
|
203
213
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.EXPONENCIACAO)) {
|
|
204
|
-
var operador = this.
|
|
214
|
+
var operador = this.simboloAnterior();
|
|
205
215
|
var direito = this.unario();
|
|
206
|
-
|
|
216
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
207
217
|
}
|
|
208
|
-
return
|
|
218
|
+
return expressao;
|
|
209
219
|
};
|
|
210
|
-
|
|
211
|
-
var
|
|
220
|
+
AvaliadorSintatico.prototype.multiplicar = function () {
|
|
221
|
+
var expressao = this.exponenciacao();
|
|
212
222
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.DIVISAO, tiposDeSimbolos_1.default.MULTIPLICACAO, tiposDeSimbolos_1.default.MODULO)) {
|
|
213
|
-
var operador = this.
|
|
223
|
+
var operador = this.simboloAnterior();
|
|
214
224
|
var direito = this.exponenciacao();
|
|
215
|
-
|
|
225
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
216
226
|
}
|
|
217
|
-
return
|
|
227
|
+
return expressao;
|
|
218
228
|
};
|
|
219
|
-
|
|
220
|
-
var
|
|
229
|
+
AvaliadorSintatico.prototype.adicionar = function () {
|
|
230
|
+
var expressao = this.multiplicar();
|
|
221
231
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.SUBTRACAO, tiposDeSimbolos_1.default.ADICAO)) {
|
|
222
|
-
var operador = this.
|
|
232
|
+
var operador = this.simboloAnterior();
|
|
223
233
|
var direito = this.multiplicar();
|
|
224
|
-
|
|
234
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
225
235
|
}
|
|
226
|
-
return
|
|
236
|
+
return expressao;
|
|
227
237
|
};
|
|
228
|
-
|
|
229
|
-
var
|
|
238
|
+
AvaliadorSintatico.prototype.bitFill = function () {
|
|
239
|
+
var expressao = this.adicionar();
|
|
230
240
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.MENOR_MENOR, tiposDeSimbolos_1.default.MAIOR_MAIOR)) {
|
|
231
|
-
var operador = this.
|
|
241
|
+
var operador = this.simboloAnterior();
|
|
232
242
|
var direito = this.adicionar();
|
|
233
|
-
|
|
243
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
234
244
|
}
|
|
235
|
-
return
|
|
245
|
+
return expressao;
|
|
236
246
|
};
|
|
237
|
-
|
|
238
|
-
var
|
|
247
|
+
AvaliadorSintatico.prototype.bitE = function () {
|
|
248
|
+
var expressao = this.bitFill();
|
|
239
249
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.BIT_AND)) {
|
|
240
|
-
var operador = this.
|
|
250
|
+
var operador = this.simboloAnterior();
|
|
241
251
|
var direito = this.bitFill();
|
|
242
|
-
|
|
252
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
243
253
|
}
|
|
244
|
-
return
|
|
254
|
+
return expressao;
|
|
245
255
|
};
|
|
246
|
-
|
|
247
|
-
var
|
|
256
|
+
AvaliadorSintatico.prototype.bitOu = function () {
|
|
257
|
+
var expressao = this.bitE();
|
|
248
258
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.BIT_OR, tiposDeSimbolos_1.default.BIT_XOR)) {
|
|
249
|
-
var operador = this.
|
|
259
|
+
var operador = this.simboloAnterior();
|
|
250
260
|
var direito = this.bitE();
|
|
251
|
-
|
|
261
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
252
262
|
}
|
|
253
|
-
return
|
|
263
|
+
return expressao;
|
|
254
264
|
};
|
|
255
|
-
|
|
256
|
-
var
|
|
265
|
+
AvaliadorSintatico.prototype.comparar = function () {
|
|
266
|
+
var expressao = this.bitOu();
|
|
257
267
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.MAIOR, tiposDeSimbolos_1.default.MAIOR_IGUAL, tiposDeSimbolos_1.default.MENOR, tiposDeSimbolos_1.default.MENOR_IGUAL)) {
|
|
258
|
-
var operador = this.
|
|
268
|
+
var operador = this.simboloAnterior();
|
|
259
269
|
var direito = this.bitOu();
|
|
260
|
-
|
|
270
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
261
271
|
}
|
|
262
|
-
return
|
|
272
|
+
return expressao;
|
|
263
273
|
};
|
|
264
|
-
|
|
265
|
-
var
|
|
274
|
+
AvaliadorSintatico.prototype.comparacaoIgualdade = function () {
|
|
275
|
+
var expressao = this.comparar();
|
|
266
276
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.DIFERENTE, tiposDeSimbolos_1.default.IGUAL_IGUAL)) {
|
|
267
|
-
var operador = this.
|
|
277
|
+
var operador = this.simboloAnterior();
|
|
268
278
|
var direito = this.comparar();
|
|
269
|
-
|
|
279
|
+
expressao = new construtos_1.Binario(expressao, operador, direito);
|
|
270
280
|
}
|
|
271
|
-
return
|
|
281
|
+
return expressao;
|
|
272
282
|
};
|
|
273
|
-
|
|
274
|
-
var
|
|
283
|
+
AvaliadorSintatico.prototype.em = function () {
|
|
284
|
+
var expressao = this.comparacaoIgualdade();
|
|
275
285
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.EM)) {
|
|
276
|
-
var operador = this.
|
|
286
|
+
var operador = this.simboloAnterior();
|
|
277
287
|
var direito = this.comparacaoIgualdade();
|
|
278
|
-
|
|
288
|
+
expressao = new construtos_1.Logico(expressao, operador, direito);
|
|
279
289
|
}
|
|
280
|
-
return
|
|
290
|
+
return expressao;
|
|
281
291
|
};
|
|
282
|
-
|
|
283
|
-
var
|
|
292
|
+
AvaliadorSintatico.prototype.e = function () {
|
|
293
|
+
var expressao = this.em();
|
|
284
294
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.E)) {
|
|
285
|
-
var operador = this.
|
|
295
|
+
var operador = this.simboloAnterior();
|
|
286
296
|
var direito = this.em();
|
|
287
|
-
|
|
297
|
+
expressao = new construtos_1.Logico(expressao, operador, direito);
|
|
288
298
|
}
|
|
289
|
-
return
|
|
299
|
+
return expressao;
|
|
290
300
|
};
|
|
291
|
-
|
|
292
|
-
var
|
|
301
|
+
AvaliadorSintatico.prototype.ou = function () {
|
|
302
|
+
var expressao = this.e();
|
|
293
303
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.OU)) {
|
|
294
|
-
var operador = this.
|
|
304
|
+
var operador = this.simboloAnterior();
|
|
295
305
|
var direito = this.e();
|
|
296
|
-
|
|
306
|
+
expressao = new construtos_1.Logico(expressao, operador, direito);
|
|
297
307
|
}
|
|
298
|
-
return
|
|
308
|
+
return expressao;
|
|
299
309
|
};
|
|
300
|
-
|
|
301
|
-
var
|
|
310
|
+
AvaliadorSintatico.prototype.atribuir = function () {
|
|
311
|
+
var expressao = this.ou();
|
|
302
312
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.IGUAL) ||
|
|
303
313
|
this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.MAIS_IGUAL)) {
|
|
304
|
-
var igual = this.
|
|
314
|
+
var igual = this.simboloAnterior();
|
|
305
315
|
var valor = this.atribuir();
|
|
306
|
-
if (
|
|
307
|
-
var
|
|
308
|
-
return new construtos_1.Atribuir(
|
|
316
|
+
if (expressao instanceof construtos_1.Variavel) {
|
|
317
|
+
var simbolo = expressao.simbolo;
|
|
318
|
+
return new construtos_1.Atribuir(simbolo, valor);
|
|
309
319
|
}
|
|
310
|
-
else if (
|
|
311
|
-
var get =
|
|
312
|
-
return new construtos_1.Conjunto(get.objeto, get.
|
|
320
|
+
else if (expressao instanceof construtos_1.AcessoMetodo) {
|
|
321
|
+
var get = expressao;
|
|
322
|
+
return new construtos_1.Conjunto(0, get.objeto, get.simbolo, valor);
|
|
313
323
|
}
|
|
314
|
-
else if (
|
|
315
|
-
return new construtos_1.AtribuicaoSobrescrita(
|
|
324
|
+
else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
|
|
325
|
+
return new construtos_1.AtribuicaoSobrescrita(0, expressao.entidadeChamada, expressao.indice, valor);
|
|
316
326
|
}
|
|
317
|
-
this.erro(igual,
|
|
327
|
+
this.erro(igual, 'Tarefa de atribuição inválida');
|
|
318
328
|
}
|
|
319
|
-
return
|
|
329
|
+
return expressao;
|
|
320
330
|
};
|
|
321
|
-
|
|
331
|
+
AvaliadorSintatico.prototype.expressao = function () {
|
|
322
332
|
return this.atribuir();
|
|
323
333
|
};
|
|
324
|
-
|
|
334
|
+
AvaliadorSintatico.prototype.declaracaoEscreva = function () {
|
|
325
335
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
|
|
326
|
-
var
|
|
336
|
+
var simbolo = this.expressao();
|
|
327
337
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
|
|
328
|
-
return new declaracoes_1.Escreva(
|
|
338
|
+
return new declaracoes_1.Escreva(simbolo);
|
|
329
339
|
};
|
|
330
|
-
|
|
331
|
-
var
|
|
332
|
-
return new declaracoes_1.Expressao(
|
|
340
|
+
AvaliadorSintatico.prototype.declaracaoExpressao = function () {
|
|
341
|
+
var expressao = this.expressao();
|
|
342
|
+
return new declaracoes_1.Expressao(expressao);
|
|
333
343
|
};
|
|
334
|
-
|
|
344
|
+
AvaliadorSintatico.prototype.blocoEscopo = function () {
|
|
335
345
|
var declaracoes = [];
|
|
336
|
-
while (!this.
|
|
346
|
+
while (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CHAVE_DIREITA) &&
|
|
337
347
|
!this.estaNoFinal()) {
|
|
338
348
|
declaracoes.push(this.declaracao());
|
|
339
349
|
}
|
|
340
350
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
|
|
341
351
|
return declaracoes;
|
|
342
352
|
};
|
|
343
|
-
|
|
353
|
+
AvaliadorSintatico.prototype.declaracaoSe = function () {
|
|
354
|
+
var simboloSe = this.simboloAnterior();
|
|
344
355
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'se'.");
|
|
345
356
|
var condicao = this.expressao();
|
|
346
357
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após condição do se.");
|
|
347
|
-
var
|
|
348
|
-
var
|
|
358
|
+
var caminhoEntao = this.resolverDeclaracao();
|
|
359
|
+
var caminhosSeSenao = [];
|
|
349
360
|
while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.SENAOSE, tiposDeSimbolos_1.default.SENÃOSE)) {
|
|
350
361
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'senaose' ou 'senãose'.");
|
|
351
|
-
var
|
|
362
|
+
var condicaoSeSenao = this.expressao();
|
|
352
363
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após codição do 'senaose' ou 'senãose'.");
|
|
353
|
-
var
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
364
|
+
var caminho = this.resolverDeclaracao();
|
|
365
|
+
caminhosSeSenao.push({
|
|
366
|
+
condicao: condicaoSeSenao,
|
|
367
|
+
caminho: caminho,
|
|
357
368
|
});
|
|
358
369
|
}
|
|
359
|
-
var
|
|
370
|
+
var caminhoSenao = null;
|
|
360
371
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.SENAO, tiposDeSimbolos_1.default.SENÃO)) {
|
|
361
|
-
|
|
372
|
+
caminhoSenao = this.resolverDeclaracao();
|
|
362
373
|
}
|
|
363
|
-
return new declaracoes_1.Se(condicao,
|
|
374
|
+
return new declaracoes_1.Se(Number(simboloSe.linha), condicao, caminhoEntao, caminhosSeSenao, caminhoSenao);
|
|
364
375
|
};
|
|
365
|
-
|
|
376
|
+
AvaliadorSintatico.prototype.declaracaoEnquanto = function () {
|
|
366
377
|
try {
|
|
367
378
|
this.ciclos += 1;
|
|
368
379
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'enquanto'.");
|
|
@@ -375,8 +386,9 @@ var Parser = /** @class */ (function () {
|
|
|
375
386
|
this.ciclos -= 1;
|
|
376
387
|
}
|
|
377
388
|
};
|
|
378
|
-
|
|
389
|
+
AvaliadorSintatico.prototype.declaracaoPara = function () {
|
|
379
390
|
try {
|
|
391
|
+
var simboloPara = this.simboloAnterior();
|
|
380
392
|
this.ciclos += 1;
|
|
381
393
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após 'para'.");
|
|
382
394
|
var inicializador = void 0;
|
|
@@ -390,137 +402,140 @@ var Parser = /** @class */ (function () {
|
|
|
390
402
|
inicializador = this.declaracaoExpressao();
|
|
391
403
|
}
|
|
392
404
|
var condicao = null;
|
|
393
|
-
if (!this.
|
|
405
|
+
if (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PONTO_E_VIRGULA)) {
|
|
394
406
|
condicao = this.expressao();
|
|
395
407
|
}
|
|
396
408
|
var incrementar = null;
|
|
397
|
-
if (!this.
|
|
409
|
+
if (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PARENTESE_DIREITO)) {
|
|
398
410
|
incrementar = this.expressao();
|
|
399
411
|
}
|
|
400
412
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após cláusulas");
|
|
401
413
|
var corpo = this.resolverDeclaracao();
|
|
402
|
-
return new declaracoes_1.Para(inicializador, condicao, incrementar, corpo);
|
|
414
|
+
return new declaracoes_1.Para(Number(simboloPara.linha), inicializador, condicao, incrementar, corpo);
|
|
403
415
|
}
|
|
404
416
|
finally {
|
|
405
417
|
this.ciclos -= 1;
|
|
406
418
|
}
|
|
407
419
|
};
|
|
408
|
-
|
|
420
|
+
AvaliadorSintatico.prototype.declaracaoSustar = function () {
|
|
409
421
|
if (this.ciclos < 1) {
|
|
410
|
-
this.erro(this.
|
|
422
|
+
this.erro(this.simboloAnterior(), "'sustar' ou 'pausa' deve estar dentro de um loop.");
|
|
411
423
|
}
|
|
412
|
-
return new declaracoes_1.
|
|
424
|
+
return new declaracoes_1.Sustar();
|
|
413
425
|
};
|
|
414
|
-
|
|
426
|
+
AvaliadorSintatico.prototype.declaracaoContinua = function () {
|
|
415
427
|
if (this.ciclos < 1) {
|
|
416
|
-
this.erro(this.
|
|
428
|
+
this.erro(this.simboloAnterior(), "'continua' precisa estar em um laço de repetição.");
|
|
417
429
|
}
|
|
418
430
|
return new declaracoes_1.Continua();
|
|
419
431
|
};
|
|
420
|
-
|
|
421
|
-
var palavraChave = this.
|
|
432
|
+
AvaliadorSintatico.prototype.declaracaoRetorna = function () {
|
|
433
|
+
var palavraChave = this.simboloAnterior();
|
|
422
434
|
var valor = null;
|
|
423
|
-
if (!this.
|
|
435
|
+
if (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PONTO_E_VIRGULA)) {
|
|
424
436
|
valor = this.expressao();
|
|
425
437
|
}
|
|
426
438
|
return new declaracoes_1.Retorna(palavraChave, valor);
|
|
427
439
|
};
|
|
428
|
-
|
|
440
|
+
AvaliadorSintatico.prototype.declaracaoEscolha = function () {
|
|
429
441
|
try {
|
|
430
442
|
this.ciclos += 1;
|
|
431
443
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '{' após 'escolha'.");
|
|
432
444
|
var condicao = this.expressao();
|
|
433
445
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado '}' após a condição de 'escolha'.");
|
|
434
446
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do 'escolha'.");
|
|
435
|
-
var
|
|
436
|
-
var
|
|
447
|
+
var caminhos = [];
|
|
448
|
+
var caminhoPadrao = null;
|
|
437
449
|
while (!this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CHAVE_DIREITA) &&
|
|
438
450
|
!this.estaNoFinal()) {
|
|
439
451
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CASO)) {
|
|
440
452
|
var branchConditions = [this.expressao()];
|
|
441
453
|
this.consumir(tiposDeSimbolos_1.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
|
|
442
|
-
while (this.
|
|
454
|
+
while (this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CASO)) {
|
|
443
455
|
this.consumir(tiposDeSimbolos_1.default.CASO, null);
|
|
444
456
|
branchConditions.push(this.expressao());
|
|
445
457
|
this.consumir(tiposDeSimbolos_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
|
|
446
458
|
}
|
|
447
|
-
var
|
|
459
|
+
var declaracoes = [];
|
|
448
460
|
do {
|
|
449
|
-
|
|
450
|
-
} while (!this.
|
|
451
|
-
!this.
|
|
452
|
-
!this.
|
|
453
|
-
|
|
461
|
+
declaracoes.push(this.resolverDeclaracao());
|
|
462
|
+
} while (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CASO) &&
|
|
463
|
+
!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PADRAO) &&
|
|
464
|
+
!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CHAVE_DIREITA));
|
|
465
|
+
caminhos.push({
|
|
454
466
|
conditions: branchConditions,
|
|
455
|
-
|
|
467
|
+
declaracoes: declaracoes,
|
|
456
468
|
});
|
|
457
469
|
}
|
|
458
470
|
else if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PADRAO)) {
|
|
459
|
-
if (
|
|
460
|
-
|
|
471
|
+
if (caminhoPadrao !== null) {
|
|
472
|
+
var excecao = new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(this.simboloAtual(), "Você só pode ter um 'padrao' em cada declaração de 'escolha'.");
|
|
473
|
+
this.erros.push(excecao);
|
|
474
|
+
throw excecao;
|
|
475
|
+
}
|
|
461
476
|
this.consumir(tiposDeSimbolos_1.default.DOIS_PONTOS, "Esperado ':' após declaração do 'padrao'.");
|
|
462
|
-
var
|
|
477
|
+
var declaracoes = [];
|
|
463
478
|
do {
|
|
464
|
-
|
|
465
|
-
} while (!this.
|
|
466
|
-
!this.
|
|
467
|
-
!this.
|
|
468
|
-
|
|
469
|
-
|
|
479
|
+
declaracoes.push(this.resolverDeclaracao());
|
|
480
|
+
} while (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CASO) &&
|
|
481
|
+
!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PADRAO) &&
|
|
482
|
+
!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CHAVE_DIREITA));
|
|
483
|
+
caminhoPadrao = {
|
|
484
|
+
declaracoes: declaracoes,
|
|
470
485
|
};
|
|
471
486
|
}
|
|
472
487
|
}
|
|
473
|
-
return new declaracoes_1.Escolha(condicao,
|
|
488
|
+
return new declaracoes_1.Escolha(condicao, caminhos, caminhoPadrao);
|
|
474
489
|
}
|
|
475
490
|
finally {
|
|
476
491
|
this.ciclos -= 1;
|
|
477
492
|
}
|
|
478
493
|
};
|
|
479
|
-
|
|
494
|
+
AvaliadorSintatico.prototype.declaracaoImportar = function () {
|
|
480
495
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração.");
|
|
481
496
|
var caminho = this.expressao();
|
|
482
|
-
var
|
|
483
|
-
return new declaracoes_1.Importar(caminho,
|
|
497
|
+
var simboloFechamento = this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração.");
|
|
498
|
+
return new declaracoes_1.Importar(caminho, simboloFechamento);
|
|
484
499
|
};
|
|
485
|
-
|
|
500
|
+
AvaliadorSintatico.prototype.declaracaoTente = function () {
|
|
486
501
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'tente'.");
|
|
487
|
-
var
|
|
488
|
-
var
|
|
502
|
+
var blocoTente = this.blocoEscopo();
|
|
503
|
+
var blocoPegue = null;
|
|
489
504
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PEGUE)) {
|
|
490
505
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
491
|
-
|
|
506
|
+
blocoPegue = this.blocoEscopo();
|
|
492
507
|
}
|
|
493
|
-
var
|
|
508
|
+
var blocoSenao = null;
|
|
494
509
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.SENAO, tiposDeSimbolos_1.default.SENÃO)) {
|
|
495
510
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
496
|
-
|
|
511
|
+
blocoSenao = this.blocoEscopo();
|
|
497
512
|
}
|
|
498
|
-
var
|
|
513
|
+
var blocoFinalmente = null;
|
|
499
514
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.FINALMENTE)) {
|
|
500
515
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
|
|
501
|
-
|
|
516
|
+
blocoFinalmente = this.blocoEscopo();
|
|
502
517
|
}
|
|
503
|
-
return new declaracoes_1.Tente(
|
|
518
|
+
return new declaracoes_1.Tente(blocoTente, blocoPegue, blocoSenao, blocoFinalmente);
|
|
504
519
|
};
|
|
505
|
-
|
|
520
|
+
AvaliadorSintatico.prototype.declaracaoFazer = function () {
|
|
506
521
|
try {
|
|
507
522
|
this.ciclos += 1;
|
|
508
|
-
var
|
|
523
|
+
var caminhoFazer = this.resolverDeclaracao();
|
|
509
524
|
this.consumir(tiposDeSimbolos_1.default.ENQUANTO, "Esperado declaração do 'enquanto' após o escopo do 'fazer'.");
|
|
510
525
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' após declaração 'enquanto'.");
|
|
511
|
-
var
|
|
526
|
+
var condicaoEnquanto = this.expressao();
|
|
512
527
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após declaração do 'enquanto'.");
|
|
513
|
-
return new declaracoes_1.Fazer(
|
|
528
|
+
return new declaracoes_1.Fazer(caminhoFazer, condicaoEnquanto);
|
|
514
529
|
}
|
|
515
530
|
finally {
|
|
516
531
|
this.ciclos -= 1;
|
|
517
532
|
}
|
|
518
533
|
};
|
|
519
|
-
|
|
534
|
+
AvaliadorSintatico.prototype.resolverDeclaracao = function () {
|
|
520
535
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.FAZER))
|
|
521
536
|
return this.declaracaoFazer();
|
|
522
537
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.TENTE))
|
|
523
|
-
return this.
|
|
538
|
+
return this.declaracaoTente();
|
|
524
539
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.ESCOLHA))
|
|
525
540
|
return this.declaracaoEscolha();
|
|
526
541
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.RETORNA))
|
|
@@ -528,7 +543,7 @@ var Parser = /** @class */ (function () {
|
|
|
528
543
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CONTINUA))
|
|
529
544
|
return this.declaracaoContinua();
|
|
530
545
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PAUSA))
|
|
531
|
-
return this.
|
|
546
|
+
return this.declaracaoSustar();
|
|
532
547
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.PARA))
|
|
533
548
|
return this.declaracaoPara();
|
|
534
549
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.ENQUANTO))
|
|
@@ -536,81 +551,81 @@ var Parser = /** @class */ (function () {
|
|
|
536
551
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.SE))
|
|
537
552
|
return this.declaracaoSe();
|
|
538
553
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.ESCREVA))
|
|
539
|
-
return this.
|
|
554
|
+
return this.declaracaoEscreva();
|
|
540
555
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.CHAVE_ESQUERDA))
|
|
541
556
|
return new declaracoes_1.Bloco(this.blocoEscopo());
|
|
542
557
|
return this.declaracaoExpressao();
|
|
543
558
|
};
|
|
544
|
-
|
|
545
|
-
var
|
|
559
|
+
AvaliadorSintatico.prototype.declaracaoDeVariavel = function () {
|
|
560
|
+
var simbolo = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, 'Esperado nome de variável.');
|
|
546
561
|
var inicializador = null;
|
|
547
562
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.IGUAL) ||
|
|
548
563
|
this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.MAIS_IGUAL)) {
|
|
549
564
|
inicializador = this.expressao();
|
|
550
565
|
}
|
|
551
|
-
return new declaracoes_1.Var(
|
|
566
|
+
return new declaracoes_1.Var(simbolo, inicializador);
|
|
552
567
|
};
|
|
553
|
-
|
|
554
|
-
var
|
|
555
|
-
return new declaracoes_1.Funcao(
|
|
568
|
+
AvaliadorSintatico.prototype.funcao = function (tipo) {
|
|
569
|
+
var simbolo = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, "Esperado nome ".concat(tipo, "."));
|
|
570
|
+
return new declaracoes_1.Funcao(simbolo, this.corpoDaFuncao(tipo));
|
|
556
571
|
};
|
|
557
|
-
|
|
572
|
+
AvaliadorSintatico.prototype.corpoDaFuncao = function (tipo) {
|
|
558
573
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_ESQUERDO, "Esperado '(' ap\u00F3s o nome ".concat(tipo, "."));
|
|
559
574
|
var parametros = [];
|
|
560
|
-
if (!this.
|
|
575
|
+
if (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.PARENTESE_DIREITO)) {
|
|
561
576
|
do {
|
|
562
577
|
if (parametros.length >= 255) {
|
|
563
|
-
this.erro(this.simboloAtual(),
|
|
578
|
+
this.erro(this.simboloAtual(), 'Não pode haver mais de 255 parâmetros');
|
|
564
579
|
}
|
|
565
580
|
var paramObj = {};
|
|
566
581
|
if (this.simboloAtual().tipo === tiposDeSimbolos_1.default.MULTIPLICACAO) {
|
|
567
582
|
this.consumir(tiposDeSimbolos_1.default.MULTIPLICACAO, null);
|
|
568
|
-
paramObj[
|
|
583
|
+
paramObj['tipo'] = 'wildcard';
|
|
569
584
|
}
|
|
570
585
|
else {
|
|
571
|
-
paramObj[
|
|
586
|
+
paramObj['tipo'] = 'standard';
|
|
572
587
|
}
|
|
573
|
-
paramObj[
|
|
588
|
+
paramObj['nome'] = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
|
|
574
589
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.IGUAL)) {
|
|
575
|
-
paramObj[
|
|
590
|
+
paramObj['default'] = this.primario();
|
|
576
591
|
}
|
|
577
592
|
parametros.push(paramObj);
|
|
578
|
-
if (paramObj[
|
|
593
|
+
if (paramObj['tipo'] === 'wildcard')
|
|
579
594
|
break;
|
|
580
595
|
} while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.VIRGULA));
|
|
581
596
|
}
|
|
582
597
|
this.consumir(tiposDeSimbolos_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
|
|
583
598
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo do ".concat(tipo, "."));
|
|
584
599
|
var corpo = this.blocoEscopo();
|
|
585
|
-
return new construtos_1.Funcao(parametros, corpo);
|
|
600
|
+
return new construtos_1.Funcao(0, parametros, corpo);
|
|
586
601
|
};
|
|
587
|
-
|
|
588
|
-
var
|
|
602
|
+
AvaliadorSintatico.prototype.declaracaoDeClasse = function () {
|
|
603
|
+
var simbolo = this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, 'Esperado nome da classe.');
|
|
589
604
|
var superClasse = null;
|
|
590
605
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.HERDA)) {
|
|
591
|
-
this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR,
|
|
592
|
-
superClasse = new construtos_1.Variavel(this.
|
|
606
|
+
this.consumir(tiposDeSimbolos_1.default.IDENTIFICADOR, 'Esperado nome da SuperClasse.');
|
|
607
|
+
superClasse = new construtos_1.Variavel(this.simboloAnterior());
|
|
593
608
|
}
|
|
594
609
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_ESQUERDA, "Esperado '{' antes do escopo da classe.");
|
|
595
610
|
var metodos = [];
|
|
596
|
-
while (!this.
|
|
611
|
+
while (!this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.CHAVE_DIREITA) &&
|
|
597
612
|
!this.estaNoFinal()) {
|
|
598
|
-
metodos.push(this.funcao(
|
|
613
|
+
metodos.push(this.funcao('método'));
|
|
599
614
|
}
|
|
600
615
|
this.consumir(tiposDeSimbolos_1.default.CHAVE_DIREITA, "Esperado '}' após o escopo da classe.");
|
|
601
|
-
return new declaracoes_1.Classe(
|
|
616
|
+
return new declaracoes_1.Classe(simbolo, superClasse, metodos);
|
|
602
617
|
};
|
|
603
|
-
|
|
618
|
+
AvaliadorSintatico.prototype.declaracao = function () {
|
|
604
619
|
try {
|
|
605
|
-
if (this.
|
|
606
|
-
this.
|
|
620
|
+
if (this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.FUNÇÃO) &&
|
|
621
|
+
this.verificarTipoProximoSimbolo(tiposDeSimbolos_1.default.IDENTIFICADOR)) {
|
|
607
622
|
this.consumir(tiposDeSimbolos_1.default.FUNÇÃO, null);
|
|
608
|
-
return this.funcao(
|
|
623
|
+
return this.funcao('função');
|
|
609
624
|
}
|
|
610
|
-
if (this.
|
|
611
|
-
this.
|
|
625
|
+
if (this.verificarTipoSimboloAtual(tiposDeSimbolos_1.default.FUNCAO) &&
|
|
626
|
+
this.verificarTipoProximoSimbolo(tiposDeSimbolos_1.default.IDENTIFICADOR)) {
|
|
612
627
|
this.consumir(tiposDeSimbolos_1.default.FUNCAO, null);
|
|
613
|
-
return this.funcao(
|
|
628
|
+
return this.funcao('funcao');
|
|
614
629
|
}
|
|
615
630
|
if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos_1.default.VARIAVEL))
|
|
616
631
|
return this.declaracaoDeVariavel();
|
|
@@ -623,7 +638,9 @@ var Parser = /** @class */ (function () {
|
|
|
623
638
|
return null;
|
|
624
639
|
}
|
|
625
640
|
};
|
|
626
|
-
|
|
641
|
+
AvaliadorSintatico.prototype.analisar = function (simbolos) {
|
|
642
|
+
var inicioAnalise = perf_hooks_1.performance.now();
|
|
643
|
+
this.erros = [];
|
|
627
644
|
this.atual = 0;
|
|
628
645
|
this.ciclos = 0;
|
|
629
646
|
if (simbolos) {
|
|
@@ -633,9 +650,16 @@ var Parser = /** @class */ (function () {
|
|
|
633
650
|
while (!this.estaNoFinal()) {
|
|
634
651
|
declaracoes.push(this.declaracao());
|
|
635
652
|
}
|
|
636
|
-
|
|
653
|
+
var fimAnalise = perf_hooks_1.performance.now();
|
|
654
|
+
if (this.performance) {
|
|
655
|
+
console.log("[Avaliador Sint\u00E1tico] Tempo para an\u00E1lise: ".concat(fimAnalise - inicioAnalise, "ms"));
|
|
656
|
+
}
|
|
657
|
+
return {
|
|
658
|
+
declaracoes: declaracoes,
|
|
659
|
+
erros: this.erros
|
|
660
|
+
};
|
|
637
661
|
};
|
|
638
|
-
return
|
|
662
|
+
return AvaliadorSintatico;
|
|
639
663
|
}());
|
|
640
|
-
exports.
|
|
664
|
+
exports.AvaliadorSintatico = AvaliadorSintatico;
|
|
641
665
|
//# sourceMappingURL=index.js.map
|