@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
70 lines • 4.08 kB
TypeScript
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