@designliquido/delegua 1.16.3 → 1.17.1

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.
Files changed (121) hide show
  1. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts +2 -1
  2. package/analisador-semantico/dialetos/analisador-semantico-pitugues.d.ts.map +1 -1
  3. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js +87 -12
  4. package/analisador-semantico/dialetos/analisador-semantico-pitugues.js.map +1 -1
  5. package/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -1
  6. package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
  7. package/avaliador-sintatico/avaliador-sintatico.d.ts +4 -4
  8. package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
  9. package/avaliador-sintatico/avaliador-sintatico.js +55 -20
  10. package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  11. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +68 -11
  12. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts.map +1 -1
  13. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +433 -62
  14. package/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
  15. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts +9 -0
  16. package/bibliotecas/dialetos/pitugues/biblioteca-global.d.ts.map +1 -1
  17. package/bibliotecas/dialetos/pitugues/biblioteca-global.js +30 -0
  18. package/bibliotecas/dialetos/pitugues/biblioteca-global.js.map +1 -1
  19. package/bibliotecas/primitivas-dicionario.d.ts.map +1 -1
  20. package/bibliotecas/primitivas-dicionario.js +31 -0
  21. package/bibliotecas/primitivas-dicionario.js.map +1 -1
  22. package/bin/package.json +1 -1
  23. package/construtos/ajuda-como-construto.d.ts +2 -2
  24. package/construtos/ajuda-como-construto.d.ts.map +1 -1
  25. package/construtos/ajuda-como-construto.js.map +1 -1
  26. package/declaracoes/se.d.ts +4 -7
  27. package/declaracoes/se.d.ts.map +1 -1
  28. package/declaracoes/se.js.map +1 -1
  29. package/declaracoes/var.d.ts +2 -2
  30. package/declaracoes/var.d.ts.map +1 -1
  31. package/declaracoes/var.js.map +1 -1
  32. package/estilizador/quebrador-linha.d.ts.map +1 -1
  33. package/estilizador/quebrador-linha.js +13 -0
  34. package/estilizador/quebrador-linha.js.map +1 -1
  35. package/estilizador/regras/index.d.ts +1 -0
  36. package/estilizador/regras/index.d.ts.map +1 -1
  37. package/estilizador/regras/index.js +1 -0
  38. package/estilizador/regras/index.js.map +1 -1
  39. package/estilizador/regras/regra-convencao-nomenclatura.d.ts +3 -0
  40. package/estilizador/regras/regra-convencao-nomenclatura.d.ts.map +1 -1
  41. package/estilizador/regras/regra-convencao-nomenclatura.js +34 -14
  42. package/estilizador/regras/regra-convencao-nomenclatura.js.map +1 -1
  43. package/estilizador/regras/regra-explicitar-tipos-parametros.d.ts +16 -0
  44. package/estilizador/regras/regra-explicitar-tipos-parametros.d.ts.map +1 -0
  45. package/estilizador/regras/regra-explicitar-tipos-parametros.js +50 -0
  46. package/estilizador/regras/regra-explicitar-tipos-parametros.js.map +1 -0
  47. package/formatadores/formatador-delegua.d.ts +1 -0
  48. package/formatadores/formatador-delegua.d.ts.map +1 -1
  49. package/formatadores/formatador-delegua.js +9 -3
  50. package/formatadores/formatador-delegua.js.map +1 -1
  51. package/interfaces/declaracoes/caminho-se-senao-interface.d.ts +7 -0
  52. package/interfaces/declaracoes/caminho-se-senao-interface.d.ts.map +1 -0
  53. package/interfaces/declaracoes/caminho-se-senao-interface.js +3 -0
  54. package/interfaces/declaracoes/caminho-se-senao-interface.js.map +1 -0
  55. package/interfaces/declaracoes/index.d.ts +2 -0
  56. package/interfaces/declaracoes/index.d.ts.map +1 -0
  57. package/interfaces/declaracoes/index.js +18 -0
  58. package/interfaces/declaracoes/index.js.map +1 -0
  59. package/interfaces/interpretador-interface.d.ts +1 -1
  60. package/interfaces/interpretador-interface.d.ts.map +1 -1
  61. package/interpretador/argumento-interface.d.ts +1 -1
  62. package/interpretador/argumento-interface.d.ts.map +1 -1
  63. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +60 -107
  64. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts.map +1 -1
  65. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +435 -336
  66. package/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  67. package/interpretador/estruturas/chamavel.d.ts +1 -1
  68. package/interpretador/estruturas/chamavel.d.ts.map +1 -1
  69. package/interpretador/estruturas/chamavel.js +3 -0
  70. package/interpretador/estruturas/chamavel.js.map +1 -1
  71. package/interpretador/estruturas/delegua-funcao.d.ts +2 -2
  72. package/interpretador/estruturas/delegua-funcao.d.ts.map +1 -1
  73. package/interpretador/estruturas/delegua-funcao.js +2 -2
  74. package/interpretador/estruturas/delegua-funcao.js.map +1 -1
  75. package/interpretador/estruturas/funcao-padrao.d.ts +2 -2
  76. package/interpretador/estruturas/funcao-padrao.d.ts.map +1 -1
  77. package/interpretador/estruturas/funcao-padrao.js +4 -2
  78. package/interpretador/estruturas/funcao-padrao.js.map +1 -1
  79. package/interpretador/estruturas/metodo-polimorfico.d.ts +1 -1
  80. package/interpretador/estruturas/metodo-polimorfico.d.ts.map +1 -1
  81. package/interpretador/estruturas/metodo-polimorfico.js +2 -2
  82. package/interpretador/estruturas/metodo-polimorfico.js.map +1 -1
  83. package/interpretador/interpretador-base.d.ts +18 -11
  84. package/interpretador/interpretador-base.d.ts.map +1 -1
  85. package/interpretador/interpretador-base.js +116 -232
  86. package/interpretador/interpretador-base.js.map +1 -1
  87. package/interpretador/interpretador.d.ts +2 -6
  88. package/interpretador/interpretador.d.ts.map +1 -1
  89. package/interpretador/interpretador.js +126 -11
  90. package/interpretador/interpretador.js.map +1 -1
  91. package/lexador/dialetos/lexador-portugol-ipt.d.ts.map +1 -1
  92. package/lexador/dialetos/lexador-portugol-ipt.js +71 -19
  93. package/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
  94. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts +34 -6
  95. package/lexador/dialetos/palavras-reservadas/portugol-ipt.d.ts.map +1 -1
  96. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js +44 -6
  97. package/lexador/dialetos/palavras-reservadas/portugol-ipt.js.map +1 -1
  98. package/lexador/lexador.d.ts.map +1 -1
  99. package/lexador/lexador.js +20 -1
  100. package/lexador/lexador.js.map +1 -1
  101. package/lexador/palavras-reservadas.d.ts +2 -86
  102. package/lexador/palavras-reservadas.d.ts.map +1 -1
  103. package/lexador/palavras-reservadas.js.map +1 -1
  104. package/package.json +1 -1
  105. package/tipos-de-simbolos/delegua.d.ts +1 -0
  106. package/tipos-de-simbolos/delegua.d.ts.map +1 -1
  107. package/tipos-de-simbolos/delegua.js +1 -0
  108. package/tipos-de-simbolos/delegua.js.map +1 -1
  109. package/tipos-de-simbolos/portugol-ipt.d.ts +43 -19
  110. package/tipos-de-simbolos/portugol-ipt.d.ts.map +1 -1
  111. package/tipos-de-simbolos/portugol-ipt.js +59 -19
  112. package/tipos-de-simbolos/portugol-ipt.js.map +1 -1
  113. package/tradutores/tradutor-assemblyscript.js +1 -1
  114. package/tradutores/tradutor-assemblyscript.js.map +1 -1
  115. package/tradutores/tradutor-javascript.js +1 -1
  116. package/tradutores/tradutor-javascript.js.map +1 -1
  117. package/tradutores/tradutor-portugol-ipt.d.ts +34 -12
  118. package/tradutores/tradutor-portugol-ipt.d.ts.map +1 -1
  119. package/tradutores/tradutor-portugol-ipt.js +309 -19
  120. package/tradutores/tradutor-portugol-ipt.js.map +1 -1
  121. package/umd/delegua.js +1748 -857
