/** * Created by eddyspreeuwers on 12/18/19. */ declare abstract class Parsable { name: string; abstract parse(node: Node): ASTNode; listOf(p: Parsable): ListOf; holds(p: Parsable): Child; constructor(name: string); } export declare class Terminal extends Parsable { private tagName; private node; constructor(name: string, tagName: string); parse(node: Node): ASTNode; } declare class NonTerminal extends Parsable { parsable: Parsable; constructor(name: string, p?: Parsable); parse(node: Node): ASTNode; } export declare class ListOf extends NonTerminal { parse(node: Node): ASTNode; } export declare class Child extends NonTerminal { parse(node: Node): ASTNode; } export declare class ASTNode { name: string; child: ASTNode; list: ASTNode[]; constructor(name: string); } export declare class Grammar { parse(node: Node): ASTNode; } export {};