@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
107 lines • 7.8 kB
TypeScript
import { AcessoElementoMatriz, AcessoIndiceVariavel, AcessoIntervaloVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Agrupamento, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, AtribuicaoPorIndicesMatriz, Atribuir, Binario, Chamada, ComentarioComoConstruto, Constante, DefinirValor, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, FuncaoConstruto, Isto, Leia, Literal, Logico, Morsa, ReferenciaFuncao, Separador, Super, TipoDe, Tupla, TuplaN, Unario, Variavel, Vetor } from '../construtos';
import { Bloco, CabecalhoPrograma, Classe, Comentario, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Falhar, Fazer, FuncaoDeclaracao, InicioAlgoritmo, Para, ParaCada, Retorna, Se, Sustar, TendoComo, Tente, TextoDocumentacao, Var, VarMultiplo } from '../declaracoes';
import { CaminhoEscolha, TradutorInterface, VisitanteComumInterface } from '../interfaces';
import { ArestaFluxograma, SubgrafoClasse, SubgrafoFuncao, VerticeFluxograma } from './mermaid';
/**
* [MermaidJs](https://mermaid.js.org/) é uma especificação que nos permite
* criar fluxogramas através de uma notação por texto.
*
* Este tradutor converte estruturas da avaliação sintática em um fluxograma
* compatível com o MermaidJs.
*
* Diferentemente de outros tradutores, este não trabalha diretamente com `string`s.
* Construtos sim devolvem `string`s, mas declarações devolvem um vetor de
* `VerticeFluxograma`.
* @see VerticeFluxograma
*/
export declare class TradutorMermaidJs implements TradutorInterface<Declaracao>, VisitanteComumInterface {
anteriores: ArestaFluxograma[];
vertices: VerticeFluxograma[];
ultimaDicaVertice: string | undefined;
declaracoesFuncoes: {
[nome: string]: SubgrafoFuncao;
};
declaracoesClasses: {
[nome: string]: SubgrafoClasse;
};
indentacaoAtual: number;
visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any> | void;
visitarDeclaracaoClasse(declaracao: Classe): Promise<VerticeFluxograma[]>;
visitarDeclaracaoComentario(declaracao: Comentario): Promise<string>;
visitarDeclaracaoConst(declaracao: Const): Promise<VerticeFluxograma[]>;
visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any> | void;
visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<VerticeFluxograma[]>;
visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<VerticeFluxograma[]>;
visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<VerticeFluxograma[]>;
visitarDeclaracaoEscolha(declaracao: Escolha): Promise<VerticeFluxograma[]>;
visitarDeclaracaoEscreva(declaracao: Escreva): Promise<VerticeFluxograma[]>;
visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<any> | void;
visitarDeclaracaoFazer(declaracao: Fazer): Promise<VerticeFluxograma[]>;
visitarDeclaracaoInicioAlgoritmo(declaracao: InicioAlgoritmo): Promise<any> | void;
visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<VerticeFluxograma[]>;
visitarDeclaracaoPara(declaracao: Para): Promise<VerticeFluxograma[]>;
visitarDeclaracaoSe(declaracao: Se): Promise<VerticeFluxograma[]>;
visitarDeclaracaoTendoComo(declaracao: TendoComo): Promise<VerticeFluxograma[]>;
visitarDeclaracaoTente(declaracao: Tente): Promise<VerticeFluxograma[]>;
visitarDeclaracaoTextoDocumentacao(declaracao: TextoDocumentacao): Promise<any> | void;
visitarDeclaracaoVar(declaracao: Var): Promise<VerticeFluxograma[]>;
visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<any> | void;
visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<string>;
visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<string>;
visitarExpressaoAcessoIntervaloVariavel(expressao: AcessoIntervaloVariavel): Promise<any> | void;
visitarExpressaoAcessoElementoMatriz(expressao: AcessoElementoMatriz): Promise<any> | void;
visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<string>;
visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<string>;
visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<string>;
visitarExpressaoAgrupamento(expressao: Agrupamento): Promise<string>;
visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): Promise<string>;
visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<string>;
visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: AtribuicaoPorIndicesMatriz): Promise<any> | void;
visitarExpressaoBinaria(expressao: Binario): Promise<string>;
visitarExpressaoBloco(bloco: Bloco): Promise<VerticeFluxograma[]>;
visitarExpressaoComentario(expressao: ComentarioComoConstruto): Promise<string>;
visitarExpressaoContinua(declaracao?: Continua): Promise<VerticeFluxograma[]>;
visitarExpressaoDeChamada(expressao: Chamada): Promise<string>;
visitarExpressaoDefinirValor(expressao: DefinirValor): Promise<string>;
visitarExpressaoFuncaoConstruto(expressao: FuncaoConstruto): Promise<string>;
visitarExpressaoDeVariavel(expressao: Variavel | Constante): Promise<string>;
visitarExpressaoDicionario(expressao: Dicionario): Promise<string>;
visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<string>;
visitarExpressaoFalhar(expressao: Falhar): Promise<VerticeFluxograma[]>;
visitarExpressaoFimPara(declaracao: FimPara): Promise<any> | void;
visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<string>;
visitarExpressaoIsto(expressao: Isto): Promise<string>;
visitarExpressaoLeia(expressao: Leia): Promise<string>;
visitarExpressaoLiteral(expressao: Literal): Promise<string>;
visitarExpressaoLogica(expressao: Logico): Promise<string>;
visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): Promise<string>;
visitarExpressaoRetornar(expressao: Retorna): Promise<VerticeFluxograma[]>;
visitarExpressaoSeparador(expressao: Separador): Promise<string>;
visitarExpressaoSuper(expressao: Super): Promise<string>;
visitarExpressaoSustar(declaracao?: Sustar): Promise<VerticeFluxograma[]>;
visitarExpressaoTupla(expressao: Tupla): Promise<string>;
visitarExpressaoTuplaN(expressao: TuplaN): Promise<string>;
visitarExpressaoTipoDe(expressao: TipoDe): Promise<any> | void;
visitarExpressaoUnaria(expressao: Unario): Promise<string>;
visitarExpressaoVetor(expressao: Vetor): Promise<string>;
visitarExpressaoMorsa(expressao: Morsa): Promise<any>;
/**
* Traduz uma declaração de Expressao que contém uma chamada de função,
* criando os vértices necessários para conectar ao subgrafo da função.
*/
traduzirChamadaFuncao(declaracaoExpressao: Expressao, chamada: Chamada): Promise<VerticeFluxograma[]>;
protected logicaComumConexaoArestas(aresta: ArestaFluxograma): VerticeFluxograma[];
protected logicaComumCaminhoEscolha(declaracaoEscolha: Escolha, caminhoEscolha: CaminhoEscolha, linha: number, textoIdentificadorOuLiteral: string, caminhoPadrao: boolean): Promise<{
caminho: ArestaFluxograma;
declaracoesCaminho: VerticeFluxograma[];
}>;
protected logicaComumTraducaoVarEConst(declaracaoVarOuConst: Var | Const, textoInicial: string): Promise<string>;
/**
* Ponto de entrada para a tradução de declarações em um fluxograma
* no formato MermaidJs.
* @param {Declaracao[]} declaracoes As declarações a serem traduzidas.
* @returns {string} Texto no formato MermaidJs representando o fluxograma.
*/
traduzir(declaracoes: Declaracao[]): Promise<string>;
}
//# sourceMappingURL=tradutor-mermaidjs.d.ts.map