@@ -45,6 +45,14 @@ const primitivas_vetor_1 = __importDefault(require("../bibliotecas/primitivas-ve
45
45
  class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
46
46
  constructor(performance = false) {
47
47
  super();
48
+ this.pilhaDecoradores = [];
49
+ this.simbolos = [];
50
+ this.erros = [];
51
+ this.tiposDefinidosEmCodigo = {};
52
+ this.interfacesDeclaradas = {};
53
+ this.tiposDefinidosPorBibliotecas = {};
54
+ this.tiposDeFerramentasExternas = {};
55
+ this.primitivasConhecidas = {};
48
56
  this.hashArquivo = 0;
49
57
  this.atual = 0;
50
58
  this.blocos = 0;
@@ -76,8 +84,33 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
76
84
  if (!tipoElementarResolvido) {
77
85
  throw this.erro(this.simbolos[this.atual], `Tipo de dados desconhecido: '${this.simbolos[this.atual].lexema}'.`);
78
86
  }
87
+ if ((tipoElementarResolvido === 'funcao' || tipoElementarResolvido === 'função') &&
88
+ this.verificarTipoProximoSimbolo(delegua_2.default.MENOR)) {
89
+ this.avancarEDevolverAnterior(); // avança por 'funcao'
90
+ this.avancarEDevolverAnterior(); // avança por '<'
91
+ const tiposParametros = [];
92
+ do {
93
+ tiposParametros.push(this.simbolos[this.atual].lexema);
94
+ this.avancarEDevolverAnterior();
95
+ } while (this.verificarSeSimboloAtualEIgualA(delegua_2.default.VIRGULA));
96
+ // this.atual aponta para '>'
97
+ const tipoFuncaoGenerico = `${tipoElementarResolvido}<${tiposParametros.join(', ')}>`;
98
+ if (this.verificarTipoProximoSimbolo(delegua_2.default.COLCHETE_ESQUERDO)) {
99
+ this.avancarEDevolverAnterior(); // avança por '>'
100
+ // this.atual aponta para '['
101
+ if (!this.verificarTipoProximoSimbolo(delegua_2.default.COLCHETE_DIREITO)) {
102
+ throw this.erro(this.simbolos[this.atual], `Esperado símbolo de fechamento do vetor: ']'. Atual: ${this.simbolos[this.atual].lexema}`);
103
+ }
104
+ this.avancarEDevolverAnterior(); // avança por '['
105
+ // this.atual aponta para ']'
106
+ return `${tipoFuncaoGenerico}[]`;
107
+ }
108
+ return tipoFuncaoGenerico;
109
+ }
79
110
  if (this.verificarTipoProximoSimbolo(delegua_2.default.COLCHETE_ESQUERDO)) {
80
111
  const tiposVetores = [
112
+ 'funcao[]',
113
+ 'função[]',
81
114
  'inteiro[]',
82
115
  'numero[]',
83
116
  'número[]',
@@ -295,7 +328,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
295
328
  return new construtos_1.ListaCompreensao(Number(this.simbolos[this.atual]), this.hashArquivo, retornoExpressao, vetor, new construtos_1.ParaCadaComoConstruto(retornoExpressao.hashArquivo, retornoExpressao.linha, variavelIteracao, vetor, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
296
329
  new declaracoes_1.Se(condicao, new declaracoes_1.Bloco(retornoExpressao.hashArquivo, retornoExpressao.linha, [
297
330
  new declaracoes_1.Retorna(simboloVariavelIteracao, retornoExpressao),
298
- ]), [], null),
331
+ ]), [], undefined),
299
332
  ])), retornoExpressao.tipo ? `${retornoExpressao.tipo}[]` : 'qualquer[]');
