import { ErroAvaliadorSintatico } from ".";
import { BlocoDeclaracao, Declaracao } from "../declaracoes";
import { Simbolo } from "../lexador";
import { Modificador } from "../modificadores";
import { Valor, ValorNumerico } from "../valores";
import { Pseudoclasse } from "../pseudoclasses/pseudoclasse";
import { Seletor } from "../seletores";
import { AvaliadorSintaticoInterface, ImportadorInterface, SimboloInterface } from "../interfaces";
import { DeclaracaoVariavel } from "../declaracoes/declaracao-variavel";
import { Metodo } from "../valores/metodos/foles/metodo";
/**
 * Implementação do avaliador sintático.
 */
export declare class AvaliadorSintatico implements AvaliadorSintaticoInterface {
    simbolos: Simbolo[];
    erros: ErroAvaliadorSintatico[];
    importador: ImportadorInterface;
    atual: number;
    referenciaDeclaracoes: Declaracao[];
    constructor(importador: ImportadorInterface);
    erro(simbolo: Simbolo, mensagemDeErro: string): ErroAvaliadorSintatico;
    protected sincronizar(): void;
    estaNoFinal(): boolean;
    avancarEDevolverAnterior(): Simbolo;
    verificarTipoSimboloAtual(tipo: string): boolean;
    consumir(tipo: string, mensagemDeErro: string): Simbolo;
    resolverMetodo(lexema: string): Metodo;
    private validacaoUrl;
    private validacaoUrlSimbolos;
    private validacaoUrlTexto;
    protected valorNumerico(nomeModificador: string, valorModificador: SimboloInterface, ponto: boolean): ValorNumerico;
    protected valoresModificador(nomeModificador: string): Array<Valor>;
    private tratarAtribuicaoAbreviada;
    private tratarValorNumerico;
    protected resolverPseudoclasse(): Pseudoclasse;
    protected seletorPorEspacoReservado(): Seletor;
    protected seletorPorEstrutura(): Seletor;
    protected seletorPorId(): Seletor;
    protected seletorPorNomeDeClasse(): Seletor;
    protected declaracaoVariavel(): DeclaracaoVariavel;
    /**
     * Resolve os seletores.
     * @param espacoReservado
     */
    protected resolverSeletores(espacoReservado?: string): Seletor[];
    private resolverModificador;
    resolverModificadoresEDeclaracoesAninhadas(): {
        modificadores: Modificador[];
        declaracoesAninhadas: BlocoDeclaracao[];
    };
    declaracao(): Declaracao | null;
    analisar(simbolos: Simbolo[]): Declaracao[];
}
