import { ParsedNode } from "./ParsedNode.js";
import { Autocompleter, GetAutocompletionFunction } from "./Autocompleter.js";
import { Autocompletion } from "./core/Autocompletion.js";
import { Sym } from "./core/Symbol.js";
import { EBNF } from "./ebnf/EBNF.js";
import { ParseStartListener } from "./ebnf/EBNFParser.js";
import { NamedRule } from "./ebnf/NamedRule.js";
import { Rule } from "./ebnf/Rule.js";
import { Evaluator, EvaluateFunction } from "./Evaluator.js";
export declare class Parser {
    private readonly grammar;
    private readonly LINEBREAK;
    readonly QUANTIFIER: Rule;
    readonly IDENTIFIER: Rule;
    readonly VARIABLE_NAME: Rule;
    readonly ENTRY_NAME: Rule;
    readonly LIST: Rule;
    readonly TUPLE: Rule;
    readonly CHARACTER_CLASS: Rule;
    readonly TYPE: Rule;
    readonly VARIABLE: Rule;
    readonly NO_VARIABLE: Rule;
    readonly EXPRESSION: Rule;
    private readonly LINEBREAK_STAR;
    private readonly targetGrammar;
    private readonly symbol2Autocompletion;
    private compiled;
    constructor();
    getGrammar(): EBNF;
    getTargetGrammar(): EBNF;
    defineSentence(pattern: string, evaluator: Evaluator | EvaluateFunction | undefined): NamedRule;
    defineSentence(pattern: string, evaluator: Evaluator | EvaluateFunction | undefined, autocompleter: Autocompleter | GetAutocompletionFunction): NamedRule;
    defineSentence(pattern: string, evaluator: Evaluator | EvaluateFunction | undefined, completeEntireSequence: boolean): NamedRule;
    defineType(type: string, pattern: string, evaluator: Evaluator | EvaluateFunction | undefined): NamedRule;
    defineType(type: string, pattern: string, evaluator: Evaluator | EvaluateFunction | undefined, autocompleter: Autocompleter | GetAutocompletionFunction | undefined): NamedRule;
    defineType(type: string, pattern: string, evaluator: Evaluator | EvaluateFunction | undefined, completeEntireSequence: boolean): NamedRule;
    compile(symbol?: Sym): void;
    undefineType(type: string): void;
    parse(text: string, autocompletions?: Autocompletion[]): ParsedNode;
    private quantifier;
    /**
     * [A-Za-z_] ([A-Za-z0-9-_]* [A-Za-z0-9_])?
     *
     * Start:  letter or underscore
     * Middle: letter or underscore or dash or digit
     * End:    letter or underscore or digit
     *
     */
    private identifier;
    /**
     * (was: ExtendedName)
     *
     * [^:{}\n]+
     *
     * Everything but ':', '{', '}'
     */
    private variableName;
    private entryName;
    private list;
    private tuple;
    private characterClass;
    private type;
    private variable;
    private noVariable;
    private expression;
    private program;
    private readonly parseStartListeners;
    addParseStartListener(listener: ParseStartListener): void;
    removeParseStartListener(listener: ParseStartListener): void;
    private fireParsingStarted;
}
//# sourceMappingURL=Parser.d.ts.map