import { Const, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Para, Se, Retorna, Var } from '@designliquido/delegua/declaracoes'; import { AnalisadorSemanticoBase } from '@designliquido/delegua/analisador-semantico/analisador-semantico-base'; import { SimboloInterface } from '@designliquido/delegua/interfaces'; import { DiagnosticoAnalisadorSemantico, DiagnosticoSeveridade } from '@designliquido/delegua/interfaces/erros'; import { FuncaoHipoteticaInterface } from '@designliquido/delegua/interfaces/funcao-hipotetica-interface'; import { RetornoAnalisadorSemantico } from '@designliquido/delegua/interfaces/retornos/retorno-analisador-semantico'; import { VariavelHipoteticaInterface } from '@designliquido/delegua/interfaces/variavel-hipotetica-interface'; import { AtribuicaoPorIndice, Atribuir, Chamada, Leia, Literal, Variavel } from '@designliquido/delegua/construtos'; import { PilhaVariaveis } from './pilha-variaveis'; export declare class AnalisadorSemanticoPortugolStudio extends AnalisadorSemanticoBase { pilhaVariaveis: PilhaVariaveis; variaveis: { [nomeVariavel: string]: VariavelHipoteticaInterface; }; funcoes: { [nomeFuncao: string]: FuncaoHipoteticaInterface; }; atual: number; diagnosticos: DiagnosticoAnalisadorSemantico[]; corpoMetodoPrincipal: Declaracao[]; /** Tipo de retorno declarado da função sendo analisada no momento. Nulo fora de funções. */ tipoRetornoFuncaoAtual: string | null; constructor(); /** * Verifica o tipo atribuído a uma declaração */ private verificarTipoAtribuido; adicionarDiagnostico(simbolo: SimboloInterface, mensagem: string, severidade?: DiagnosticoSeveridade): void; /** * Verifica interpolações de texto e marca variáveis como usadas */ protected verificarInterpolacaoTexto(texto: string, literal: Literal): void; /** * Verifica a existência de uma variável e marca como usada */ private verificarVariavel; /** * Verifica condições em estruturas de controle */ private verificarCondicao; /** * Verifica variável em contexto binário/condicional */ private verificarVariavelBinaria; /** * Verifica expressões binárias */ private verificarBinario; /** * Verifica operadores binários */ 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 */ private avaliarExpressaoConstante; /** * Calcula o resultado de uma operação binária em tempo de compilação */ private calcularOperacaoBinaria; /** * Verifica a existência de um construto */ private verificarExistenciaConstruto; /** * Verifica expressões lógicas */ private verificarLogico; /** * Verifica chamadas de função em condições */ private verificarChamada; /** * Verifica o lado de uma expressão lógica */ private verificarLadoLogico; /** * Executa regras pedagógicas opcionais (não bloqueantes). */ private executarRegrasPedagogicas; visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise; visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise; visitarDeclaracaoVar(declaracao: Var): Promise; visitarExpressaoDeVariavel(expressao: Variavel): Promise; private validarCompatibilidadeTipos; visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise; visitarExpressaoDeChamada(expressao: Chamada): Promise; visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise; private desenveloparExpressaoLeia; visitarExpressaoLeia(expressao: Leia): Promise; visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise; visitarDeclaracaoConst(declaracao: Const): Promise; /** * Visita declaração de escreva com validações adicionais */ visitarDeclaracaoEscreva(declaracao: Escreva): Promise; /** * Visita declaração de enquanto com validação de condição */ visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise; private visitarCorpoCondicionalOuLoop; visitarDeclaracaoSe(declaracao: Se): Promise; visitarDeclaracaoFazer(declaracao: Fazer): Promise; visitarDeclaracaoPara(declaracao: Para): Promise; /** * Visita declaração de escolha com validação de tipos e recursão nos corpos dos casos */ visitarDeclaracaoEscolha(declaracao: Escolha): Promise; /** * Visita declaração de retorna com validação básica do valor retornado */ visitarExpressaoRetornar(declaracao: Retorna): Promise; analisar(declaracoes: Declaracao[]): Promise; } //# sourceMappingURL=analisador-semantico-portugol-studio.d.ts.map