@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
101 lines • 4.91 kB
TypeScript
import { Chamada, Construto, FuncaoConstruto, Leia, ImportarComoConstruto } from '../../construtos';
import { Escreva, Escolha, ParaCada, Se, Tente, Enquanto, Para, Continua, Retorna, Importar, Var, FuncaoDeclaracao, Classe, Declaracao, Expressao, Sustar } from '../../declaracoes';
import { ParametroInterface, SimboloInterface } from '../../interfaces';
import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base';
import { RetornoLexador } from '../../interfaces/retornos/retorno-lexador';
import { ErroAvaliadorSintatico } from '../erro-avaliador-sintatico';
import { RetornoAvaliadorSintatico } from '../../interfaces/retornos/retorno-avaliador-sintatico';
import { PilhaEscopos } from '../pilha-escopos';
import { InformacaoElementoSintatico } from '../../informacao-elemento-sintatico';
/**
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
* Há dois grupos de estruturas de alto nível: Construtos e Declarações.
*
* Este avaliador sintático é específico para o dialeto Prisma da linguagem Delégua.
*/
export declare class AvaliadorSintaticoPrisma extends AvaliadorSintaticoBase {
simbolos: SimboloInterface[];
erros: ErroAvaliadorSintatico[];
tiposDefinidosEmCodigo: {
[nomeTipo: string]: Declaracao;
};
pilhaEscopos: PilhaEscopos;
primitivasConhecidas: {
[nomeModuloOuClasse: string]: {
[nomePrimitiva: string]: InformacaoElementoSintatico;
};
};
hashArquivo: number;
atual: number;
blocos: number;
performance: boolean;
superclasseAtual: string | undefined;
constructor(performance?: boolean);
sincronizar(): void;
consumir(tipo: string, mensagemDeErro: string): SimboloInterface;
simboloNaPosicao(posicao: number): SimboloInterface;
avancarEDevolverAnterior(): SimboloInterface<string>;
verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean;
primario(): Promise<Construto>;
expressaoImportar(): Promise<ImportarComoConstruto>;
/**
* Construto para texto multilinhas.
* @returns
*/
construtoTextoMultilinhas(): Construto;
expressaoLeia(): Promise<Leia>;
protected finalizarChamada(entidadeChamada: Construto): Promise<Chamada>;
chamar(): Promise<Construto>;
unario(): Promise<Construto>;
exponenciacao(): Promise<Construto>;
multiplicar(): Promise<Construto>;
adicaoOuSubtracao(): Promise<Construto>;
concatenacao(): Promise<Construto>;
bitShift(): Promise<Construto>;
bitE(): Promise<Construto>;
bitOu(): Promise<Construto>;
comparar(): Promise<Construto>;
comparacaoIgualdade(): Promise<Construto>;
em(): Promise<Construto>;
e(): Promise<Construto>;
ou(): Promise<Construto>;
ternario(): Promise<Construto>;
atribuir(): Promise<Construto>;
expressao(): Promise<Construto>;
declaracaoEscreva(): Promise<Escreva>;
declaracaoExpressao(): Promise<Expressao>;
protected blocoEscopo(): Promise<any[]>;
declaracaoDeLocal(): Promise<Var>;
declaracaoEnquanto(): Promise<Enquanto>;
declaracaoEscolha(): Promise<Escolha>;
declaracaoSe(): Promise<Se>;
declaracaoTente(): Promise<Tente>;
declaracaoQuebre(): Promise<Sustar>;
declaracaoContinua(): Continua;
declaracaoRetorna(): Promise<Retorna>;
declaracaoImportar(): Promise<Importar>;
corpoDaFuncao(tipo: string): Promise<FuncaoConstruto>;
protected logicaComumParametros(): Promise<ParametroInterface[]>;
funcao(tipo: string): Promise<FuncaoDeclaracao>;
resolverDeclaracao(): Promise<Declaracao>;
declaracaoOuAtribuicaoVariaveis(): Promise<Var | Expressao>;
/**
* Segundo o manual de Prisma, os tipos válidos para a linguagem são:
* número, string , tabela, funcao , userdata, boolean, nulo.
* @param inicializador O construto do inicializador.
* @param tipoPrevio Se há um tipo prévio definido. `qualquer` não é válido em Prisma:
* O tipo sempre resolve para algum outro.
* @returns O tipo inferido.
*/
protected logicaComumInferenciaTiposVariaveisEConstantes(inicializador: Construto, tipoPrevio: string): string;
declaracaoParaCada(simboloPara: SimboloInterface): Promise<ParaCada>;
declaracaoPara(): Promise<Para | ParaCada>;
resolverDeclaracaoForaDeBloco(): Promise<Declaracao | null>;
metodoClassePrisma(construtor: boolean): Promise<FuncaoDeclaracao>;
private propriedadesDeclaradasEmMetodo;
declaracaoDeClasse(): Promise<Classe>;
protected inicializarPilhaEscopos(): void;
analisar(retornoLexador: RetornoLexador<SimboloInterface>, hashArquivo: number): Promise<RetornoAvaliadorSintatico<Declaracao>>;
}
//# sourceMappingURL=avaliador-sintatico-prisma.d.ts.map