UNPKG

pegisland

Version:

General PEG-based parser supporting island grammars with lake symbols

71 lines 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PostorderExpressionTraverser = void 0; class PostorderExpressionTraverser { constructor(visitor) { this.visitor = visitor; } traverse(pe) { pe.accept(this); } visitNonterminal(pe) { this.visitSymbol(pe); } visitTerminal(pe) { this.visitSymbol(pe); } visitZeroOrMore(pe) { this.visitOperatorWithOneOperand(pe); } visitOneOrMore(pe) { this.visitOperatorWithOneOperand(pe); } visitOptional(pe) { this.visitOperatorWithOneOperand(pe); } visitAnd(pe) { this.visitOperatorWithOneOperand(pe); } visitNot(pe) { this.visitOperatorWithOneOperand(pe); } visitSequence(pe) { this.visitOperatorWithMultipleOperands(pe); } visitOrderedChoice(pe) { this.visitOperatorWithMultipleOperands(pe); } visitGrouping(pe) { this.visitOperatorWithOneOperand(pe); } visitRewriting(pe) { this.visitOperatorWithOneOperand(pe); } visitColon(pe) { this.visitOperatorWithTwoOperands(pe); } visitColonNot(pe) { this.visitOperatorWithTwoOperands(pe); } visitLake(pe) { this.visitOperatorWithOneOperand(pe); } visitSymbol(pe) { pe.accept(this.visitor); } visitOperatorWithOneOperand(pe) { pe.operand.accept(this); pe.accept(this.visitor); } visitOperatorWithTwoOperands(pe) { pe.lhs.accept(this); pe.rhs.accept(this); pe.accept(this.visitor); } visitOperatorWithMultipleOperands(pe) { pe.operands.forEach((operand) => operand.accept(this)); pe.accept(this.visitor); } } exports.PostorderExpressionTraverser = PostorderExpressionTraverser; //# sourceMappingURL=PostorderExpressionTraverser.js.map