author | Jaroslav Tulach <jaroslav.tulach@apidesign.org> |
Thu, 30 Oct 2014 21:30:10 +0100 | |
changeset 409 | 40cabcdcd2be |
parent 177 | 67d6dceb1002 |
permissions | -rw-r--r-- |
jtulach@176 | 1 |
package org.apidesign.visitor; |
jtulach@176 | 2 |
|
jtulach@176 | 3 |
public final class Language { |
jtulach@176 | 4 |
private Language() { } |
jtulach@176 | 5 |
|
jtulach@176 | 6 |
// BEGIN: visitor.clientprovider.v1 |
jtulach@176 | 7 |
public interface Expression { |
jtulach@176 | 8 |
public abstract void visit(Visitor v); |
jtulach@176 | 9 |
} |
jtulach@176 | 10 |
public interface Plus extends Expression { |
jtulach@176 | 11 |
public Expression getFirst(); |
jtulach@176 | 12 |
public Expression getSecond(); |
jtulach@176 | 13 |
} |
jtulach@176 | 14 |
public interface Number extends Expression { |
jtulach@176 | 15 |
public int getValue(); |
jtulach@176 | 16 |
} |
jtulach@176 | 17 |
|
jtulach@176 | 18 |
public static abstract class Visitor { |
jtulach@176 | 19 |
Visitor() {} |
jtulach@176 | 20 |
|
jtulach@266 | 21 |
public static Visitor create(Version10 v) { |
jtulach@266 | 22 |
return create10(v); |
jtulach@176 | 23 |
} |
jtulach@176 | 24 |
|
jtulach@266 | 25 |
public interface Version10 { |
jtulach@176 | 26 |
public boolean visitUnknown(Expression e); |
jtulach@176 | 27 |
public void visitPlus(Plus s); |
jtulach@176 | 28 |
public void visitNumber(Number n); |
jtulach@176 | 29 |
} |
jtulach@176 | 30 |
|
jtulach@176 | 31 |
public abstract void dispatchPlus(Plus p); |
jtulach@176 | 32 |
public abstract void dispatchNumber(Number n); |
jtulach@176 | 33 |
} |
jtulach@176 | 34 |
// END: visitor.clientprovider.v1 |
jtulach@176 | 35 |
|
jtulach@266 | 36 |
static Visitor create10(final Visitor.Version10 v) { |
jtulach@176 | 37 |
return new Visitor() { |
jtulach@176 | 38 |
@Override |
jtulach@176 | 39 |
public void dispatchPlus(Plus p) { |
jtulach@176 | 40 |
v.visitPlus(p); |
jtulach@176 | 41 |
} |
jtulach@176 | 42 |
|
jtulach@176 | 43 |
@Override |
jtulach@176 | 44 |
public void dispatchNumber(Number n) { |
jtulach@176 | 45 |
v.visitNumber(n); |
jtulach@176 | 46 |
} |
jtulach@176 | 47 |
}; |
jtulach@176 | 48 |
} |
jtulach@176 | 49 |
} |