300
333
  }
301
334
  async primario() {
@@ -518,7 +551,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
518
551
  construto = new construtos_1.AcessoMetodo(construtoTipado.hashArquivo, construtoTipado.objeto, construtoTipado.simbolo.lexema, primitivaVetorSelecionada.tipoRetorno);
519
552
  break;
520
553
  default:
521
- if (construtoTipado.tipo in this.tiposDefinidosEmCodigo) {
554
+ if (construtoTipado.tipo && construtoTipado.tipo in this.tiposDefinidosEmCodigo) {
522
555
  const tipoCorrespondente = this.tiposDefinidosEmCodigo[construtoTipado.tipo];
523
556
  const possivelMetodo = tipoCorrespondente.metodos.filter((m) => m.simbolo.lexema === construtoTipado.simbolo.lexema);
524
557
  if (possivelMetodo.length > 0) {
@@ -1158,7 +1191,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1158
1191
  if (Array.isArray(retornoDeclaracao)) {
1159
1192
  declaracoes = declaracoes.concat(retornoDeclaracao);
1160
1193
  }
1161
- else if (retornoDeclaracao !== null) {
1194
+ else if (retornoDeclaracao != null) {
1162
1195
  declaracoes.push(retornoDeclaracao);
1163
1196
  }
1164
1197
  }
@@ -1219,7 +1252,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1219
1252
  const caminhoCondicoes = [await this.expressao()];
1220
1253
  this.consumir(delegua_2.default.DOIS_PONTOS, "Esperado ':' após o 'caso'.");
1221
1254
  while (this.verificarTipoSimboloAtual(delegua_2.default.CASO)) {
1222
- this.consumir(delegua_2.default.CASO, null);
1255
+ this.avancarEDevolverAnterior();
1223
1256
  caminhoCondicoes.push(await this.expressao());
1224
1257
  this.consumir(delegua_2.default.DOIS_PONTOS, "Esperado ':' após declaração do 'caso'.");
1225
1258
  }
@@ -1348,6 +1381,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1348
1381
  const identificadorModulo = this.avancarEDevolverAnterior();
1349
1382
  construtoCaminhoModulo = new construtos_1.Literal(identificadorModulo.hashArquivo, Number(identificadorModulo.linha), identificadorModulo.lexema);
1350
1383
  break;
1384
+ default:
1385
+ throw this.erro(this.simbolos[this.atual], "Esperado caminho do módulo como texto ou identificador em declaração de importação.");
1351
1386
  }
1352
1387
  const importar = new declaracoes_1.Importar(construtoCaminhoModulo);
1353
1388
  if (identificadorDeTudo !== null) {
@@ -1518,7 +1553,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1518
1553
  async declaracaoSe() {
1519
1554
  const condicao = await this.expressao();
1520
1555
  const caminhoEntao = (await this.resolverDeclaracao());
1521
- let caminhoSenao = null;
1556
+ let caminhoSenao = undefined;
1522
1557
  if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.SENAO, delegua_2.default.SENÃO)) {
1523
1558
  caminhoSenao = await this.resolverDeclaracao();
1524
1559
  }
@@ -1635,7 +1670,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1635
1670
  const inicializador = await this.expressao();
1636
1671
  const retornos = [];
1637
1672
  for (let identificador of identificadores) {
1638
- this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, this.logicaComumInferenciaTiposVariaveisEConstantes(inicializador, 'qualquer')));
1673
+ this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, this.logicaComumInferenciaTiposVariaveisEConstantes(inicializador, 'qualquer') ?? 'qualquer'));
1639
1674
  const declaracaoVar = new declaracoes_1.Var(identificador, new construtos_1.AcessoMetodoOuPropriedade(this.hashArquivo, inicializador, identificador));
