import { ISourcePosition } from './ISourcePosition';
import { Token } from "./Token";
export declare class Context {
}
export interface FragmentCtr {
    new (position: ISourcePosition): Fragment;
}
export declare abstract class Fragment implements ISourcePosition {
    readonly line: number;
    readonly ch: number;
    readonly file: string;
    constructor(position: ISourcePosition);
    abstract render(ctx: Context): string;
}
export interface Rule {
    name: string;
    initContext?(ctx: Context): void;
    analyze(ctx: Context, t: Token): Fragment | Fragment[];
}
export interface RuleBook {
    [key: string]: Rule;
    _text: Rule;
    _default: Rule;
}
