UNPKG

@designliquido/delegua

Version:

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

129 lines 7.79 kB
import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Construto, AtribuicaoPorIndice, Atribuir, Chamada, ComentarioComoConstruto, DefinirValor, Dicionario, EnquantoComoConstruto, FazerComoConstruto, ListaCompreensao, ParaCadaComoConstruto, ParaComoConstruto, Separador, TipoDe, Unario, Vetor, ImportarComoConstruto, Elvis, SeTernario, TuplaN, AjudaComoConstruto } from '../construtos'; import { ReferenciaMontao } from './estruturas'; import { ResultadoParcialInterpretadorInterface, RetornoInterpretadorInterface, VisitanteDeleguaInterface } from '../interfaces'; import { InterpretadorBase } from './interpretador-base'; import { Ajuda, Const, ConstMultiplo, Declaracao, Enquanto, Fazer, FuncaoDeclaracao, InterfaceDeclaracao, Para, ParaCada, Retorna, TendoComo, Var, VarMultiplo } from '../declaracoes'; import { RetornoQuebra } from '../quebras'; import { Montao } from './montao'; import { EnquantoInterface, FazerInterface, ParaCadaInterface, ParaInterface } from '../interfaces/delegua'; /** * O interpretador de Delégua, usado também por Pituguês usando herança. * @see InterpretadorPitugues */ export declare class Interpretador extends InterpretadorBase implements VisitanteDeleguaInterface { montao: Montao; acumularRetornos: boolean; constructor(diretorioBase: string, performance?: boolean, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function); /** * Cada dialeto que deriva deste interpretador conhece este ponto de inicialização. * A partir daqui, cada dialeto pode carregar as bibliotecas globais específicas do seu dialeto. */ protected pontoInicializacaoBibliotecasGlobais(): void; protected avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>; protected resolverReferenciaMontao(referenciaMontao: ReferenciaMontao): any; resolverValor(objeto: any, referencia?: boolean): any; private serializarSemEspacos; paraTexto(objeto: any): string; avaliacaoDeclaracaoVarOuConst(declaracao: Const | ConstMultiplo | Var | VarMultiplo): Promise<any>; /** * Declaração de ajuda. * Neste interpretador básico, a ajuda apenas retorna texto sobre um determinado * tópico, ou ainda sobre a ajuda em si. * Outros ambientes implementam mecanismos mais sofisticados, como o modo de ajuda. * @param declaracao A declaração de ajuda. */ visitarDeclaracaoInterface(_declaracao: InterfaceDeclaracao): Promise<any>; visitarDeclaracaoAjuda(declaracao: Ajuda): Promise<any>; visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<any>; protected logicaComumExecucaoEnquanto(enquanto: EnquantoInterface, acumularRetornos: boolean): Promise<ResultadoParcialInterpretadorInterface | { valorRetornado: any[]; tipo: string; }>; visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<any>; protected logicaComumExecucaoFazer(fazer: FazerInterface, acumularRetornos: boolean): Promise<{ valorRetornado: any[]; tipo: string; }>; visitarDeclaracaoFazer(declaracao: Fazer): Promise<any>; protected logicaComumExecucaoPara(para: ParaInterface, acumularRetornos: boolean): Promise<any>; visitarDeclaracaoPara(declaracao: Para): Promise<any>; protected logicaComumExecucaoParaCada(paraCada: ParaCadaInterface, acumularRetornos: boolean): Promise<any>; visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>; visitarDeclaracaoTendoComo(declaracao: TendoComo): Promise<any>; visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>; visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any>; /** * Casos que ocorrem aqui: * * - Quando o método ou propriedade é ou 'qualquer', ou vetor * de 'qualquer' ('qualquer[]'), e uma primitiva é usada. * - Quando o objeto é uma classe definida em código. * @param {AcessoMetodoOuPropriedade} expressao A expressão de acesso a método ou propriedade. * @returns A primitiva encontrada. */ visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>; visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any>; visitarExpressaoAjuda(expressao: AjudaComoConstruto): Promise<any>; visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<any>; /** * Em Delégua e Pituguês, comentários não são importantes para a interpretação. * @param expressao Uma `Promise` sempre resolvida. */ visitarExpressaoComentario(expressao: ComentarioComoConstruto): Promise<any>; /** * Execução de uma expressão de atribuição. * @param expressao A expressão. * @returns O valor atribuído. */ visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>; visitarExpressaoDefinirValor(expressao: DefinirValor): Promise<any>; /** * Instâncias de classes em Delégua são passadas por referência, portanto, são * armazenadas no montão. */ visitarExpressaoDeChamada(expressao: Chamada): Promise<any>; /** * Dicionários em Delégua são passados por referência, portanto, são * armazenados no montão. */ visitarExpressaoDicionario(expressao: Dicionario): Promise<any>; visitarExpressaoElvis(expressao: Elvis): Promise<any>; visitarExpressaoEnquanto(expressao: EnquantoComoConstruto): Promise<any> | void; visitarExpressaoFazer(expressao: FazerComoConstruto): Promise<any> | void; visitarExpressaoImportar(expressao: ImportarComoConstruto): Promise<any> | void; visitarExpressaoListaCompreensao(listaCompreensao: ListaCompreensao): Promise<any>; visitarExpressaoPara(expressao: ParaComoConstruto): Promise<any> | void; visitarExpressaoParaCada(expressao: ParaCadaComoConstruto): Promise<any>; visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>; /** * Para Delégua e Pituguês, o separador é apenas um elemento de sintaxe. * Não há qualquer avaliação a ser feita. * @param expressao */ visitarExpressaoSeparador(expressao: Separador): Promise<any>; visitarExpressaoSeTernario(expressao: SeTernario): Promise<any>; visitarExpressaoTipoDe(expressao: TipoDe): Promise<string>; visitarExpressaoUnaria(expressao: Unario): Promise<any>; visitarExpressaoVetor(expressao: Vetor): Promise<any>; /** * Executa o último escopo empilhado no topo na pilha de escopos do interpretador. * Esse método pega exceções, mas apenas as devolve. * * O tratamento das exceções é feito de acordo com o bloco chamador. * Por exemplo, em `tente ... pegue ... finalmente`, a exceção é capturada e tratada. * Em outros blocos, pode ser desejável ter o erro em tela. * @param manterAmbiente Se verdadeiro, ambiente do topo da pilha de escopo é copiado para o ambiente imediatamente abaixo. * @returns O resultado da execução do escopo, se houver. */ executarUltimoEscopo(manterAmbiente?: boolean): Promise<ResultadoParcialInterpretadorInterface>; visitarExpressaoTuplaN(expressao: TuplaN): Promise<any>; /** * Método que efetivamente inicia o processo de interpretação. * @param declaracoes Um vetor de declarações gerado pelo Avaliador Sintático. * @param manterAmbiente Se ambiente de execução (variáveis, classes, etc.) deve ser mantido. Normalmente usado * pelo modo REPL (LAIR). * @returns Um objeto com o resultado da interpretação. */ interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretadorInterface>; } //# sourceMappingURL=interpretador.d.ts.map