1640
1675
  declaracaoVar.decoradores = Array.from(this.pilhaDecoradores);
1641
1676
  retornos.push(declaracaoVar);
@@ -1686,8 +1721,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1686
1721
  if (entidadeChamadaAcessoIndiceVariavel.constructor === construtos_1.AcessoIndiceVariavel) {
1687
1722
  return this.logicaComumInferenciaTiposVariaveisEConstantes(entidadeChamadaAcessoIndiceVariavel, tipo);
1688
1723
  }
1689
- if (entidadeChamadaAcessoIndiceVariavel.tipo.endsWith('[]')) {
1690
- return entidadeChamadaAcessoIndiceVariavel.tipo.slice(0, -2);
1724
+ const tipoEntidadeChamadaAcessoIndiceVariavel = entidadeChamadaAcessoIndiceVariavel.tipo;
1725
+ if (tipoEntidadeChamadaAcessoIndiceVariavel.endsWith('[]')) {
1726
+ return tipoEntidadeChamadaAcessoIndiceVariavel.slice(0, -2);
1691
1727
  }
1692
1728
  // Normalmente, `entidadeChamadaAcessoIndiceVariavel.tipo` aqui será 'vetor'.
1693
1729
  return 'qualquer';
@@ -1790,7 +1826,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1790
1826
  // Inicialização de variáveis sem valor.
1791
1827
  for (let identificador of identificadores.values()) {
1792
1828
  this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipo));
1793
- retorno.push(new declaracoes_1.Var(identificador, null, tipo, tipoExplicito, Array.from(this.pilhaDecoradores)));
1829
+ retorno.push(new declaracoes_1.Var(identificador, undefined, tipo, tipoExplicito, Array.from(this.pilhaDecoradores)));
1794
1830
  }
1795
1831
  this.verificarSeSimboloAtualEIgualA(delegua_2.default.PONTO_E_VIRGULA);
1796
1832
  this.pilhaDecoradores = [];
