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
.
Protected
avancarOs 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.
Protected
buscarProtected
buscarProtected
buscarProtected
construtoProtected
construtoProtected
consumirProtected
declaracaoProtected
declaracaoCaso símbolo atual seja const, constante ou fixo
, devolve uma declaração de const.
Um Construto do tipo Const.
Protected
declaracaoProtected
declaracaoProtected
declaracaoCaso símbolo atual seja var
, devolve uma declaração de variável.
Um Construto do tipo Var.
Protected
declaracaoProtected
declaracaoProtected
declaracaoProtected
declaracaoProtected
declaracaoO símbolo é emitido aqui para fins de formatação, mas este método é
sobrescrito em delegua-node
.
Uma declaração Importar
.
Protected
declaracaoProtected
declaracaoProtected
declaracaoProtected
erroProtected
estaProtected
exponenciacaoDeclaração para comando leia
, para ler dados de entrada do usuário.
Um objeto da classe Leia
.
Protected
funcaoProtected
inicializarInicializa 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
.
Protected
logicaProtected
logicaProtected
obterProtected
ouProtected
resolverTodas 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.
Protected
resolverProtected
resolverDiversas 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.
Protected
resolverAcessoMetodoOuPropriedade
é 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.
Protected
simboloProtected
sincronizarUsado quando há erros na avaliação sintática. Garante que o código não entre em loop infinito.
Sempre retorna void
.
Protected
validarProtected
verificarProtected
verificarProtected
verificarProtected
verificar
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. Por exemplo,
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.