import { Construto, FuncaoConstruto, Leia } from '@designliquido/delegua/construtos'; import { Escreva, Declaracao, Se, Enquanto, Para, Escolha, Fazer, FuncaoDeclaracao, Expressao, Var, EscrevaMesmaLinha, Retorna, Const, Comentario, Sustar } from '@designliquido/delegua/declaracoes'; import { RetornoLexador, RetornoAvaliadorSintatico } from '@designliquido/delegua/interfaces/retornos'; import { AvaliadorSintaticoBase } from '@designliquido/delegua/avaliador-sintatico'; import { TipoInferencia } from '@designliquido/delegua/inferenciador'; import { ParametroInterface, SimboloInterface } from '@designliquido/delegua/interfaces'; import { Limpa } from '../construtos'; /** * O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível. * Essas estruturas de alto nível são as partes que executam lógica de programação de fato. * Há dois grupos de estruturas de alto nível: Construtos e Declarações. */ export declare class AvaliadorSintaticoPortugolStudio extends AvaliadorSintaticoBase { private declaracoes; private pilhaEscopos; constructor(); verificarTipoSimboloAtual(tipo: string): boolean; avancarEDevolverAnterior(): SimboloInterface; estaNoFinal(): boolean; declaracaoEscreva(): Promise; private validarEscopoProgramaEAvaliacaoSintatica; comparacaoIgualdade(): Promise; primario(): Promise; chamar(): Promise; /** * Se símbolo de operação é `+`, `-`, `+=` ou `-=`, monta objeto `Binario` para * ser avaliado pelo Interpretador. * @returns Um Construto, normalmente um `Binario`, ou `Unario` se houver alguma operação unária para ser avaliada. */ adicaoOuSubtracao(): Promise; atribuir(): Promise; declaracaoEscrevaMesmaLinha(): Promise; /** * Declaração para inclusão de uma biblioteca. * Exemplo: `inclua biblioteca Matematica --> mat` seria o mesmo que * `const mat = importar('Matematica')` em Delégua, ou * `inclua biblioteca Matematica` (sem o nome da variável) seria o * mesmo que `const Matematica = importar('Matematica')` * @returns Uma declaração do tipo `Importar`. */ declaracaoInclua(): Const; blocoEscopo(): Promise; declaracaoSe(): Promise; declaracaoEnquanto(): Promise; declaracaoEscolha(): Promise; /** * No Portugol Studio, a palavra reservada é `faca`, sem acento. */ declaracaoFazer(): Promise; simboloAtual(): SimboloInterface; verificarDefinicaoTipo(lexema: string): TipoInferencia; protected logicaComumParametros(): Promise; corpoDaFuncao(tipo: string): Promise; /** * Declaração de apenas uma variável. * Neste caso, o símbolo que determina o tipo da variável já foi consumido, * e o retorno conta com apenas uma variável retornada. */ declaracaoDeVariavel(): Var; declaracaoCadeiasCaracteres(): Promise; declaracaoCaracteres(): Promise; declaracaoComentarioMultilinha(): Comentario; declaracaoComentarioUmaLinha(): Comentario; declaracaoExpressao(simboloAnterior?: SimboloInterface): Promise; private obterTamanhoEsperadoDimensao; /** * Método recursivo que lê os valores de inicialização de uma matriz de N dimensões. * @param {Construto[]} dimensoes O número de dimensões faltantes. * Cada passo recursivo usa o primeiro valor e chama a função passando esse vetor, mas sem * o primeiro valor. */ protected lerValoresAtribuicaoMatriz(dimensoes: Construto[], indiceDimensaoAtual?: number): Promise; protected declaracaoVetorOuMatriz(simboloTipo: SimboloInterface, identificador: SimboloInterface, dimensoes: Construto[], tipoDados?: string): Promise; protected declaracaoVariavelSemDimensoes(simboloInteiro: SimboloInterface, identificador: SimboloInterface, tipoDados?: string): Promise; protected logicaComumDimensoesMatrizes(): Promise; declaracaoInteiros(): Promise; /** * Análise de uma declaração `leia()`. No VisuAlg, `leia()` aceita 1..N argumentos. * @returns Uma declaração `Leia`. */ expressaoLeia(): Promise; declaracaoLogicos(): Var[]; declaracaoRetorne(): Promise; declaracaoPare(): Sustar; declaracaoPara(): Promise; declaracaoReais(): Promise; expressao(): Promise; expressaoLimpa(): Limpa; funcao(tipo: string): Promise; declaracaoDeConstantes(): Promise; resolverDeclaracaoForaDeBloco(): Promise; /** * Usado quando há erros na avaliação sintática. * Garante que o avaliador sintático não entre em _loop_ infinito. * @returns Sempre retorna `void`. */ protected sincronizar(): void; analisar(retornoLexador: RetornoLexador, hashArquivo: number): Promise>; } //# sourceMappingURL=avaliador-sintatico-portugol-studio.d.ts.map