mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
import {
|
|
Alternation,
|
|
Alternative,
|
|
NonTerminal,
|
|
Option,
|
|
Repetition,
|
|
RepetitionMandatory,
|
|
RepetitionMandatoryWithSeparator,
|
|
RepetitionWithSeparator,
|
|
Rule,
|
|
Terminal,
|
|
} from "./model.js";
|
|
import type { IProduction } from "@chevrotain/types";
|
|
|
|
export abstract class GAstVisitor {
|
|
public visit(node: IProduction): any {
|
|
const nodeAny: any = node;
|
|
switch (nodeAny.constructor) {
|
|
case NonTerminal:
|
|
return this.visitNonTerminal(nodeAny);
|
|
case Alternative:
|
|
return this.visitAlternative(nodeAny);
|
|
case Option:
|
|
return this.visitOption(nodeAny);
|
|
case RepetitionMandatory:
|
|
return this.visitRepetitionMandatory(nodeAny);
|
|
case RepetitionMandatoryWithSeparator:
|
|
return this.visitRepetitionMandatoryWithSeparator(nodeAny);
|
|
case RepetitionWithSeparator:
|
|
return this.visitRepetitionWithSeparator(nodeAny);
|
|
case Repetition:
|
|
return this.visitRepetition(nodeAny);
|
|
case Alternation:
|
|
return this.visitAlternation(nodeAny);
|
|
case Terminal:
|
|
return this.visitTerminal(nodeAny);
|
|
case Rule:
|
|
return this.visitRule(nodeAny);
|
|
/* c8 ignore next 2 */
|
|
default:
|
|
throw Error("non exhaustive match");
|
|
}
|
|
}
|
|
|
|
/* c8 ignore next */
|
|
public visitNonTerminal(node: NonTerminal): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitAlternative(node: Alternative): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitOption(node: Option): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitRepetition(node: Repetition): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitRepetitionMandatory(node: RepetitionMandatory): any {}
|
|
|
|
/* c8 ignore next 3 */
|
|
public visitRepetitionMandatoryWithSeparator(
|
|
node: RepetitionMandatoryWithSeparator,
|
|
): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitRepetitionWithSeparator(node: RepetitionWithSeparator): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitAlternation(node: Alternation): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitTerminal(node: Terminal): any {}
|
|
|
|
/* c8 ignore next */
|
|
public visitRule(node: Rule): any {}
|
|
}
|
|
|