module gamma.grammar.hyper.Operator; import gamma.grammar.hyper.HyperVisitor; import gamma.grammar.hyper.Params; import gamma.grammar.Node; import gamma.grammar.Rule; import gamma.grammar.Visitor; import gamma.util.Position; public abstract class Operator : Node { private Params params_; private Rule rule_; protected this(Params params, Rule rule, Position position) { super(position); this.params_ = params; this.rule_ = rule; } public override void accept(Visitor visitor) { accept(cast(HyperVisitor) visitor); } public abstract void accept(HyperVisitor visitor); public Params params() { return this.params_; } public Rule rule() { return this.rule_; } }