UNPKG

@designliquido/delegua

Version:

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

111 lines 8.41 kB
import { Atribuir, AcessoIndiceVariavel, AcessoElementoMatriz, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, ArgumentoReferenciaFuncao, Agrupamento, AtribuicaoPorIndice, AtribuicaoPorIndicesMatriz, Binario, Chamada, DefinirValor, FuncaoConstruto, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, Isto, Literal, Logico, Super, Tupla, TipoDe, Unario, Vetor, ReferenciaFuncao, Leia, ComentarioComoConstruto, Separador, Variavel, Constante, AcessoIntervaloVariavel, TuplaN, Morsa, Bote } from '../construtos'; import { Declaracao, TendoComo, InicioAlgoritmo, CabecalhoPrograma, Classe, Const, ConstMultiplo, Expressao, FuncaoDeclaracao, Enquanto, Escolha, Escreva, Fazer, Importar, Para, ParaCada, Se, Tente, Var, VarMultiplo, Bloco, Continua, EscrevaMesmaLinha, Falhar, Retorna, Sustar, Comentario, TextoDocumentacao } from '../declaracoes'; import { CorrecaoSugeridaInterface, DiagnosticoAnalisadorSemanticoInterface, DiagnosticoSeveridade, ParametroInterface, SimboloInterface } from '../interfaces'; import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface'; import { ConstrutoInterface } from '../interfaces/construtos/construto-interface'; import { RetornoAnalisadorSemanticoInterface } from '../interfaces/retornos/retorno-analisador-semantico-interface'; import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras'; import { GerenciadorEscopos } from './gerenciador-escopos'; /** * Essa classe só existe para eliminar redundância entre todos os analisadores * semânticos. Por padrão, quando um método não é implementado, ao invés de dar erro, * simplesmente passa por ele (`return Promise.resolve()`). */ export declare abstract class AnalisadorSemanticoBase implements AnalisadorSemanticoInterface { gerenciadorEscopos: GerenciadorEscopos; diagnosticos: DiagnosticoAnalisadorSemanticoInterface[]; abstract analisar(declaracoes: Declaracao[]): Promise<RetornoAnalisadorSemanticoInterface>; protected diagnosticoJaExiste(simbolo: SimboloInterface, mensagem: string): boolean; erro(simbolo: SimboloInterface, mensagem: string, codigoDiagnostico?: string, simboloRelacionado?: SimboloInterface): void; aviso(simbolo: SimboloInterface, mensagem: string, codigoDiagnostico?: string, simboloRelacionado?: SimboloInterface): void; sugestao(simbolo: SimboloInterface, mensagem: string, correcoes: CorrecaoSugeridaInterface[], codigoDiagnostico?: string, simboloRelacionado?: SimboloInterface): void; protected comparacaoArgumentosContraParametrosFuncao(simboloFuncao: SimboloInterface, parametros: ParametroInterface[], argumentos: ConstrutoInterface[]): void; /** * Obtém o tipo de uma expressão (pode ser Literal, Variavel, Binario, Leia, etc) */ protected obterTipoExpressao(expressao: ConstrutoInterface): string | null; /** * Infere o tipo de resultado de uma operação binária */ protected inferirTipoBinario(binario: Binario): string | null; /** * Marca as variáveis usadas em uma expressão. */ protected marcarVariaveisUsadasEmExpressao(expressao: ConstrutoInterface): void; /** * Stub para ser sobrescrito por subclasses que implementam análise de interpolações. */ protected verificarInterpolacaoTexto(_texto: string, _literal: Literal): void; /** * Analisa se todos os caminhos retornam * @returns true se todos os caminhos retornam, false caso contrário */ protected todosOsCaminhosRetornam(declaracoes: Declaracao[]): boolean; private verificarBlocoRetorna; protected verificarSeRetorna(declaracaoSe: Se): boolean; private verificarEscolhaRetorna; visitarDeclaracaoTextoDocumentacao(declaracao: TextoDocumentacao): Promise<any> | void; visitarExpressaoAcessoIntervaloVariavel(expressao: AcessoIntervaloVariavel): Promise<any> | void; visitarExpressaoTuplaN(expressao: TuplaN): Promise<any> | void; visitarExpressaoComentario(expressao: ComentarioComoConstruto): Promise<any> | void; visitarExpressaoSeparador(expressao: Separador): Promise<any> | void; adicionarDiagnostico(simbolo: SimboloInterface, mensagem: string, severidade?: DiagnosticoSeveridade, codigoDiagnostico?: string, simboloRelacionado?: SimboloInterface): void; visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<any> | void; visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<any> | void; visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any> | void; visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any> | void; visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any>; visitarDeclaracaoClasse(declaracao: Classe): Promise<any>; visitarDeclaracaoComentario(declaracao: Comentario): void | Promise<any>; visitarDeclaracaoConst(declaracao: Const): Promise<any>; visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any>; visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>; visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>; visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<any>; visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<any>; visitarDeclaracaoEscolha(declaracao: Escolha): Promise<any>; visitarDeclaracaoEscreva(declaracao: Escreva): Promise<any>; visitarDeclaracaoFazer(declaracao: Fazer): Promise<any>; visitarDeclaracaoImportar(declaracao: Importar): Promise<any>; visitarDeclaracaoInicioAlgoritmo(declaracao: InicioAlgoritmo): Promise<any>; visitarDeclaracaoPara(declaracao: Para): Promise<any>; visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>; visitarDeclaracaoSe(declaracao: Se): Promise<any>; visitarDeclaracaoTendoComo(declaracao: TendoComo): Promise<any>; visitarDeclaracaoTente(declaracao: Tente): Promise<any>; visitarDeclaracaoVar(declaracao: Var): Promise<any>; visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<any>; visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>; visitarExpressaoAcessoElementoMatriz(expressao: AcessoElementoMatriz): Promise<any>; visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>; visitarExpressaoAgrupamento(expressao: Agrupamento): Promise<any>; visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<any>; visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: AtribuicaoPorIndicesMatriz): Promise<any>; visitarExpressaoBinaria(expressao: Binario): Promise<any>; visitarExpressaoBloco(declaracao: Bloco): Promise<any>; visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra; visitarExpressaoDeChamada(expressao: Chamada): Promise<any>; visitarExpressaoDefinirValor(expressao: DefinirValor): Promise<any>; visitarExpressaoFuncaoConstruto(expressao: FuncaoConstruto): Promise<any>; visitarExpressaoDeVariavel(expressao: Variavel | Constante): Promise<any>; visitarExpressaoDicionario(expressao: Dicionario): Promise<any>; visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<RegExp>; visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<any>; visitarExpressaoFalhar(expressao: Falhar): Promise<any>; visitarExpressaoFimPara(declaracao: FimPara): Promise<any>; visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<any>; visitarExpressaoIsto(expressao: Isto): Promise<any>; visitarExpressaoLeia(expressao: Leia): Promise<any>; visitarExpressaoLiteral(expressao: Literal): Promise<any>; visitarExpressaoLogica(expressao: Logico): Promise<any>; visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>; visitarExpressaoSuper(expressao: Super): Promise<any>; visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra; visitarExpressaoTupla(expressao: Tupla): Promise<any>; visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>; visitarExpressaoUnaria(expressao: Unario): Promise<any>; visitarExpressaoVetor(expressao: Vetor): Promise<any>; visitarExpressaoMorsa(expressao: Morsa): Promise<any>; visitarExpressaoBote(expressao: Bote): Promise<any>; } //# sourceMappingURL=analisador-semantico-base.d.ts.map