1 package org.apidesign.visitor;
3 public final class Language {
6 public interface Expression {
7 public abstract void visit(Visitor v);
9 public interface Plus extends Expression {
10 public Expression getFirst();
11 public Expression getSecond();
13 public interface Number extends Expression {
14 public int getValue();
17 // BEGIN: visitor.clientprovider.self.v1
18 public static abstract class Visitor {
21 public static Visitor create(Version10 v) {
25 public interface Version10 {
26 public boolean visitUnknown(Expression e, Visitor self);
27 public void visitPlus(Plus s, Visitor self);
28 public void visitNumber(Number n, Visitor self);
31 public abstract void dispatchPlus(Plus p);
32 public abstract void dispatchNumber(Number n);
34 // END: visitor.clientprovider.self.v1
36 static Visitor create10(final Visitor.Version10 v) {
37 return new Visitor() {
39 public void dispatchPlus(Plus p) {
44 public void dispatchNumber(Number n) {
45 v.visitNumber(n, this);