@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
63 lines • 3.31 kB
TypeScript
import { ArgumentoReferenciaFuncao, Atribuir, Chamada, Construto, FuncaoConstruto, ReferenciaFuncao, TipoDe, Variavel } from '../construtos';
import { Const, Declaracao, Enquanto, Escolha, Escreva, Expressao, Falhar, FuncaoDeclaracao, Retorna, Var } from '../declaracoes';
import { ParametroInterface, SimboloInterface } from '../interfaces';
import { DiagnosticoAnalisadorSemantico } from '../interfaces/erros';
import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
import { RetornoQuebra } from '../quebras';
import { AnalisadorSemanticoBase } from './analisador-semantico-base';
import { PilhaVariaveis } from './pilha-variaveis';
interface VariavelHipoteticaInterface {
tipo: string;
subtipo?: 'texto' | 'número' | 'inteiro' | 'longo' | 'lógico';
imutavel: boolean;
valor?: any;
}
interface FuncaoHipoteticaInterface {
valor: FuncaoConstruto;
}
export declare class AnalisadorSemantico extends AnalisadorSemanticoBase {
pilhaVariaveis: PilhaVariaveis;
variaveis: {
[nomeVariavel: string]: VariavelHipoteticaInterface;
};
funcoes: {
[nomeFuncao: string]: FuncaoHipoteticaInterface;
};
atual: number;
diagnosticos: DiagnosticoAnalisadorSemantico[];
constructor();
erro(simbolo: SimboloInterface, mensagem: string): void;
aviso(simbolo: SimboloInterface, mensagem: string): void;
verificarTipoAtribuido(declaracao: Var | Const): void;
visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
private verificarTipoDe;
visitarExpressaoFalhar(expressao: Falhar): Promise<any>;
private verificarFalhar;
comparacaoArgumentosContraParametrosFuncao(simboloFuncao: SimboloInterface, parametros: ParametroInterface[], argumentos: Construto[]): void;
visitarChamadaPorArgumentoReferenciaFuncao(argumentoReferenciaFuncao: ArgumentoReferenciaFuncao, argumentos: Construto[]): void;
visitarChamadaPorReferenciaFuncao(referenciaFuncao: ReferenciaFuncao, argumentos: Construto[]): void;
visitarChamadaPorVariavel(entidadeChamadaVariavel: Variavel, argumentos: Construto[]): Promise<void>;
visitarExpressaoDeChamada(expressao: Chamada): Promise<void>;
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 verificarBinario;
private verificarOperadorBinario;
private verificarLadoBinario;
private verificarLogico;
private verificarChamada;
private verificarLadoLogico;
visitarDeclaracaoEscreva(declaracao: Escreva): Promise<void>;
visitarDeclaracaoConst(declaracao: Const): Promise<any>;
virificarTipoDeclaracaoConst(declaracao: Const): Promise<any>;
visitarDeclaracaoVar(declaracao: Var): Promise<any>;
visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<void>;
analisar(declaracoes: Declaracao[]): RetornoAnalisadorSemantico;
}
export {};
//# sourceMappingURL=analisador-semantico.d.ts.map