samples/visitor/11-cleanversion/src-api1.0/org/apidesign/visitor/Language.java
changeset 169 3be14291c9f8
child 170 206cdfeefeec
     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 +}