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.
Os métodos a seguir devem ser implementados nos seus respectivos dialetos por diferentes razões: seja porque o dialeto correspondente tem uma abordagem diferente sobre entrada e saída, seja porque a funcionalidade sequer existe, mas é suprimida por outra.
Esses métodos não precisam ser expostos. A recomendação geral é
implementá-los como protected.
Os 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.
ProtectedcriarProtecteddeclaracaoEste método é usado por Delégua e alguns dialetos de Portugol que possuem declarações de múltiplas variáveis na mesma linha.
ProtecteddeclaracaoOptionalcodigoDiagnostico: stringOptionalsimboloRelacionado: SimboloInterfaceA 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.
ProtectedexpressaoOptionalconstrutor: booleanProtectedinicializarInicializa 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.
ProtectedlogicaProtectedlogicaProtectedlogicaProtectedresolverResolve uma lista de compreensão.
A expressão já resolvida que representa o valor a ser retornado.
A lista de compreensão resolvida.
Consome o símbolo atual, verificando se é uma declaração de função, variável, classe ou uma expressão.
Objeto do tipo Declaracao.
ProtectedresolverProtectedresolverProtectedseProcessa tuplas, que são expressões separadas por vírgula entre parênteses. Se não houver vírgula, retorna apenas a expressão simples.
ProtectedvalidacaoProtectedverificar
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.
A grande diferença entre este avaliador e os demais é a forma como são entendidos os blocos de escopo. Este avaliador espera uma estrutura de pragmas, que explica quantos espaços há na frente de cada linha.