UNPKG

@designliquido/delegua

Version:

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

91 lines 4.55 kB
import { AcessoIntervaloVariavel, ArgumentoReferenciaFuncao, Atribuir, Binario, Chamada, Construto, FormatacaoEscrita, Literal, ReferenciaFuncao, TipoDe, Variavel, TuplaN } from '../../construtos'; import { Const, Declaracao, Enquanto, Escolha, Escreva, Expressao, Falhar, FuncaoDeclaracao, Retorna, Var } from '../../declaracoes'; import { DiagnosticoAnalisadorSemantico } from '../../interfaces/erros'; import { RetornoAnalisadorSemantico } from '../../interfaces/retornos/retorno-analisador-semantico'; import { RetornoQuebra } from '../../quebras'; import { AnalisadorSemanticoBase } from '../analisador-semantico-base'; import { FuncaoHipoteticaInterface } from '../funcao-hipotetica-interface'; import { PilhaVariaveis } from '../pilha-variaveis'; /** * O Analisador Semântico de Pituguês. */ export declare class AnalisadorSemanticoPitugues extends AnalisadorSemanticoBase { pilhaVariaveis: PilhaVariaveis; funcoes: { [nomeFuncao: string]: FuncaoHipoteticaInterface; }; atual: number; diagnosticos: DiagnosticoAnalisadorSemantico[]; constructor(); /** * Marca as variáveis usadas em uma expressão. * Versão estendida da classe base com tratamento adicional de construtos Pituguês. */ protected marcarVariaveisUsadasEmExpressao(expressao: Construto): void; verificarTipoAtribuido(declaracao: Var | Const): void; visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>; private verificarTipoDe; visitarExpressaoFalhar(expressao: Falhar): Promise<any>; private verificarFalhar; visitarChamadaPorArgumentoReferenciaFuncao(argumentoReferenciaFuncao: ArgumentoReferenciaFuncao, argumentos: Construto[]): void; visitarChamadaPorReferenciaFuncao(referenciaFuncao: ReferenciaFuncao, argumentos: Construto[]): void; visitarChamadaPorVariavel(entidadeChamadaVariavel: Variavel, argumentos: Construto[]): Promise<void>; visitarExpressaoDeChamada(expressao: Chamada): Promise<void>; private resolverSimboloAlvoAtribuicao; visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<void>; visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>; visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>; visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<void>; private verificarCondicao; private verificarVariavelBinaria; private verificarVariavel; private verificarExpressao; private verificarBinario; private verificarOperadorBinario; /** * Verifica se os tipos dos operandos são compatíveis */ private verificarTiposOperandos; /** * Verifica divisão por zero recursivamente */ private verificarDivisaoPorZero; /** * Tenta avaliar uma expressão em tempo de compilação para detectar valores constantes * Retorna o valor se puder ser determinado, ou null caso contrário */ private avaliarExpressaoConstante; /** * Calcula o resultado de uma operação binária em tempo de compilação */ private calcularOperacaoBinaria; /** * Obtém o tipo de uma expressão (pode ser Literal, Variavel, ou Binario) */ obterTipoExpressao(expressao: Construto): string | null; /** * Infere o tipo de resultado de uma operação binária */ protected inferirTipoBinario(binario: Binario): string | null; private verificarExistenciaConstruto; private verificarLogico; private verificarChamada; private verificarLadoLogico; /** * Verifica interpolações de texto e marca variáveis como usadas */ protected verificarInterpolacaoTexto(texto: string, literal: Literal): void; visitarDeclaracaoEscreva(declaracao: Escreva): Promise<void>; visitarDeclaracaoConst(declaracao: Const): Promise<any>; visitarDeclaracaoVar(declaracao: Var): Promise<any>; visitarExpressaoFormatacaoEscrita(expressao: FormatacaoEscrita): Promise<any>; private verificarBinarioEmExpressao; visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>; visitarExpressaoDeVariavel(expressao: Variavel | Construto): Promise<any>; visitarExpressaoAcessoIntervaloVariavel(expressao: AcessoIntervaloVariavel): Promise<any>; visitarExpressaoTuplaN(expressao: TuplaN): Promise<any>; visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<any>; verificarVariaveisNaoUsadas(): void; analisar(declaracoes: Declaracao[]): Promise<RetornoAnalisadorSemantico>; } //# sourceMappingURL=analisador-semantico-pitugues.d.ts.map