class r {
  visitChildren(i) {
    for (const s in i) {
      const t = i[s];
      i.hasOwnProperty(s) && (t.type !== void 0 ? this.visit(t) : Array.isArray(t) && t.forEach((e) => {
        this.visit(e);
      }, this));
    }
  }
  visit(i) {
    switch (i.type) {
      case "Pattern":
        this.visitPattern(i);
        break;
      case "Flags":
        this.visitFlags(i);
        break;
      case "Disjunction":
        this.visitDisjunction(i);
        break;
      case "Alternative":
        this.visitAlternative(i);
        break;
      case "StartAnchor":
        this.visitStartAnchor(i);
        break;
      case "EndAnchor":
        this.visitEndAnchor(i);
        break;
      case "WordBoundary":
        this.visitWordBoundary(i);
        break;
      case "NonWordBoundary":
        this.visitNonWordBoundary(i);
        break;
      case "Lookahead":
        this.visitLookahead(i);
        break;
      case "NegativeLookahead":
        this.visitNegativeLookahead(i);
        break;
      case "Character":
        this.visitCharacter(i);
        break;
      case "Set":
        this.visitSet(i);
        break;
      case "Group":
        this.visitGroup(i);
        break;
      case "GroupBackReference":
        this.visitGroupBackReference(i);
        break;
      case "Quantifier":
        this.visitQuantifier(i);
        break;
    }
    this.visitChildren(i);
  }
  visitPattern(i) {
  }
  visitFlags(i) {
  }
  visitDisjunction(i) {
  }
  visitAlternative(i) {
  }
  // Assertion
  visitStartAnchor(i) {
  }
  visitEndAnchor(i) {
  }
  visitWordBoundary(i) {
  }
  visitNonWordBoundary(i) {
  }
  visitLookahead(i) {
  }
  visitNegativeLookahead(i) {
  }
  // atoms
  visitCharacter(i) {
  }
  visitSet(i) {
  }
  visitGroup(i) {
  }
  visitGroupBackReference(i) {
  }
  visitQuantifier(i) {
  }
}
export {
  r as BaseRegExpVisitor
};
