Se símbolo de operação é +, -, += ou -=, monta objeto Binario para
ser avaliado pelo Interpretador.
Um Construto, normalmente um Binario, ou Unario se houver alguma operação unária para ser avaliada.
Este é o ponto de entrada de toda a avaliação sintática. É o único método mencionado na interface do avaliador sintático, e cada avaliador sintático deve implementar o seu método.
O retorno do Lexador.
O hash do arquivo, gerado pela função cyrb53.
Método que resolve atribuições.
Um construto do tipo Atribuir, Conjunto ou AtribuicaoPorIndice.
ProtectedavancarOs métodos a seguir só devem ser implementados se o dialeto em questão realmente possui a funcionalidade, e devem levantar erro em caso contrário.
ProtectedconstrutoProtectedconstrutoProtectedconstrutoProtectedconsumirProtecteddeclaracaoProtecteddeclaracaoCaso símbolo atual seja const, constante ou fixo, devolve uma declaração de const.
Um Construto do tipo Const.
ProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoCaso símbolo atual seja var, devolve uma declaração de variável.
Um Construto do tipo Var.
ProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoO símbolo é emitido aqui para fins de formatação, mas este método é
sobrescrito em delegua-node.
Uma declaração Importar.
ProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoProtecteddeclaracaoProtectedelvisProtectedenquantoProtectedestaA exponenciacão é uma exceção na ordem de avaliação (resolve primeiro à direita).
Por isso direito chama exponenciacao(), e não unario().
A expressão binária na forma do construto Binario.
Declaração para comando leia, para ler dados de entrada do usuário.
Um objeto da classe Leia.
ProtectedfazerProtectedfuncaoProtectedinicializarInicializa o primeiro nível da pilha de escopos, normalmente com ítens da biblioteca global.
É separada da inicialização do avaliador sintático, pois é necessário manipular essa
inicialização de outra forma em delegua-node.
ProtectedlogicaProtectedlogicaProtectedlogicaProtectedlogicaProtectedlogicaProtectedlogicaProtectedlogicaProtectedobterProtectedouProtectedparaProtectedparaProtectedparaProtectedparaMétodo que resolve para ou para cada como construto.
ProtectedparaProtectedresolverProtectedresolverResolve uma lista de compreensão.
A lista de compreensão resolvida.
ProtectedresolverTodas as resoluções triviais da linguagem, ou seja, todas as resoluções que podem ocorrer dentro ou fora de um bloco.
Normalmente uma Declaracao, mas há casos em que
outros objetos podem ser retornados.
Declarações fora de bloco precisam ser verificadas primeiro por uma série de motivos, como, por exemplo:
enquanto,
fazer ... enquanto, para, escolha, etc;Uma função ou classe se o símbolo atual resolver aqui.
O retorno de resolverDeclaracao() em caso contrário.
ProtectedresolverProtectedresolverDiversas verificações de resolução de entidade chamada, como resolver chamada da pilha ou usar referência, argumentos, etc.
A entidade chamada resolvida, se as validações passarem.
ProtectedresolverAcessoMetodoOuPropriedade é um construto intermediário em Delégua, e deve ser resolvido como outro
construto antes de qualquer outra próxima etapa. Algumas validações adicionais também ocorrem aqui.
O construto original.
O construto resolvido como um tipo mais específico.
ProtectedresolverProtectedresolverProtectedresolverProtectedseProtectedsimboloProtectedsincronizarUsado quando há erros na avaliação sintática. Garante que o código não entre em loop infinito.
Sempre retorna void.
ProtectedvalidarProtectedverificacaoProtectedverificarProtectedverificarProtectedverificarProtectedverificar
O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível. Essas estruturas de alto nível são as partes que executam lógica de programação de fato. Há dois grupos de estruturas de alto nível: Construtos e Declarações.
Construtos não existem por si só: cada construto precisa estar dentro de uma declaração para ser aceito pela próxima etapa, como tradução, interpretação, análise semântica, etc.
Este é o avaliador sintático de Delégua que, assim como todos os demais dialetos baseados neste núcleo, são uma derivação do avaliador sintático base. Aqui estão implementadas várias mecânicas a mais relacionadas a tipagem e registros de bibliotecas externas:
tiposDeFerramentasExternasé utilizada em Liquido para registro de tipos exclusivos de Liquido, como classes de requisição e resposta;primitivasConhecidasé utilizada aqui para registro de métodos relacionados a tipos, e também para as bibliotecas externas de Delégua registrarem suas respectivas resoluções de tipos;montaoTiposé uma implementação de montão muito semelhante ao montão do interpretador, para tipos complexos com N níveis de profundidade, como dicionários e objetos.