import { And, Colon, ColonNot, Grouping, IParsingExpression, Lake, Nonterminal, Not, OneOrMore, Optional, OrderedChoice, Rewriting, Sequence, Terminal, ZeroOrMore } from '../ParsingExpression';
import { IParsingExpressionVisitor } from '../IParsingExpressionVisitor';
import { Rule } from '../Rule';
export declare const EPSILON: Sequence;
export declare abstract class SetCalculator implements IParsingExpressionVisitor {
    readonly peSet: Map<IParsingExpression, Set<IParsingExpression>>;
    private readonly expressions;
    constructor(rules: Map<string, Rule>, isPostorder: boolean);
    calculate(): Map<IParsingExpression, Set<IParsingExpression>>;
    protected get(pe: IParsingExpression): Set<IParsingExpression>;
    protected set(pe: IParsingExpression, set: Set<IParsingExpression>): void;
    protected propagate(src: IParsingExpression, dst: IParsingExpression): void;
    abstract visitNonterminal(pe: Nonterminal): void;
    abstract visitTerminal(pe: Terminal): void;
    abstract visitZeroOrMore(pe: ZeroOrMore): void;
    abstract visitOneOrMore(pe: OneOrMore): void;
    abstract visitOptional(pe: Optional): void;
    abstract visitAnd(pe: And): void;
    abstract visitNot(pe: Not): void;
    abstract visitSequence(pe: Sequence): void;
    abstract visitOrderedChoice(pe: OrderedChoice): void;
    abstract visitGrouping(pe: Grouping): void;
    abstract visitRewriting(pe: Rewriting): void;
    abstract visitColon(pe: Colon): void;
    abstract visitColonNot(pe: ColonNot): void;
    abstract visitLake(pe: Lake): void;
}
//# sourceMappingURL=SetCalculator.d.ts.map