import { Atribuir, Binario, FimPara, Leia, Literal, Logico, Super, TipoDe, Unario, Variavel } from '@designliquido/delegua/construtos'; import { Bloco, Classe, Comentario, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, Para, ParaCada, Retorna, Se, Tente, Var } from '@designliquido/delegua/declaracoes'; import { EspacoMemoria } from '@designliquido/delegua/interpretador/espaco-memoria'; import { ConstrutoInterface, RetornoInterpretadorInterface, SimboloInterface, VariavelInterface } from '@designliquido/delegua/interfaces'; import { ErroInterpretadorInterface } from '@designliquido/delegua/interfaces/erros/erro-interpretador-interface'; import { PilhaEscoposExecucaoInterface } from '@designliquido/delegua/interfaces/pilha-escopos-execucao-interface'; import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '@designliquido/delegua/quebras'; import { InterpretadorBase } from '@designliquido/delegua/interpretador/interpretador-base'; export declare class InterpretadorBirl extends InterpretadorBase { diretorioBase: any; funcaoDeRetorno: Function; funcaoDeRetornoMesmaLinha: Function; pilhaEscoposExecucao: PilhaEscoposExecucaoInterface; interfaceEntradaSaida: any; erros: ErroInterpretadorInterface[]; declaracoes: Declaracao[]; regexInterpolacao: RegExp; expressoesStringC: { '%d': string; '%i': string; '%u': string; '%f': string; '%F': string; '%e': string; '%E': string; '%g': string; '%G': string; '%x': string; '%X': string; '%o': string; '%s': string; '%c': string; '%p': string; }; constructor(diretorioBase: string, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function); visitarDeclaracaoComentario(declaracao: Comentario): Promise; visitarExpressaoTipoDe(expressao: TipoDe): Promise; visitarExpressaoFalhar(expressao: any): Promise; avaliar(expressao: ConstrutoInterface | Declaracao): Promise; /** * 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 espacoMemoria O ambiente de execução quando houver, como parâmetros, argumentos, etc. */ executarBloco(declaracoes: Declaracao[], espacoMemoria?: EspacoMemoria): Promise; visitarExpressaoAgrupamento(expressao: any): Promise; protected verificarOperandoNumero(operador: SimboloInterface, operando: any): void; visitarExpressaoUnaria(expressao: Unario): Promise; /** * Verifica se operandos são números, que podem ser tanto variáveis puras do JavaScript * (neste caso, `number`), ou podem ser variáveis de Delégua com inferência (`VariavelInterface`). * @param operador O símbolo do operador. * @param direita O operando direito. * @param esquerda O operando esquerdo. * @returns Se ambos os operandos são números ou não. */ protected verificarOperandosNumeros(operador: SimboloInterface, direita: VariavelInterface | any, esquerda: VariavelInterface | any): void; visitarExpressaoBinaria(expressao: Binario): Promise; /** * Executa uma chamada de função, método ou classe. * @param expressao A expressão chamada. * @returns O resultado da chamada. */ visitarExpressaoDeChamada(expressao: any): Promise; visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise; protected procurarVariavel(simbolo: SimboloInterface): any; visitarExpressaoDeVariavel(expressao: Variavel): any; visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise; /** * Execução da leitura de valores da entrada configurada no * início da aplicação. * @param expressao Expressão do tipo Leia * @returns Promise com o resultado da leitura. */ visitarExpressaoLeia(expressao: Leia): Promise; visitarExpressaoLiteral(expressao: Literal): Promise; visitarExpressaoLogica(expressao: Logico): Promise; visitarDeclaracaoPara(declaracao: Para): Promise; visitarDeclaracaoParaCada(declaracao: ParaCada): Promise; eVerdadeiro(objeto: any): boolean; /** * Executa uma expressão Se, que tem uma condição, pode ter um bloco * Senão, e múltiplos blocos Senão-se. * @param declaracao A declaração Se. * @returns O resultado da avaliação do bloco cuja condição é verdadeira. */ visitarDeclaracaoSe(declaracao: Se): Promise; visitarExpressaoFimPara(declaracao: FimPara): never; visitarDeclaracaoFazer(declaracao: Fazer): Promise; visitarDeclaracaoEscolha(declaracao: Escolha): Promise; visitarDeclaracaoTente(declaracao: Tente): Promise; visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise; substituirValor(stringOriginal: string, novoValor: number | string | any, simboloTipo: string): Promise; resolverQuantidadeDeInterpolacoes(texto: Literal): Promise; verificarTipoDaInterpolacao(dados: { tipo: string; valor: any; }): Promise; avaliarArgumentosEscreva(argumentos: ConstrutoInterface[]): Promise; /** * Execução de uma escrita na saída configurada, que pode ser `console` (padrão) ou * alguma função para escrever numa página Web. * @param declaracao A declaração. * @returns Sempre nulo, por convenção de visita. */ visitarDeclaracaoEscreva(declaracao: Escreva): Promise; visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise; visitarExpressaoBloco(declaracao: Bloco): Promise; /** * Executa expressão de definição de variável. * @param declaracao A declaração Var * @returns Sempre retorna nulo. */ visitarDeclaracaoVar(declaracao: Var): Promise; visitarDeclaracaoConst(declaracao: Const): Promise; visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra; visitarExpressaoSustar(declaracao?: any): SustarQuebra; visitarExpressaoRetornar(declaracao: Retorna): Promise; visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise; visitarExpressaoAcessoIndiceVariavel(expressao: any): Promise; visitarExpressaoDefinirValor(expressao: any): Promise; visitarDeclaracaoClasse(declaracao: Classe): Promise; visitarExpressaoAcessoMetodo(expressao: any): Promise; visitarExpressaoIsto(expressao: any): never; visitarExpressaoDicionario(expressao: any): Promise; visitarExpressaoVetor(expressao: any): Promise; visitarExpressaoSuper(expressao: Super): never; paraTexto(objeto: any): any; /** * Efetivamente executa uma declaração. * @param declaracao A declaração a ser executada. * @param mostrarResultado Se resultado deve ser mostrado ou não. Normalmente usado * pelo modo LAIR. */ executar(declaracao: Declaracao, mostrarResultado?: boolean): Promise; interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise; } //# sourceMappingURL=interpretador-birl.d.ts.map