@@ -1805,7 +1841,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1805
1841
  }
1806
1842
  for (let [indice, identificador] of identificadores.entries()) {
1807
1843
  const tipoOriginal = tipo; // Preserva o tipo antes da inferência
1808
- tipo = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializadores[indice], tipo);
1844
+ tipo = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializadores[indice], tipo) ?? tipo;
1809
1845
  if (tipo !== 'dicionário') {
1810
1846
  this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipo));
1811
1847
  }
@@ -1873,7 +1909,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1873
1909
  let retorno = [];
1874
1910
  for (let [indice, identificador] of identificadores.entries()) {
1875
1911
  // Se tipo ainda não foi definido, infere.
1876
- tipo = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializadores[indice], tipo);
1912
+ tipo = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializadores[indice], tipo) ?? tipo;
1877
1913
  if (tipo !== 'dicionário') {
1878
1914
  this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipo));
1879
1915
  }
@@ -1913,8 +1949,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
1913
1949
  const parametros = [];
1914
1950
  do {
1915
1951
  const parametro = {};
1916
- if (this.simbolos[this.atual].tipo === delegua_2.default.MULTIPLICACAO) {
1917
- this.consumir(delegua_2.default.MULTIPLICACAO, null);
1952
+ if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.RETICENCIAS)) {
1918
1953
  parametro.abrangencia = 'multiplo';
1919
1954
  }
1920
1955
  else {
@@ -2111,7 +2146,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
2111
2146
  continue;
2112
2147
  }
2113
2148
  // Documentário (/** ... */)
2114
- let docAtual = null;
2149
+ let docAtual = undefined;
2115
2150
  if (this.simbolos[this.atual].tipo === delegua_2.default.DOCUMENTARIO) {
2116
2151
  const simboloDoc = this.avancarEDevolverAnterior();
2117
2152
  docAtual = new construtos_1.ComentarioComoConstruto(simboloDoc);
@@ -2514,10 +2549,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
2514
2549
  await this.resolverDecoradores();
2515
2550
  }
2516
2551
  // Documentário (/** ... */) antes de uma declaração de função.
2517
- let docTopLevel = null;
2552
+ let documentacaoTopo = undefined;
2518
2553
  if (this.verificarTipoSimboloAtual(delegua_2.default.DOCUMENTARIO)) {
2519
2554
  const simboloDoc = this.avancarEDevolverAnterior();
2520
- docTopLevel = new construtos_1.ComentarioComoConstruto(simboloDoc);
2555
+ documentacaoTopo = new construtos_1.ComentarioComoConstruto(simboloDoc);
2521
2556
  }
2522
2557
  // Decoradores podem aparecer após um documentário.
2523
2558
  while (this.verificarTipoSimboloAtual(delegua_2.default.ARROBA)) {
@@ -2534,13 +2569,13 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
2534
2569
  }
2535
2570
  const declaracaoFuncao = (await this.funcao('funcao'));
2536
2571
  declaracaoFuncao.eFuncaoDeDecorador = true;
2537
- declaracaoFuncao.documentacao = docTopLevel;
2572
+ declaracaoFuncao.documentacao = documentacaoTopo;
2538
2573
  return declaracaoFuncao;
2539
2574
  }
2540
2575
  if (this.verificarTipoProximoSimbolo(delegua_2.default.IDENTIFICADOR)) {
2541
2576
  this.avancarEDevolverAnterior();
2542
2577
  const declaracaoFuncao = (await this.funcao('funcao'));
2543
- declaracaoFuncao.documentacao = docTopLevel;
2578
+ declaracaoFuncao.documentacao = documentacaoTopo;
2544
2579
  return declaracaoFuncao;
2545
2580
  }
2546
2581
  }
@@ -2558,7 +2593,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
2558
2593
  catch (erro) {
2559
2594
  this.sincronizar();
2560
2595
  this.erros.push(erro);
2561
- return null;
2596
+ return undefined;
2562
2597
  }
2563
2598
  }
2564
2599
  /**
@@ -2873,7 +2908,7 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
2873
2908
  if (Array.isArray(retornoDeclaracao)) {
2874
2909
  declaracoes = declaracoes.concat(retornoDeclaracao);
2875
2910
  }
2876
- else if (retornoDeclaracao !== null) {
2911
+ else if (retornoDeclaracao != null) {
2877
2912
  declaracoes.push(retornoDeclaracao);
2878
2913
  }
2879
2914
  }