+ @Override
+ public void visit(ERange expression) {
+ expression.from.accept(this);
+ expression.to.accept(this);
+ }
+
+ @Override
+ public void visit(ERecord expression) {
+ for(FieldAssignment assignment : expression.fields)
+ assignment.value.accept(this);
+
+ }
+
+ @Override
+ public void visit(EStringLiteral expression) {
+ for(Expression exp : expression.expressions)
+ exp.accept(this);
+ }
+
+ @Override
+ public void visit(BindStatement statement) {
+ statement.pattern.accept(this);
+ statement.value.accept(this);
+ }
+
+ @Override
+ public void visit(GuardStatement statement) {
+ statement.value.accept(this);
+ }
+
+ @Override
+ public void visit(LetStatement statement) {
+ statement.value.accept(this);
+ }
+
+ @Override
+ public void visit(RuleStatement statement) {
+ statement.head.accept(this);
+ statement.body.accept(this);
+ }
+
+ @Override
+ public void visit(IncludeStatement statement) {
+ statement.value.accept(this);
+ }
+
+ @Override
+ public void visit(CHRStatement statement) {
+ statement.body.accept(this);
+ statement.head.accept(this);
+ }
+
+ @Override
+ public void visit(CHRAstAtom query) {
+ query.expression.accept(this);
+ }
+
+ @Override
+ public void visit(CHRAstBinds query) {
+ query.left.accept(this);
+ query.right.accept(this);
+ }
+
+ @Override
+ public void visit(CHRAstConjunction query) {
+ for(CHRAstQuery conjunct : query.conjuncts)
+ conjunct.accept(this);
+ }
+
+ @Override
+ public void visit(CHRAstEquals query) {
+ query.left.accept(this);
+ query.right.accept(this);
+ }
+
+ @Override
+ public void visit(CHRAstNegation query) {
+ query.subquery.accept(this);
+ }