1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/visitor/11-cleanversion/src-api1.0/org/apidesign/visitor/Language.java Sat Jun 14 09:58:52 2008 +0200
1.3 @@ -0,0 +1,36 @@
1.4 +package org.apidesign.visitor;
1.5 +
1.6 +public final class Language {
1.7 + private Language() { }
1.8 +
1.9 + public static abstract class Expression {
1.10 + Expression() {}
1.11 + public abstract void visit(Visitor v);
1.12 + }
1.13 + public static final class Plus extends Expression {
1.14 + private final Expression first;
1.15 + private final Expression second;
1.16 +
1.17 + public Plus(Expression first, Expression second) {
1.18 + this.first = first;
1.19 + this.second = second;
1.20 + }
1.21 + public Expression getFirst() { return first; }
1.22 + public Expression getSecond() { return second; }
1.23 + @Override
1.24 + public void visit(Visitor v) { v.visitPlus(this); }
1.25 + }
1.26 + public static final class Number extends Expression {
1.27 + private final int value;
1.28 + public Number(int value) { this.value = value; }
1.29 + public int getValue() { return value; }
1.30 + @Override
1.31 + public void visit(Visitor v) { v.visitNumber(this); }
1.32 + }
1.33 +
1.34 + public interface Visitor {
1.35 + public void visitUnknown(Expression e);
1.36 + public void visitPlus(Plus s);
1.37 + public void visitNumber(Number n);
1.38 + }
1.39 +}