pegisland
Version:
General PEG-based parser supporting island grammars with lake symbols
59 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpressionCollector = void 0;
const PostorderExpressionTraverser_1 = require("./PostorderExpressionTraverser");
class ExpressionCollector {
constructor() {
this.expressions = [];
}
collect(rules) {
this.expressions = [];
const traverser = new PostorderExpressionTraverser_1.PostorderExpressionTraverser(this);
rules.forEach((rule) => traverser.traverse(rule.rhs));
return this.expressions;
}
visitNonterminal(pe) {
this.expressions.push(pe);
}
visitTerminal(pe) {
this.expressions.push(pe);
}
visitZeroOrMore(pe) {
this.expressions.push(pe);
}
visitOneOrMore(pe) {
this.expressions.push(pe);
}
visitOptional(pe) {
this.expressions.push(pe);
}
visitAnd(pe) {
this.expressions.push(pe);
}
visitNot(pe) {
this.expressions.push(pe);
}
visitSequence(pe) {
this.expressions.push(pe);
}
visitOrderedChoice(pe) {
this.expressions.push(pe);
}
visitGrouping(pe) {
this.expressions.push(pe);
}
visitRewriting(pe) {
this.expressions.push(pe);
}
visitColon(pe) {
this.expressions.push(pe);
}
visitColonNot(pe) {
this.expressions.push(pe);
}
visitLake(pe) {
this.expressions.push(pe);
}
}
exports.ExpressionCollector = ExpressionCollector;
//# sourceMappingURL=ExpressionCollector.js.map