UNPKG

@designliquido/delegua

Version:

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

70 lines 4.08 kB
import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, Atribuir, Construto, DefinirValor, Dicionario, ReferenciaFuncao, TipoDe } from '../construtos'; import { ReferenciaMontao } from './estruturas'; import { RetornoInterpretador } from '../interfaces'; import { InterpretadorBase } from './interpretador-base'; import { Const, ConstMultiplo, Declaracao, FuncaoDeclaracao, Retorna, Var, VarMultiplo } from '../declaracoes'; import { RetornoQuebra } from '../quebras'; import { Montao } from './montao'; /** * O interpretador de Delégua. */ export declare class Interpretador extends InterpretadorBase { montao: Montao; constructor(diretorioBase: string, performance?: boolean, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function); protected resolverReferenciaMontao(referenciaMontao: ReferenciaMontao): any; resolverValor(objeto: any): any; paraTexto(objeto: any): string; avaliacaoDeclaracaoVarOuConst(declaracao: Const | ConstMultiplo | Var | VarMultiplo): Promise<any>; avaliarArgumentosEscreva(argumentos: Construto[]): Promise<string>; visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void; 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>; visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any>; visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): 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>; /** * Dicionários em Delégua são passados por referência, portanto, são * armazenados no montão. */ visitarExpressaoDicionario(expressao: Dicionario): Promise<any>; visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any>; visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>; visitarExpressaoTipoDe(expressao: TipoDe): Promise<string>; /** * 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<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<RetornoInterpretador>; } //# sourceMappingURL=interpretador.d.ts.map