UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

149 lines 7.33 kB
import { AcessoMetodoOuPropriedade, Construto, Decorador, FuncaoConstruto, Leia, ListaCompreensao, ImportarComoConstruto } from '../../construtos'; import { Escreva, Se, Enquanto, Continua, Retorna, Escolha, Tente, Fazer, Var, FuncaoDeclaracao, Classe, Declaracao, Expressao, Sustar, Falhar, ParaCada, Comentario, TextoDocumentacao, Importar } from '../../declaracoes'; import { AvaliadorSintaticoInterface, ParametroInterface, SimboloInterface } from '../../interfaces'; import { Localizacao } from '../../lexador/dialetos/localizacao'; import { RetornoLexador } from '../../interfaces/retornos/retorno-lexador'; import { ErroAvaliadorSintatico } from '../erro-avaliador-sintatico'; import { RetornoAvaliadorSintatico } from '../../interfaces/retornos/retorno-avaliador-sintatico'; import { PilhaEscopos } from '../pilha-escopos'; import { InformacaoElementoSintatico } from '../../informacao-elemento-sintatico'; import { ClasseDeModulo } from '../../interpretador/estruturas'; /** * 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. */ export declare class AvaliadorSintaticoPitugues implements AvaliadorSintaticoInterface<SimboloInterface, Declaracao> { simbolos: SimboloInterface[]; erros: ErroAvaliadorSintatico[]; localizacoes: { [linha: number]: Localizacao; }; tiposDefinidosEmCodigo: { [nomeTipo: string]: Declaracao; }; tiposDefinidosPorBibliotecas: { [nomeTipo: string]: ClasseDeModulo; }; pilhaEscopos: PilhaEscopos; primitivasConhecidas: { [nomeModuloOuClasse: string]: { [nomePrimitiva: string]: InformacaoElementoSintatico; }; }; hashArquivo: number; atual: number; blocos: number; escopos: number[]; performance: boolean; superclasseAtual: string | undefined; intuirTipoQualquerParaIdentificadores: boolean; pilhaDecoradores: Decorador[]; constructor(performance?: boolean); protected logicaComumInferenciaTiposAcessoMetodoOuPropriedade(entidadeChamada: AcessoMetodoOuPropriedade): string; protected logicaComumInferenciaTiposVariaveisEConstantes(inicializador: Construto, tipoPrevio: string): string; expressaoLeia(): Promise<Leia>; declaracaoDeVariavel(): Var; private variavelJaDeclarada; private declaracaoImplicitaVariaveis; private temPadraoMultiplaAtribuicao; private temPadraoVarComoPalavraChave; private consumirIdentificadores; private consumirInicializadores; private construirValidacaoDesempacotamento; declaracaoDeVariaveis(): Promise<any>; sincronizar(): void; erro(simbolo: SimboloInterface, mensagemDeErro: string): ErroAvaliadorSintatico; consumir(tipo: string, mensagemDeErro: string): SimboloInterface<string>; verificarTipoSimboloAtual(tipo: string): boolean; verificarTipoProximoSimbolo(tipo: string): boolean; simboloAtual(): SimboloInterface; simboloAnterior(): SimboloInterface; simboloNaPosicao(posicao: number): SimboloInterface; estaNoFinal(): boolean; avancarEDevolverAnterior(): SimboloInterface<string>; verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean; primario(): Promise<Construto>; finalizarChamada(entidadeChamada: Construto): Promise<Construto>; chamar(): Promise<Construto>; unario(): Promise<Construto>; exponenciacao(): Promise<Construto>; multiplicar(): Promise<Construto>; adicaoOuSubtracao(): Promise<Construto>; bitShift(): Promise<Construto>; bitE(): Promise<Construto>; bitOu(): Promise<Construto>; comparar(): Promise<Construto>; comparacaoIgualdade(): Promise<Construto>; em(): Promise<Construto>; e(): Promise<Construto>; ou(): Promise<Construto>; protected seTernario(): Promise<Construto>; tupla(): Promise<Construto>; atribuir(): Promise<Construto>; expressao(): Promise<Construto>; declaracaoEscreva(simboloEscreva: SimboloInterface): Promise<Escreva>; declaracaoExpressao(): Promise<Expressao>; blocoEscopo(): Promise<any[]>; declaracaoEnquanto(): Promise<Enquanto>; declaracaoEscolha(): Promise<Escolha>; protected declaracaoParaCada(simboloPara: SimboloInterface): Promise<ParaCada>; declaracaoPara(): Promise<ParaCada>; /** * Função auxiliar para validar se o alvo pode ser iterado. */ private validarSeAlvoEIteravel; declaracaoSe(): Promise<Se>; declaracaoSustar(): Sustar; protected resolverDecoradores(): Promise<void>; declaracaoComentario(): Comentario; declaracaoContinua(): Continua; declaracaoRetorna(): Promise<Retorna>; construtoImportar(): Promise<ImportarComoConstruto>; declaracaoImportar(): Promise<Importar>; declaracaoImportarDe(): Promise<Importar>; declaracaoTente(): Promise<Tente>; declaracaoFazer(): Promise<Fazer>; funcao(tipo: string, construtor?: boolean): Promise<FuncaoDeclaracao>; logicaComumParametros(): Promise<Array<Partial<ParametroInterface>>>; /** * Resolve uma lista de compreensão. * @param retornoExpressao A expressão já resolvida que representa o valor a ser retornado. * @returns {ListaCompreensao} A lista de compreensão resolvida. */ protected resolverCompreensaoDeLista(retornoExpressao: Construto): Promise<ListaCompreensao>; protected verificarDefinicaoTipoAtual(): string; declaracaoTextoDeDocumentacao(): TextoDocumentacao | undefined; corpoDaFuncao(tipo: string): Promise<FuncaoConstruto>; declaracaoDeClasse(): Promise<Classe>; declaracaoFalhar(): Falhar; /** * Verifica se há pontos e vírgula no final de sentenças. * Em Pituguês, ; só é permitido para separar múltiplos comandos na mesma linha, * mas não no final de uma sentença/linha. */ private verificarPontosEVirgulasInvalidos; /** * Encontra o próximo símbolo que não seja comentário. * Isso é importante porque comentários não afetam a validade do ponto e vírgula. */ private encontrarProximoSimboloNaoComentario; /** * Consome o símbolo atual, verificando se é uma declaração de função, variável, classe * ou uma expressão. * @returns Objeto do tipo `Declaracao`. */ resolverDeclaracaoForaDeBloco(): Promise<Declaracao | Declaracao[]>; resolverDeclaracao(): Promise<Declaracao | Declaracao[]>; /** * Inicializa 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 inicializarPilhaEscopos(): void; analisar(retornoLexador: RetornoLexador<SimboloInterface>, hashArquivo: number): Promise<RetornoAvaliadorSintatico<Declaracao>>; } //# sourceMappingURL=avaliador-sintatico-pitugues.d.ts.map