@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
110 lines • 6.76 kB
TypeScript
import { AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, Atribuir, Construto, ExpressaoRegular, FimPara, FormatacaoEscrita, Leia, ReferenciaFuncao, Super, TipoDe, Tupla, Variavel } from '../../../../construtos';
import { Aleatorio, Bloco, CabecalhoPrograma, Comentario, Const, ConstMultiplo, Declaracao, EscrevaMesmaLinha, Expressao, ParaCada, Se, TendoComo, Var, VarMultiplo } from '../../../../declaracoes';
import { InicioAlgoritmo } from '../../../../declaracoes/inicio-algoritmo';
import { EspacoMemoria } from '../../../espaco-memoria';
import { InterpretadorInterface, SimboloInterface } from '../../../../interfaces';
import { PilhaEscoposExecucaoInterface } from '../../../../interfaces/pilha-escopos-execucao-interface';
import { ResolvedorInterface } from '../../../../interfaces/resolvedor-interface';
import { RetornoInterpretador } from '../../../../interfaces/retornos';
import { ErroResolvedor } from './erro-resolvedor';
import { PilhaEscopos } from './pilha-escopos';
import { RetornoResolvedor } from './retorno-resolvedor';
/**
* O Resolvedor (Resolver) é responsável por catalogar todos os identificadores complexos, como por exemplo: funções, classes, variáveis,
* e delimitar os escopos onde esses identificadores existem.
*
* Exemplo: uma classe A declara dois métodos chamados M e N. Todas as variáveis declaradas dentro de M não podem ser vistas por N, e vice-versa.
* No entanto, todas as variáveis declaradas dentro da classe A podem ser vistas tanto por M quanto por N.
*
* Não faz sentido ser implementado nos outros interpretadores pelos outros optarem por uma pilha de execução que
* espera importar qualquer coisa a qualquer momento.
*/
export declare class ResolvedorEguaClassico implements ResolvedorInterface, InterpretadorInterface {
erros: ErroResolvedor[];
escopos: PilhaEscopos;
locais: Map<Construto, number>;
funcaoAtual: any;
classeAtual: any;
cicloAtual: any;
interfaceEntradaSaida: any;
diretorioBase: any;
funcaoDeRetorno: Function;
pilhaEscoposExecucao: PilhaEscoposExecucaoInterface;
constructor();
visitarExpressaoDeleguaFuncao(declaracao: any): void;
visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any> | void;
visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any> | void;
visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any> | void;
visitarExpressaoAcessoMetodo(expressao: 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;
avaliar(expressao: any): void;
eVerdadeiro(objeto: any): boolean;
verificarOperandoNumero(operador: SimboloInterface, operando: any): void;
eIgual(esquerda: any, direita: any): boolean;
verificarOperandosNumeros(operador: SimboloInterface, direita: any, esquerda: any): void;
procurarVariavel(nome: SimboloInterface, expressao: any): void;
visitarExpressaoLeia(expressao: Leia): Promise<any>;
executarBloco(declaracoes: Declaracao[], ambiente?: EspacoMemoria): Promise<any>;
paraTexto(objeto: any): void;
executar(declaracao: Declaracao, mostrarResultado: boolean): void;
interpretar(declaracoes: Declaracao[], manterAmbiente?: boolean): Promise<RetornoInterpretador>;
finalizacao(): void;
definir(simbolo: SimboloInterface): void;
declarar(simbolo: SimboloInterface): void;
inicioDoEscopo(): void;
finalDoEscopo(): void;
resolverLocal(expressao: Construto, simbolo: SimboloInterface): void;
visitarExpressaoBloco(declaracao: Bloco): any;
visitarExpressaoDeVariavel(expressao: Variavel): any;
visitarDeclaracaoVar(declaracao: Var): any;
visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): any;
visitarExpressaoDeAtribuicao(expressao: Atribuir): any;
resolverFuncao(funcao: any, funcType: any): void;
visitarDeclaracaoDefinicaoFuncao(declaracao: any): any;
visitarExpressaoFuncaoConstruto(declaracao: any): any;
visitarDeclaracaoTente(declaracao: any): any;
visitarDeclaracaoClasse(declaracao: any): any;
visitarExpressaoSuper(expressao: Super): any;
visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): any;
visitarDeclaracaoDeExpressao(declaracao: Expressao): any;
visitarDeclaracaoSe(declaracao: Se): any;
visitarDeclaracaoImportar(declaracao: any): Promise<void>;
visitarDeclaracaoEscreva(declaracao: any): Promise<void>;
visitarExpressaoRetornar(declaracao: any): any;
visitarDeclaracaoEscolha(declaracao: any): Promise<void>;
visitarDeclaracaoEnquanto(declaracao: any): any;
visitarDeclaracaoPara(declaracao: any): any;
visitarDeclaracaoFazer(declaracao: any): any;
visitarExpressaoBinaria(expressao: any): any;
visitarExpressaoDeChamada(expressao: any): any;
visitarExpressaoAgrupamento(expressao: any): any;
visitarExpressaoDicionario(expressao: any): any;
visitarExpressaoVetor(expressao: any): any;
visitarExpressaoAcessoIndiceVariavel(expressao: any): any;
visitarExpressaoContinua(declaracao?: any): any;
visitarExpressaoSustar(declaracao?: any): any;
visitarExpressaoAtribuicaoPorIndice(expressao?: any): any;
visitarExpressaoLiteral(expressao?: any): any;
visitarExpressaoLogica(expressao?: any): any;
visitarExpressaoUnaria(expressao?: any): any;
visitarExpressaoDefinirValor(expressao?: any): any;
visitarExpressaoIsto(expressao?: any): any;
visitarDeclaracaoAleatorio(declaracao: Aleatorio): Promise<any>;
resolver(declaracoes: Construto | Declaracao | Declaracao[]): Promise<RetornoResolvedor>;
}
//# sourceMappingURL=resolvedor.d.ts.map