@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
53 lines • 3.01 kB
TypeScript
import { Construto, FuncaoConstruto, Leia } from '../../construtos';
import { Bloco, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Fazer, FuncaoDeclaracao, Para, Retorna, Se, Var } from '../../declaracoes';
import { RetornoLexador, SimboloInterface, RetornoAvaliadorSintatico } from '../../interfaces';
import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base';
import { PilhaEscopos } from '../pilha-escopos';
export declare class AvaliadorSintaticoCalango extends AvaliadorSintaticoBase {
pilhaEscopos: PilhaEscopos;
/** Flag ativa quando se está a parsear a condição de um `se`, `enquanto` ou `faca/enquanto`.
* Permite que `=` seja tratado como igualdade (não atribuição) nesses contextos. */
private emContextoCondicao;
constructor();
protected atribuir(): Promise<Construto>;
protected blocoEscopo(): Promise<Declaracao[]>;
protected chamar(): Promise<Construto>;
protected declaracaoEnquanto(): Promise<Enquanto>;
protected declaracaoEscolha(): Promise<Escolha>;
protected declaracaoEscreva(): Promise<Escreva>;
/**
* Em Calango, este é o método `escreva()`.
* @returns {EscrevaMesmaLinha} Uma declaracao de escrita na mesma linha.
*/
protected declaracaoEscrevaMesmaLinha(): Promise<EscrevaMesmaLinha>;
private declaracaoVariaveis;
protected declaracaoInteiros(): Var[];
protected declaracaoReais(): Var[];
protected declaracaoLogicos(): Var[];
protected declaracaoCaracteres(): Var[];
protected declaracaoTextos(): Var[];
protected declaracaoFazer(): Promise<Fazer>;
protected declaracaoPara(): Promise<Para>;
/**
* Em Calango, `=` é usado tanto para atribuição (em comandos) quanto para igualdade (em condições).
* Este override só trata `IGUAL_ATRIBUICAO` como igualdade quando `emContextoCondicao` estiver ativo,
* evitando que `i = i + 1` dentro de blocos seja erroneamente interpretado como comparação.
*/
protected comparacaoIgualdade(): Promise<Construto>;
protected resolverBloco(simbolosParada: string[]): Promise<Bloco>;
protected declaracaoSe(): Promise<Se>;
protected expressaoLeia(): Promise<Leia>;
protected primario(): Promise<Construto>;
resolverDeclaracaoForaDeBloco(): Promise<Declaracao | Declaracao[] | Construto | Construto[] | any>;
protected corpoDaFuncao(_tipo: string): Promise<FuncaoConstruto>;
/** Mapeia um tipo de token Calango para a string de tipo da Delégua. */
private mapearTipo;
private analisarParametrosCalango;
protected declaracaoFuncao(): Promise<FuncaoDeclaracao>;
protected declaracaoProcedimento(): Promise<FuncaoDeclaracao>;
protected declaracaoRetorna(): Promise<Retorna>;
private validarSegmentoAlgoritmo;
private validarSegmentoPrincipal;
analisar(retornoLexador: RetornoLexador<SimboloInterface>, hashArquivo: number): Promise<RetornoAvaliadorSintatico<Declaracao>>;
}
//# sourceMappingURL=avaliador-sintatico-calango.d.ts.map