UNPKG

@designliquido/delegua

Version:

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

123 lines 7.92 kB
import { EspacoMemoria } from '../../espaco-memoria'; import { DeleguaFuncao } from '../../estruturas/delegua-funcao'; import { AcessoIndiceVariavel, AcessoMetodo, AcessoPropriedade, ArgumentoReferenciaFuncao, Atribuir, Construto, ExpressaoRegular, FimPara, FormatacaoEscrita, Isto, Leia, Literal, ReferenciaFuncao, Super, TipoDe, Tupla, Variavel } from '../../../construtos'; import { Aleatorio, CabecalhoPrograma, Classe, Comentario, Const, ConstMultiplo, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Para, ParaCada, Se, TendoComo, Tente, Var, VarMultiplo } from '../../../declaracoes'; import { InterpretadorInterface, ResolvedorInterface, SimboloInterface, VariavelInterface } from '../../../interfaces'; import { ErroInterpretador } from '../../../interfaces/erros/erro-interpretador'; import { RetornoInterpretador } from '../../../interfaces/retornos/retorno-interpretador'; import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../../quebras'; import { PilhaEscoposExecucao } from '../../pilha-escopos-execucao'; import { InicioAlgoritmo } from '../../../declaracoes/inicio-algoritmo'; /** * O Interpretador visita todos os elementos complexos gerados pelo analisador sintático (_Parser_) * e de fato executa a lógica de programação descrita no código. */ export declare class InterpretadorEguaClassico implements InterpretadorInterface { resolvedor: ResolvedorInterface; requerDeclaracaoPropriedades: boolean; diretorioBase: any; funcaoDeRetorno: Function; locais: Map<Construto, number>; erros: ErroInterpretador[]; pilhaEscoposExecucao: PilhaEscoposExecucao; interfaceEntradaSaida: any; constructor(diretorioBase: string); protected resolverValor(objeto: any): any; visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any> | void; visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any> | void; visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any> | void; visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any> | void; visitarDeclaracaoComentario(declaracao: Comentario): Promise<any>; visitarDeclaracaoTendoComo(declaracao: TendoComo): Promise<any>; visitarDeclaracaoInicioAlgoritmo(declaracao: InicioAlgoritmo): Promise<any>; visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any>; visitarExpressaoTupla(expressao: Tupla): Promise<any>; visitarExpressaoAcessoElementoMatriz(expressao: any): never; visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: any): Promise<any>; visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<any>; visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>; visitarExpressaoFalhar(expressao: any): Promise<any>; visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>; visitarDeclaracaoConst(declaracao: Const): Promise<any>; visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any>; visitarExpressaoFimPara(declaracao: FimPara): never; visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): never; visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): never; visitarExpressaoLeia(expressao: Leia): Promise<any>; visitarExpressaoLiteral(expressao: Literal): any; avaliar(expressao: Construto | Declaracao): VariavelInterface | any; visitarExpressaoAgrupamento(expressao: any): any; visitarDeclaracaoAleatorio(declaracao: Aleatorio): Promise<any>; eVerdadeiro(objeto: any): boolean; verificarOperandoNumero(operador: SimboloInterface, operando: any): void; visitarExpressaoUnaria(expr: any): Promise<number | boolean>; eIgual(esquerda: VariavelInterface | any, direita: VariavelInterface | any): boolean; verificarOperandosNumeros(operador: SimboloInterface, direita: VariavelInterface | any, esquerda: VariavelInterface | any): void; visitarExpressaoBinaria(expressao: any): Promise<any>; visitarExpressaoDeChamada(expressao: any): Promise<any>; visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>; procurarVariavel(simbolo: SimboloInterface, expressao: any): VariavelInterface; visitarExpressaoDeVariavel(expressao: Variavel): Promise<VariavelInterface>; visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>; visitarExpressaoLogica(expressao: any): Promise<any>; visitarDeclaracaoSe(declaracao: Se): Promise<any>; visitarDeclaracaoPara(declaracao: Para): Promise<any>; visitarDeclaracaoFazer(declaracao: Fazer): Promise<any>; visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>; visitarDeclaracaoTente(declaracao: Tente): Promise<any>; visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<any>; visitarDeclaracaoImportar(declaracao: Importar): Promise<void>; visitarDeclaracaoEscreva(declaracao: Escreva): Promise<any>; /** * Empilha declarações na pilha de escopos de execução, cria um novo ambiente e * executa as declarações empilhadas. * * Se o retorno do último bloco foi uma exceção (normalmente um erro em tempo de execução), * atira a exceção daqui. * Isso é usado, por exemplo, em blocos `tente ... pegue ... finalmente`. * @param declaracoes Um vetor de declaracoes a ser executado. * @param ambiente O ambiente de execução quando houver, como parâmetros, argumentos, etc. */ executarBloco(declaracoes: Declaracao[], ambiente?: EspacoMemoria): Promise<any>; visitarExpressaoBloco(declaracao: any): Promise<any>; /** * Executa expressão de definição de variável. * @param declaracao A declaração Var * @returns Sempre retorna nulo. */ visitarDeclaracaoVar(declaracao: Var): Promise<any>; visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<void>; visitarExpressaoContinua(declaracao?: any): ContinuarQuebra; visitarExpressaoSustar(declaracao?: any): SustarQuebra; visitarExpressaoRetornar(declaracao: any): Promise<RetornoQuebra>; visitarExpressaoFuncaoConstruto(expressao: any): Promise<DeleguaFuncao>; visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<void>; visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel | any): Promise<any>; visitarExpressaoDefinirValor(expressao: any): Promise<any>; visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void; visitarDeclaracaoClasse(declaracao: Classe): Promise<any>; visitarExpressaoAcessoMetodoOuPropriedade(expressao: any): Promise<any>; visitarExpressaoIsto(expressao: Isto): Promise<any>; visitarExpressaoDicionario(expressao: any): Promise<{}>; visitarExpressaoVetor(expressao: any): Promise<any[]>; visitarExpressaoSuper(expressao: Super): any; paraTexto(objeto: any): any; executar(declaracao: Declaracao, mostrarResultado?: boolean): Promise<any>; /** * Executa o último escopo empilhado no topo na pilha de escopos do Interpretador. * Originalmente, Égua não trabalha com uma pilha de escopos. * * 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. * * Essa implementação é derivada do Interpretador de Delégua, mas simulando todos os * comportamos do interpretador Égua original. * Interpretador Égua: https://github.com/eguatech/egua/blob/master/src/interpreter.js * @returns O resultado da execução do escopo, se houver. */ executarUltimoEscopo(): Promise<any>; interpretar(declaracoes: Declaracao[]): Promise<RetornoInterpretador>; finalizacao(): void; } //# sourceMappingURL=interpretador-egua-classico.d.ts.map