UNPKG

@designliquido/delegua

Version:

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

138 lines 7.4 kB
import { AcessoMetodoOuPropriedade, Chamada, Construto, Dicionario, FuncaoConstruto, Leia, Tupla } from '../../construtos'; import { ParametroInterface, SimboloInterface } from '../../interfaces'; import { ErroAvaliadorSintatico } from './../erro-avaliador-sintatico'; import { Comentario, Continua, Declaracao, Enquanto, Escreva, Expressao, FuncaoDeclaracao, Para, ParaCada, Retorna, Se, Sustar, Var } from '../../declaracoes'; import { RetornoAvaliadorSintatico } from '../../interfaces/retornos/retorno-avaliador-sintatico'; import { RetornoLexador } from '../../interfaces/retornos/retorno-lexador'; import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base'; import { PilhaEscopos } from './../pilha-escopos'; import { InformacaoElementoSintatico } from '../../informacao-elemento-sintatico'; /** * Este avaliador sintático emite todos os símbolos de Tenda. No entanto, nem todo * símbolo emitido aqui pode ser interpretado por este núcleo, já que Tenda tem * Rust como base, e várias de suas funções requerem interface com um sistema operacional. * Outros pacotes do ecossistema de Delégua, como `delegua-node` poderão lidar com * todas as funcionalidades de Tenda. */ export declare class AvaliadorSintaticoTenda extends AvaliadorSintaticoBase { simbolos: SimboloInterface[]; erros: ErroAvaliadorSintatico[]; tiposDefinidosEmCodigo: { [key: string]: Declaracao; }; pilhaEscopos: PilhaEscopos; tiposDeFerramentasExternas: { [key: string]: { [key: string]: string; }; }; primitivasConhecidas: { [key: string]: InformacaoElementoSintatico; }; hashArquivo: number; atual: number; blocos: number; performance: boolean; superclasseAtual: string | undefined; constructor(performance?: boolean); protected verificarDefinicaoTipoAtual(): string; protected obterChaveDicionario(): Promise<Construto>; protected construtoDicionario(simboloChaveEsquerda: SimboloInterface): Promise<Dicionario>; protected construtoTupla(): Promise<Tupla>; primario(): Promise<Construto>; chamar(): Promise<Construto>; /** * `AcessoMetodoOuPropriedade` é um construto intermediário em Delégua, e deve ser resolvido como outro * construto antes de qualquer outra próxima etapa. Algumas validações adicionais também ocorrem aqui. * @param {AcessoMetodoOuPropriedade} entidadeChamadaResolvida O construto original. * @returns {Construto} O construto resolvido como um tipo mais específico. * @see finalizarChamada */ protected resolverEntidadeChamadaAcessoMetodoOuPropriedade(entidadeChamadaResolvida: AcessoMetodoOuPropriedade): Construto; protected validarArgumentosEntidadeChamada(argumentosEntidadeChamada: InformacaoElementoSintatico[], argumentosUtilizados: Construto[]): string[]; /** * Diversas verificações de resolução de entidade chamada, como resolver chamada da pilha ou usar referência, argumentos, etc. * @param entidadeChamada O construto da entidade chamada. * @param argumentos Os argumentos utilizados na chamada. * @param tipoPrimitiva Se for uma primitiva, o tipo dela. Senão, `undefined`. * @returns A entidade chamada resolvida, se as validações passarem. */ protected resolverEntidadeChamada(entidadeChamada: Construto, argumentos: Construto[], tipoPrimitiva?: string | undefined): Construto; protected declaracaoDeFuncao(identificador: SimboloInterface<string>): Promise<FuncaoDeclaracao>; finalizarChamada(entidadeChamada: Construto, tipoPrimitiva?: string | undefined): Promise<Chamada>; unario(): Promise<Construto>; multiplicar(): Promise<Construto>; /** * Se símbolo de operação é `+`, `-`, `+=` ou `-=`, monta objeto `Binario` para * ser avaliado pelo Interpretador. * @returns Um Construto, normalmente um `Binario`, ou `Unario` se houver alguma operação unária para ser avaliada. */ adicaoOuSubtracao(): Promise<Construto>; bitShift(): Promise<Construto>; bitE(): Promise<Construto>; bitOu(): Promise<Construto>; comparar(): Promise<Construto>; comparacaoIgualdade(): Promise<Construto>; em(): Promise<Construto>; e(): Promise<Construto>; /** * Método que resolve atribuições. * @returns Um construto do tipo `Atribuir`, `Conjunto` ou `AtribuicaoPorIndice`. */ atribuir(): Promise<Construto>; /** * Declaração para comando `leia`, para ler dados de entrada do usuário. * @returns Um objeto da classe `Leia`. */ expressaoLeia(): Promise<Leia>; expressao(): Promise<Construto>; blocoEscopo(tipo?: string): Promise<Array<Declaracao>>; protected declaracaoComentarioUmaLinha(): Comentario; declaracaoContinua(): Continua; declaracaoEnquanto(): Promise<Enquanto>; declaracaoEscreva(): Promise<Escreva>; protected declaracaoExpressao(): Promise<Expressao>; declaracaoPara(): Promise<Para | ParaCada>; protected declaracaoParaCada(simboloParaCada: SimboloInterface, simboloVariavelIteracao: SimboloInterface, literalOuVariavelIteravel: Construto): Promise<ParaCada>; protected declaracaoParaTradicional(simboloPara: SimboloInterface, simboloVariavelIteracao: SimboloInterface, literalOuVariavelInicio: Construto): Promise<Para>; declaracaoRetorna(): Promise<Retorna>; declaracaoSe(): Promise<Se>; declaracaoSustar(): Sustar; /** * Todas as resoluções triviais da linguagem, ou seja, todas as * resoluções que podem ocorrer dentro ou fora de um bloco. * @returns Normalmente uma `Declaracao`, mas há casos em que * outros objetos podem ser retornados. * @see resolverDeclaracaoForaDeBloco para as declarações que não podem * ocorrer em blocos de escopo elementares. */ protected resolverDeclaracao(): Promise<Declaracao | Declaracao[]>; protected logicaComumInferenciaTiposVariaveis(inicializador: Construto): string; /** * Após palavra reservada `seja`, é esperado ou uma variável, ou uma função. * @returns Um Construto, ou do tipo `Var` para variável, ou do tipo `FuncaoDeclaracao` se for * declaração de função. */ protected declaracaoDeVariaveisOuFuncoes(): Promise<Var | FuncaoDeclaracao>; protected logicaComumParametros(): Promise<ParametroInterface[]>; corpoDaFuncao(tipo: 'função' | 'implícita'): Promise<FuncaoConstruto>; /** * Até então, Tenda não tem casos de declarações fora de blocos. * Isso pode mudar futuramente. Portanto, esta seção será mantida. * @returns Uma `Declaracao` ou várias, dependendo do retorno de `resolverDeclaracao`. * @see resolverDeclaracao */ resolverDeclaracaoForaDeBloco(): Promise<Declaracao | Declaracao[]>; /** * Usado quando há erros na avaliação sintática. * Garante que o código não entre em loop infinito. * @returns Sempre retorna `void`. */ protected sincronizar(): void; /** * Inicializa o primeiro nível da pilha de escopos, normalmente com ítens da biblioteca global. */ protected inicializarPilhaEscopos(): void; analisar(retornoLexador: RetornoLexador<SimboloInterface>, hashArquivo: number): Promise<RetornoAvaliadorSintatico<Declaracao>>; } //# sourceMappingURL=avaliador-sintatico-tenda.d.ts.map